# HG changeset patch # User Yuhi TOMARI # Date 1413600713 -32400 # Node ID 220243d8ef68a2f47c1aca78b927a94380c855ff # Parent f23d647ae3fa7c6c17e1427354c28825327fab5f cs/ds diff -r f23d647ae3fa -r 220243d8ef68 s6/blank.css.less --- a/s6/blank.css.less Tue Aug 12 17:11:48 2014 +0900 +++ b/s6/blank.css.less Sat Oct 18 11:51:53 2014 +0900 @@ -24,6 +24,7 @@ @font-size-h2: 200%; // 28pt / 37px @font-size-h3: 150%; // 24pt / 32px @font-size-text: 130%; // 18pt / 24px +@font-size-list: 120%; @font-size-code: 150%; // 16pt / 22px @font-small-size: 100%; @@ -70,7 +71,8 @@ ul { list-style-type: square; } -p, li, dt, dd, td{ font-size: @font-size-text; } +p { font-size: @font-size-text; } +li, dt, dd, td{ font-size: @font-size-list; } th { font-size: @font-small-size; font-weight:normal; align:left} diff -r f23d647ae3fa -r 220243d8ef68 s6/blank.html --- a/s6/blank.html Tue Aug 12 17:11:48 2014 +0900 +++ b/s6/blank.html Sat Oct 18 11:51:53 2014 +0900 @@ -1,4 +1,4 @@ - +\ @@ -88,7 +88,7 @@ @@ -114,107 +114,137 @@

研究目的

-

- 当研究室ではCellおよびLinux、 - Mac OSX上で動く並列プログラミングフレームワーク、 - Ceriumの開発・改良を行っている。 -

-

本研究では新たにGPU上での並列実行に対応し、 - ヘテロジニアス(異種混合)環境下でのプログラミングをサポートする -

-

- GPGPUでは通常のマルチコアCPUとは異なる並列プログラミング - と特別なチューニングが必要となる。 - そこでCeriumを用いてその差を吸収し、自動的なチューニングを可能にする。 -

-
- -
-

進捗

-
- -
-

CPU固定でthreadを生成するAPI(Linux)

-
-int sched_setaffinity(pid_t pid,
-    size_t cpusetsize, const cpu_set_t *mask);
-        
- -
-

sched_setaffinity Sample

-
-void
-bind_cpu()
-{
-    cpu_set_t mask;
-    __CPU_ZERO(&mask);
-
-    char *p = getenv("BIND_CPU_ID");
-    int cpu_id = atoi(p);
-    __CPU_SET(cpu_id, &mask);
-    sched_setaffinity(0, sizeof(mask), &mask)
-}
-

sarコマンドで確認できるらしい……

- こんな感じ -
-% sar -P ALL 1 1000
-
-17:51:28          CPU     %user     %nice   %system   %iowait    %steal     %idle
-17:51:29          all     50.00      0.00      0.00      0.00      0.00     50.00
-17:51:29            0      0.00      0.00      0.00      0.00      0.00    100.00
-17:51:29            1    100.00      0.00      0.00      0.00      0.00      0.00
-
-17:51:29          CPU     %user     %nice   %system   %iowait    %steal     %idle
-17:51:30          all     50.25      0.00      0.00      0.00      0.00     49.75
-17:51:30            0      0.00      0.00      0.00      0.00      0.00    100.00
-17:51:30            1    100.00      0.00      0.00      0.00      0.00      0.00
-          
+

Code/Data Segment Systemの構造

+ +

全てはDSとして扱われる。CSもDSの一種。

+

TaskもDSで、CSとDSの組になっている。

-

CPU固定でthreadを生成するAPI(OSX)

-

apple developerのKernel Programming Guide

+

Temporary/Persistent Space

+
-

CeriumにおけるGPGPUの最適化

+

Ceriumの再設計

+ + + + +
+
+
+
Temporary Space, Persistent Space
+
  • DSはTemporary SpaceかPersistent Spaceに属する
  • +
  • Temporary Spaceはポインタでアクセス。
  • +
  • Persistent SpaceはURLでアクセス。つまり、名前を持つ。
    + (Persistent Space に書き込む = DBに登録する)
  • +
    +
    +
    +
    Task
    +
  • Input DS, Output DS
  • +
  • Input DSが全て揃った時点で実行される。そろったかどうかはTaskが持つ。
  • +
  • DSには持ってるTaskへのポインタが必要(Cerium、Aliceと同じ)
  • +
  • 接続って具体的にどうやる?Ceriumで言うcreateTaskに相当する?
  • + + + +
    +

    Persistent DS

    +

    + Persitent DSはkey(URL)を持つ。keyを持ってるので、書き込みは +

    +            goto write(ds);
    + でよい。DS自体がURLを持っているので、goto write(ds, key);とかしなくて良い。 +

    +

    + ? ds->nextは即座に実行される。ds->nextがなければ、そこで計算は終了。 +

    +

    + 読み込みは、 +

    +          goto read(ds);
    + すれば良いだけだが、ds->nextに次に行う演算が入っている。 +

    +
    + + + +
    +

    Meta Space, Core Space

    + + + + + + + + + + + +
    +

    Meta SpeceにはTaskのScheduleを行うScheduler、 + DSの管理を行うDS Manager、Taskの生成を行うTaskManager(Ceriumと同等の機能)がある。 +

    +
    +

    CoreSpaceにはCS間の遷移を行うDispatcher、同期制御を行うsynchronizer、 + Memory Spaceの制御を行うSegment Manager(OSやOpenCLにもある)がある。 + Segment ManagerはMemory間のコピーも行う +

    +

    + このDispatcher、Segment Manager辺りを担当することになる? +

    +
    -

    glibc 環境構築

    -

    install

    -
    -$ mkdir build;cd build
    -$ ../configure --prefix=/home/hiyoko/glibc-2.19/build/bin
    -$ make --debug -j
    -$ make install
    -

    compile

    -
    -$ g++  -Wall -g -O0   -c malloc_sample.cc -o malloc_sample.o
    -$ g++  -o malloc_sample malloc_sample.o  -g -static
    -       -I../glibc-2.19/build/bin/include
    -       -L../glibc-2.19/build/bin/lib
    +

    Memory Manager

    + + + + + + +
    +

    + DataSegmentは2^n allocatorで配分される。それらは

    +
      +
    • Physical Memory
    • +
    • Cache Memory
    • +
    • Parsistent Memory(Disk or Flash)
    • +
    +

    + にMappingされる。 +

    +

    + Persistent Space はDSの非破壊なBlanced Binary Treeにより構成される(jungle) +

    +
    + +
    -

    Todo

    +

    とりあえず取り掛かれること

    +

    ここらへん?

    -
    - - + +