view s6/blank.html @ 16:642a7f5a5bad default tip

add new task...
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Sat, 22 Nov 2014 15:42:19 +0900
parents 9683e2b1bbe7
children
line wrap: on
line source

<!DOCTYPE html>
<html>
  <head>
    <meta charset='utf-8'>
    <title>Seminar</title>

    <!-- 
         Notes on CSS media types used:
         
         1) projection -> slideshow mode (display one slide at-a-time; hide all others)
         2) screen     -> outline mode (display all slides-at-once on screen) 
         3) print      -> print (and print preview)
         
         Note: toggle between projection/screen (that is, slideshow/outline) mode using t-key

         Questions, comments?
         - send them along to the mailinglist/forum online @ http://groups.google.com/group/webslideshow    
      -->

    <!-- style sheet links -->
    <link rel="stylesheet/less" href="themes/blank/projection.css.less"  media="screen,projection">
    <link rel="stylesheet/less" href="themes/blank/screen.css.less"      media="screen">
    <link rel="stylesheet/less" href="themes/blank/print.css.less"       media="print">

    <link rel="stylesheet/less" href="blank.css.less"    media="screen,projection">

    <!-- Notes about less css support
         - all less stylesheets (*.css.less) need to get listed/loaded first (before the less.js script)
         - find more info about less.js online @ http://lesscss.org

         ***** NOTE:
         less.js browser script currently won’t work if you’re using Google Chrome
         and the path to your page starts with "file:///" due to a known Chrome issue.
         (In the developer/js console you will see:
         XMLHttpRequest cannot load file:///../s6/shared/projection.css.less.
         Cross origin requests are only supported for HTTP.)
      -->

    <!-- add js libs (less, jquery) -->
    <script src="js/less-1.1.4.min.js"></script>
    <script src="js/jquery-1.7.min.js"></script>

    <!-- S6 JS -->
    <script src="js/jquery.slideshow.js"></script>
    <script src="js/jquery.slideshow.counter.js"></script>
    <script src="js/jquery.slideshow.controls.js"></script>
    <script src="js/jquery.slideshow.footer.js"></script>
    <script src="js/jquery.slideshow.autoplay.js"></script>
    <script>
      $(document).ready( function() {
      Slideshow.init();
      
      // Example 2: Start Off in Outline Mode
      // Slideshow.init( { mode: 'outline' } );
      
      // Example 3: Use Custom Transition
      // Slideshow.transition = transitionScrollUp;
      // Slideshow.init();

      // Example 4: Start Off in Autoplay Mode with Custom Transition
      // Slideshow.transition = transitionScrollUp;
      // Slideshow.init( { mode: 'autoplay' } );
      } );
    </script>

    <!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
    <!--[if IE]>
        <script src="js/jquery.microsoft.js"></script>
        <![endif]-->

  </head>
  <body>

    <div class="layout">
      <div id="header"></div>
      <div id="footer">
        <div align="right">
          <img src="images/concurrency.png" width="200">
        </div>
      </div>
    </div>

    <div class="presentation">

      <!-- add slides here; example -->
      
      <div class='slide cover'>
        <table width="90%" height="90%" border="0" align="center">
          <tr>
            <td><div align="center">
                <h1><font color="#808db5">Ceriumの再設計</font></h1>
            </div></td>
          </tr>
          <tr>
            <td><div align="left">
                Yuhi TOMARI
                <script>
                  var date = new Date();
                  var year = date.getFullYear();
                  var month = date.getMonth();
                  var day = date.getDate();
                  
                  var monthList = new Array("January","February","March","April","May","June",
                  "July","August","September","October","November","December");
                  
                  document.write(monthList[month]+" "+day+", "+year);
                  
                </script>
                <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:300%;height:0.2em;">
            </div></td>
          </tr>
        </table>
      </div>
      
      <div class='slide'>
        <h2>研究目的</h2>
        <ul>
          <li>当研究室ではCS/DSを使用したプログラミングを行っている</li>
          <dd>CS/DSについて
            <br>プログラムをCode Segment/Data Segmentという単位に分けて書くという手法を提案している
            <br>Code Segment:処理の単位(実行単位)
            <br>Data Segment:データ構造</dd>
          
          <li>CS/DSベースのプログラミングモデルの開発</li>
          <dd>CS/DSを用いた手法でプログラミングを行う言語、Continuation Based Cを用いて開発を行う</dd>
          <li>独自のMemory Managementの機構を持つ</li>
          <li>Cerium、Alice、Jungleで得られた知見を……</li>
          <li>名前も考える必要がある?(システム自体の名前と、CS/DSの名前)</li>
        </ul>
        <p>ただこれCerium再実装の話なので、使わないかも</p>
      </div>

      <div class='slide'>
        <h2>進捗</h2>
        <ul>
          <li><dt>CPU固定でthreadを生成するAPI</dt>
            <dd>OSXで無理っぽい->(できるのでは->無理っぽい)x2</dd>
            <dd>とりあえずLinuxで例題の作成</dd>
          </li>
          
          <li>
            <dt>LinuxでCeriumが動くかどうか</dt>
          </li>
          
          <li>
            <dt>計測用のツール</dt>
          </li>
        </ul>
      </div>

      <div class='slide'>
        <h2>Affinityを設定する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><dt>pidでaffinityをsetするthreadを指定するのだが、pid=0にすると呼び出し元のthreadにsetしてくれる</dt></li>
        </ul>
      </div>

      <div class='slide'>
        <h2>sched_setaffinity Sample</h2>
        <pre class="code">
          void set_cpu(int cpu_id) {
              cpu_set_t mask;
              CPU_ZERO(&mask);
              CPU_SET(cpu_id, &mask);

              if (sched_setaffinity(0, sizeof(mask), &mask) == -1) {
                  printf("Failed to set CPU affinity. \n");
                  return;
              }
              printf("Succeed to set CPU %d\n",cpu_id);
              return;
          }</pre>
        <p>
          どうやって本当に割り当てられてるか調べるか。taskset? sar?
        </p>
        
      </div>

      <div class='slide'>
        <h2>Google Performance Tools</h2>
        <ul>
          <li><dt><font color="red">CPU Profiler:サンプリングによって各関数の実行時間を計測・表示する</font></dt></li>
          <li><dt><font color="red">HeapProfiler:各関数におけるメモリ使用量を計測・表示する</font></dt></li>
          <li><dt><font color="red">TCMalloc:Googleの開発した高速malloc</font></dt></li>
          <li><dt>HeapChecker:メモリリークを検出する</dt></li>
        </ul>
        <p>Heap Profilerを使うには、TCMallocを使わないといけないらしい。</p>
        <p>結果としては、微妙…</p>
        <p>もう少し使い方を調べたら使い物になるかも</p>
      </div>


      <div class='slide'>
        <h2>CPU Profiler and Heap Profiler</h2>
        
        <p>example:word_count</p>
        <pre class="code">
