Mercurial > hg > Papers > 2011 > nobu-prosym
view presen/index.html~ @ 65:baace77d7d30
add some pix files
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 29 Dec 2011 00:39:01 +0900 |
parents | a967ee5a0b0f |
children | 923dd8de7be2 |
line wrap: on
line source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style> .center { margin-left: auto; margin-right: auto; text-align: center; } .textcenter { text-align: center; } .taninaritop { margin: auto; width: 95%; font-weight: bold; } </style> <title>2011/12/20</title> <!-- metadata --> <meta name="generator" content="S5" /> <meta name="version" content="S5 1.1" /> <meta name="presdate" content="20111220" /> <meta name="author" content="Nobuyasu Oshiro" /> <meta name="company" content="University of the Ryukyu" /> <!-- meta temporary --> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <!-- configuration parameters --> <meta name="defaultView" content="slideshow" /> <meta name="controlVis" content="hidden" /> <!-- configuration extensions --> <meta name="tranSitions" content="true" /> <meta name="fadeDuration" content="500" /> <meta name="incrDuration" content="250" /> <!-- configuration autoplay extension --> <meta name="autoMatic" content="false" /> <meta name="playLoop" content="true" /> <meta name="playDelay" content="10" /> <!-- configuration audio extension --> <meta name="audioSupport" content="false" /> <meta name="audioVolume" content="100" /> <meta name="audioError" content="false" /> <!-- configuration audio debug --> <meta name="audioDebug" content="false" /> <!-- style sheet links --> <link rel="stylesheet" href="ui/default_utf/slides.css" type="text/css" media="projection" id="slideProj" /> <link rel="stylesheet" href="ui/default_utf/outline.css" type="text/css" media="screen" id="outlineStyle" /> <link rel="stylesheet" href="ui/default_utf/print.css" type="text/css" media="print" id="slidePrint" /> <link rel="stylesheet" href="ui/default_utf/opera.css" type="text/css" media="projection" id="operaFix" /> <!-- embedded styles --> <style type="text/css" media="all"> .imgcon {width: 100%; margin: 0 auto; padding: 0; text-align: center;} #anim {width: 33%; height: 320px; position: relative;} #anim img {position: absolute; top: 0px; left: 0px;} </style> <!-- S5 JS --> <script src="ui/default_utf/slides.js" type="text/javascript"></script> </head> <body> <div class="layout"> <div id="controls"><!-- DO NOT EDIT --></div> <div id="currentSlide"><!-- DO NOT EDIT --></div> <div id="header"></div> <div id="footer"> <h1>セミナー: 2011/ 12/ 20</h1> <h2>並列信頼研</h2> </div> </div> <div class="presentation"> <div class="slide"> <h1>Continuation based Cの GCC 4.6 上の実装について</li> <h3></h3> <li>大城 信康</li> <h4><a href="http://ie.u-ryukyu.ac.jp/" rel="external">琉球大学 並列信頼研究室</a></h4> <div class="handout"></div> </div> <!-- PAGE --> <div class="slide"> <h1>目的と背景(1)</h1> <li>当研究室ではコードセグメント単位で記述するプログラミング言語Continuation based C (以下CbC)という言語を開発している。</li> <li>コードセグメントは並列実行の単位として使うことができ、プログラムの正しさを示す単位としても使用することができる。</li> </div> <!-- PAGE --> <div class="slide"> <h1>目的と背景(2)</h1> <li>CbC のコンパイラは2008年に GCC をベースとしたコンパイラが開発された。</li> <li>GCC をベースとした CbC コンパイラは、GCC のアップデートに合わせ変更する必要がある。</li> <li>本研究ではGCC-4.5 をベースとしていた CbC コンパイラを GCC-4.6 へのアップデートを行い、Intel64 への対応するとともに CbC の拡張を行う。 </li> </div> <!-- PAGE --> <div class="slide"> <h1>今週の作業内容</h1> <li></li> <li>環境付き継続について</li> <ul> <li>変数 retval を static スレッドローカル(TLS)での実装</li> </ul> </div> <!-- PAGE --> <div class="slide"> <h1>static TLS のGeneric Tree</h1> <li>変数 retval の宣言(VAR_DECL)</li> <li>static TLS の場合追加される情報は以下の2つ:(Linux)</li> <ul> <li>TLS のモデル: TLS_MODEL_LOCAL_EXEC</li> <li>static フラグ 1</li> </ul> <li class="incremental">上記の設定で retval を作成しても正しい返り値は得られなかった。</li> </div> <!-- PAGE --> <div class="slide"> <h1>環境付き継続の構文木をみる</h1> <li>環境継続において以下の retval 変数は static で作られている.</li> <small> <pre> ({ __label__ _cbc_exit0; static __thread int retval; void _cbc_internal_return(int retval_, void *_envp){ printf("in _cbc_internal_return\n",retval_); retval = retval_; goto _cbc_exit0; } if (0) { _cbc_exit0: return retval; } _cbc_internal_return; }) </pre> </small> </div> <!-- PAGE --> <div class="slide"> <h1>環境付き継続の構文木をみる</h1> <img src="./pix/BIND_EXPR.png"> <li>BIND_EXPR は{ } の中身を束ねる。</li> <li>STATEMENT_LIST が1つ1つのプログラムを表す木を持っている。</li> </div> <!-- PAGE --> <div class="slide"> <h1>環境付き継続の構文木をみる</h1> <img src="./pix/STATEMENT_LIST_1.png"> <li>BIND_EXPR は _cbc_internal_return 関数を<br> ADDR_EXPR は最後の行の _cbc_internal_return を表す。</li> </div> <!-- PAGE --> <div class="slide"> <h1>環境付き継続の構文木をみる</h1> <li>_CbC_return の実装より作られる構文木を見てみる。</li> <scale> <img src="./pix/STATEMENT_LIST_2.png"> </scale> </div> <!-- PAGE --> <div class="slide"> <h1>環境付き継続の構文木をみる</h1> <li>出来上がる構文木が違う。</li> <ul> <li>DECL_EXPR が 1つ足りない</il> <li>BIND_EXPR の部分が COND_EXPR になっている。</li> </ul> </div> <!-- PAGE --> <div class="slide"> <h1>DECL_EXPR の問題</h1> <li>なくなっている DECL_EXPR は VAR_DECL の部分。</li> <li>static __thread int retval になる。</li> <li>下記の様にソースを変更</li> <pre> // pushdecl (decl_cond); add_stmt (build_stmt(location, DECL_EXPR, pushdecl (decl_cond))); </pre> <li>これで DECL_EXPR が追加された。</li> </div> <!-- PAGE --> <div class="slide"> <h1>COND_EXPR の問題</h1> <li>BIND_EXPR でなくて COND_EXPR になっていた問題。</li> <li>BIND_EXPR をみると以下の様な構成になっていた。</li> <img src="./pix/COND_EXPR.png"> <li>BIND_EXPR をなぜか COND_EXPR でもう一度包んでいた。</li> <small> <p>COND_EXPR には if(0){ } の中身が入る。</p> </small> </div> <!-- PAGE --> <div class="slide"> <h1>ソースの手直し</h1> <li>if(0){ } の構文木が作られる手順を元に<br> cbc_finish_labeled_goto 関数を手直しした。 <li>同じ構文木が作られるようになった。</li> </div> <!-- PAGE --> <div class="slide"> <h1>結果</h1> <li>正常な値が返ってくるようになった。</li> <li class="incremental">しかし、-O2 オプションをつけると返り値の取得が失敗した。</li> <li class="incremental">もっと細かく構文木をみて違いを見つける必要がある。</li> </div> <!-- PAGE --> <!-- <div class="slide"> <h1>static TLS のGeneric Tree</h1> <li>変数 retval の宣言(VAR_DECL) が OS X の場合使用する TLS モデルが違った。</li> <li>Linux: TLS_MODEL_LOCAL_EXEC</li> <li>OS X: TLS_MODEL_REAL<br>(TLS_MODEL_GLOBAL_DYNAMIC)</li> </div> <!-- PAGE --> <div class="slide"> <h1>今後の予定</h1> <li>プロシン用プレゼンの用意</li> <li>typedefrec, selftype の実装</li> <li>CbC でタクスマネージャ作成</li> </div> <!-- PAGE --> </div> </body> </html>