Mercurial > hg > Members > yuuhi > slide
changeset 5:220243d8ef68
cs/ds
author | Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 18 Oct 2014 11:51:53 +0900 |
parents | f23d647ae3fa |
children | 8b6d326c1402 |
files | s6/blank.css.less s6/blank.html |
diffstat | 2 files changed, 120 insertions(+), 88 deletions(-) [+] |
line wrap: on
line diff
--- 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}
--- 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 @@ -<!DOCTYPE html> +\<!DOCTYPE html> <html> <head> <meta charset='utf-8'> @@ -88,7 +88,7 @@ <table width="90%" height="90%" border="0" align="center"> <tr> <td><div align="center"> - <h1><font color="#808db5">CeriumにおけるGPGPUの最適化</font></h1> + <h1><font color="#808db5">Ceriumの再設計</font></h1> </div></td> </tr> <tr> @@ -114,107 +114,137 @@ <div class='slide'> <h2>研究目的</h2> - <p> - 当研究室ではCellおよびLinux、 - Mac OSX上で動く並列プログラミングフレームワーク、 - Ceriumの開発・改良を行っている。 - </p> - <p>本研究では新たにGPU上での並列実行に対応し、 - ヘテロジニアス(異種混合)環境下でのプログラミングをサポートする - </p> - <p> - GPGPUでは通常のマルチコア<font color="red">CPUとは異なる並列プログラミング</font> - と<font color="red">特別なチューニング</font>が必要となる。 - そこでCeriumを用いてその差を吸収し、自動的なチューニングを可能にする。 - </p> - </div> - - <div class='slide'> - <h2>進捗</h2> <ul> - <li><dt>CPU固定でthreadを生成するAPI</dt></li> - <li><dt>glibcの環境構築</dt> - <dd>実はまだgcc...</dd></li> - </ul> - </div> - - <div class='slide'> - <h2>CPU固定でthreadを生成するAPI(Linux)</h2> - <pre class="code"> -int sched_setaffinity(pid_t pid, - size_t cpusetsize, const cpu_set_t *mask); - </pre> - - <ul> - <li><dt>affinity(親和度、cpu_set_t)は、そのスレッドが実行を許可されているCPUの集合を決定する - <dd>maskにCPUをsetするときは、CPU_SETを使用する(例:CPU_SET(cpu_id,&mask)</dd></dt></li> - <li><dt>スレッドのaffinityマスクを一つのCPUに設定し、スレッドをCPUに括りつけることができる(Man page)</dt></li> + <li>当研究室ではCS/DSを使用したプログラミングを行っている</li> + <dd>CS/DSについて</dd> + <li>CS/DSベースのフレームワーク(?)の開発</li> + <dd>もっと大きい何かなのでは……?</dd> + <li>独自のMemory Managementの機構を持つ</li> + <li>Cerium・Alice・jungleで得られた知見を……</li> + <li>なぜ新しく設計し直す必要がある?</li> + <li>名前も考える必要がある?</li> </ul> </div> <div class='slide'> - <h2>sched_setaffinity Sample</h2> - <pre class="code"> -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) -}</pre> - <p>sarコマンドで確認できるらしい……</p> - こんな感じ - <pre> -% 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 - </pre> + <h2>Code/Data Segment Systemの構造</h2> + <img src="images/new_cerium.png" width="800"> + <p>全てはDSとして扱われる。CSもDSの一種。</p> + <p>TaskもDSで、CSとDSの組になっている。</p> </div> <div class='slide'> - <h2>CPU固定でthreadを生成するAPI(OSX)</h2> - <p>apple developerのKernel Programming Guide</p> + <h2>Temporary/Persistent Space</h2> + <table> + <tr> + <th><img src="images/ts_ps.png" width="400"></th> + <th> + <dl align="left"> + <dl align="left"> + <dt>Temporary Space, Persistent Space</dt> + <dd><li>DSはTemporary SpaceかPersistent Spaceに属する</dd> + <dd><li>Temporary Spaceはポインタでアクセス。</li> + <li>Persistent SpaceはURLでアクセス。つまり、名前を持つ。<br> + (Persistent Space に書き込む = DBに登録する)</dd> + </dl> + </dl> + </th> + </tr> + </table> + <dt>Task</dt> + <dd><li>Input DS, Output DS</li></dd> + <dd><li>Input DSが全て揃った時点で実行される。そろったかどうかはTaskが持つ。</dd> + <dd><li>DSには持ってるTaskへのポインタが必要(Cerium、Aliceと同じ)</dd> + <dd><li>接続って具体的にどうやる?Ceriumで言うcreateTaskに相当する?</dd> + </div> + + + <div class='slide'> + <h2>Persistent DS</h2> + <p> + Persitent DSはkey(URL)を持つ。keyを持ってるので、書き込みは + <pre class="code"> + goto write(ds);</pre> + でよい。DS自体がURLを持っているので、goto write(ds, key);とかしなくて良い。 + </p> + <p> + ? ds->nextは即座に実行される。ds->nextがなければ、そこで計算は終了。 + </p> + <p> + 読み込みは、 + <pre class="code"> + goto read(ds);</pre> + すれば良いだけだが、ds->nextに次に行う演算が入っている。 + </p> + </div> + + + + <div class='slide'> + <h2>Meta Space, Core Space</h2> + <table> + <tr> + <th><img src="images/meta_space.png" width="400"></th> + <th align="left"> + <p>Meta SpeceにはTaskのScheduleを行うScheduler、 + DSの管理を行うDS Manager、Taskの生成を行うTaskManager(Ceriumと同等の機能)がある。 + </p> + </th> + </tr> + + <tr> + <th><img src="images/core_space.png" width="400"></th> + <th align="left"> + <p>CoreSpaceにはCS間の遷移を行うDispatcher、同期制御を行うsynchronizer、 + Memory Spaceの制御を行うSegment Manager(OSやOpenCLにもある)がある。 + Segment ManagerはMemory間のコピーも行う + </p> + <p> + このDispatcher、Segment Manager辺りを担当することになる? + </p> + </th> + </tr> + + </table> </div> <div class='slide'> - <h2>glibc 環境構築</h2> - <p>install</p> - <pre class="code"> -$ mkdir build;cd build -$ ../configure --prefix=/home/hiyoko/glibc-2.19/build/bin -$ make <font color="red">--debug</font> -j -$ make install</pre> - <p>compile</p> - <pre class="code"> -$ g++ -Wall -g -O0 -c malloc_sample.cc -o malloc_sample.o -$ g++ -o malloc_sample malloc_sample.o -g <font color="red">-static</font> - -I../glibc-2.19/build/bin/include - -L../glibc-2.19/build/bin/lib</pre> + <h2>Memory Manager</h2> + <table> + <tr> + <th><img src="images/memory_manager.png" width="500"></th> + <th align="left"> + <p> + DataSegmentは2^n allocatorで配分される。それらは</p> + <ul> + <li>Physical Memory</li> + <li>Cache Memory</li> + <li>Parsistent Memory(Disk or Flash)</li> + </ul> + <p> + にMappingされる。 + </p> + <p> + Persistent Space はDSの非破壊なBlanced Binary Treeにより構成される(jungle) + </p> + </th> + </tr> + + </table> </div> + + <div class='slide'> - <h2>Todo</h2> + <h2>とりあえず取り掛かれること</h2> + <p>ここらへん?</p> <ul> - <li><dt>調べたAPIの例題の作成</dt></li> - <li><dt>malloc読み終わる</dt></li> - <li><dt>Cyber Agentインターンシップの告知</dt> - <dd>2016年度新卒、インターンシップ面接(?)免除</dd></li> + <li>Segment Manager(Memory Allocator) + <li>Data SegmentのNon Destructive Tree + <li>TaskManager(Ceriumと同等の機能) </ul> - </div> - </div> - + </div> + </div> <!-- presentation --> </body> </html>