Heap Profile
Total: 6653 objects
    2921  43.9%  43.9%     2921  43.9% 0x00007fff8e01b98d ?
     599   9.0%  52.9%      599   9.0% _class_createInstance ?
     404   6.1%  59.0%      404   6.1% 0x00007fff8e01bdfd ?
     365   5.5%  64.5%      365   5.5% 0x00007fff8e01bed6 ?
     360   5.4%  69.9%      360   5.4% 0x00007fff8a49730b ?
     249   3.7%  73.6%      249   3.7% 0x00007fff8e02b952 ?
     153   2.3%  75.9%      156   2.3% _cache_create ?
     109   1.6%  77.6%      109   1.6% _xpc_get_type ?
     100   1.5%  79.1%      100   1.5% 0x00007fff8a49728d ?
      92   1.4%  80.4%      133   2.0% __Block_copy ?</pre>
        <pre class="code">
 CPU Profile
Total: 11 samples
       7  63.6%  63.6%        7  63.6% ___psynch_cvwait
       2  18.2%  81.8%        2  18.2% _semaphore_wait_trap
       1   9.1%  90.9%        1   9.1% 0x00007fff6773c709
       1   9.1% 100.0%        1   9.1% _write$NOCANCEL
       0   0.0% 100.0%        1   9.1% 0x0000000108d51196
       0   0.0% 100.0%        1   9.1% 0x0000000108d5144b
       0   0.0% 100.0%        1   9.1% 0x0000000108d530fa
       0   0.0% 100.0%        7  63.6% 0x0000000108d53113
       0   0.0% 100.0%        7  63.6% 0x0000000108d552cf
       0   0.0% 100.0%        7  63.6% 0x0000000108d55d38</pre>
      </div>

      <div class='slide'>
        <h2>Todo</h2>
        <ul>
          <li><dt>例題(fft,word_count,sort)の見直し</dt></li>
          <li><dt>SchedTaskをQueueInfoに</dt></li>
          <li><dt>sched_setaffinityをCeriumに実装</dt></li>
          <li><dt>Memory Allocatorの設計と実装</dt></li>
        </ul>
      </div>


      
    </div> <!-- presentation -->
  </body>
</html>