Mercurial > hg > Papers > 2014 > masakoha-thesis > final
view slide/index.html @ 15:9b071b32e3de
add some files and write slide
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 29 Jan 2014 16:12:51 +0900 |
parents | 0e7c972b5ca1 |
children | 56cd6800acb5 |
line wrap: on
line source
<!DOCTYPE html> <html> <head> <title>Presentation</title> <meta charset='utf-8'> <script src='./slides.js'></script> </head> <style> /* Your individual styles here, or just use inline styles if that’s what you want. */ </style> <body style='display: none'> <section class='slides layout-regular template-default'> <!-- Your slides (<article>s) go here. Delete or comment out the slides below. --> <article > <h1>Cerium による並列処理向け I/O の設計と実装</h1> <h3 class="title">Masataka Kohagura 12th, February</h3> <div align="right">担当教官 : 河野 真治</div> </article> <article > <h3>研究背景と目的</h3> <p> 近年のCPUのほとんどはマルチコアであり、それらの性能を引き出すためには並列プログラミングが必須となっている。そこで当研究室では Cerium Library の開発を行い、提供することによって並列プログラミングを容易にしている。 </p> <p> 先行研究では Task の並列化によって、プログラム全体の処理速度は向上しているが、ファイル読み込み等の I/O に対して並列に Task が動作するようにはされていない。 </p> <p> 本研究では I/O と Task の並列化の設計、実装によってプログラム全体の処理速度、処理効率を上げていく。 </p> </article> <article> <h3>Cerium の流れ</h3> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td><img src='images/cerium.png' style="height:350px"></td> <td> <ol> <li>Taskを生成</li> <li>依存関係のチェック</li> <li>Schedulerに転送</li> <li>並列実行</li> </ol> </td> </tr> </tbody> </table> </article> <article> <h3>Cerium Task の生成(1)</h3> <br> <h3 class="yellow">main.cc の記述</h3> <pre> // Task の宣言 HTaskPtr multiply = manager->create_task(MULTIPLY_TASK); // Task を実行する デバイスの設定 multiply->set_cpu(SPE_ANY); // Task に入力データのアドレスを追加 multiply->set_inData(0, i_data1, sizeof(float)*length); multiply->set_inData(1, i_data2, sizeof(float)*length); // Task に出力データのアドレスを追加 multiply->set_outData(0, o_data1, sizeof(float)*length); // Task へ値を1つだけ渡す multiply->set_param(0,(long)length); // Task を TaskList に set する multiply->spawn(); </pre> </article> <article> <h3>Cerium Task の生成(2)</h3> <br> <h3 class="yellow">Task の記述</h3> <pre> static int multiply(SchedTask *s,void *rbuf, void *wbuf) { // 登録した inData を取得 float indata1=(float*)s->get_input(rbuf,0); float indata2=(float*)s->get_input(rbuf,1); // 登録した outData を取得 float outdata=(float*)s->get_output(wbuf,0); // 登録した param を取得 long length=(long)s->get_param(0); for (int i=0;i < length;i++) { outdata[i]=indata1[i]*indata2[i]; } return 0; } </pre> </article> <article> <h3>並列処理向け I/O の 設計と実装</h3> <br> <ul> <li>mmap の仕様</li> <li>divide read の実装</li> <li>Cerium の改良(IO_0 の追加)</li> </ul> </article> <article> <h3>mmap での I/O の実装</h3> <br> </article> <article> <h3>mmap の仕様</h3> <br> </article> </body> </html>