view 2013/Oct-2013/8th.html @ 9:e4748bca1eb3

mkdir 2013
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Tue, 14 Jan 2014 04:18:59 +0900
parents Oct-2013/8th.html@c9b2998eb516
children
line wrap: on
line source

<!DOCTYPE html>

<!--
  Google HTML5 slide template

  Authors: Luke Mahé (code)
           Marcin Wichary (code and design)
           
           Dominic Mazzoni (browser compatibility)
           Charles Chen (ChromeVox support)

  URL: http://code.google.com/p/html5slides/
-->

<html>
  <head>
    <title>2013-10-08</title>

    <meta charset='utf-8'>
    <script
      src='http://html5slides.googlecode.com/svn/trunk/slides.js'></script>
  </head>
  
  <style>
    /* Your individual styles here, or just use inline styles if that’s
       what you want. */
  .slides article { background-image: none !important; background-color: white; }
    
    
  </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による
          <br>
          正規表現の実装
        </h1>
        <p>
          Masataka Kohagura
          <br>
          8th October , 2013
        </p>
      </article>
      
      <article>
        <h3>
        研究目的
        </h3>
        <p>
        本研究室では、Cell用に作られたCeriumにて並列プログラミングを行なっている。Ceriumにて正規表現を実装し、既存の正規表現との処理速度、処理効率がどれだけ良くなるのかを測定する。
        </p>
        <p>
        現在は文字列サーチ(Boyer-Moore String Search Algorithm)を実装している。
        セミグループという、分割したファイルに対して並列処理をさせるような手法によって、効率化を測る。
        </p>
      </article>

      <article>
        <h3>
        今週のしたこと
        </h3>
        <p>
        mmapからfreadに変更していたものを、readに変更。
        </p>
        <p>
        ・シンヤさんのRegenを動かしてみた
        </p>
        <p>
        ・シンヤさんの論文「並列化と実行時コード生成を用いた正規表現マッチングの高速化」読み
        </p>
      </article>

      <article class='smaller'>
      <h3>mmapからfreadへの書き換え(1)</h3>
      <p>変更前</p>
      <section><pre>
static st_mmap_t
my_mmap(char *filename)
{
    int fd = -1; 
    int map = MAP_PRIVATE;
    st_mmap_t st_mmap;
    struct stat sb; 

    if ((fd=open(filename,O_RDONLY,0666))==0) {
        fprintf(stderr,"can't open %s\n",filename);
    }   

    if (fstat(fd,&sb)) {
        fprintf(stderr,"can't fstat %s\n",filename);
    }   

    st_mmap.size = fix_byte(sb.st_size,4096);

    st_mmap.file_mmap = (char*)mmap(NULL,st_mmap.size,PROT_READ,map,fd,(off_t)0);    if (st_mmap.file_mmap == (caddr_t)-1) {
        fprintf(stderr,"Can't mmap file\n");
        perror(NULL);
        exit(0);
    }       
    return st_mmap;
}
      </pre></section>
      </article>

      <article class='smaller'>
      <h3>mmapからfreadへの書き換え(2)</h3>
      <p>変更後</p>
      <section><pre>
my_read(TaskManager *manager,char *filename)
{
    int fd = -1;
    st_mmap_t st_mmap;
    struct stat sb;

    if ((fd=open(filename,O_RDONLY,0666))==0) {
        fprintf(stderr,"can't open %s\n",filename);
    }

    if (fstat(fd,&sb)) {
        fprintf(stderr,"can't fstat %s\n",filename);
    }

    st_mmap.size = fix_byte(sb.st_size,4096);
    <font color="red">st_mmap.file_mmap = (char*)manager->allocate(st_mmap.size);</font>

    <font color="red">sread(fd,st_mmap.file_mmap,st_mmap.size);</font>

    if (st_mmap.file_mmap == (caddr_t)-1) {
        fprintf(stderr,"Can't mmap file\n");
        perror(NULL);
        exit(0);
    }
    return st_mmap;
}
</pre></section>
      </article>

      <article class='smaller'>
      <h3>mmapからreadへの書き換え(2)</h3>
      <p>変更後</p>
      <section><pre>
my_read(TaskManager *manager,char *filename)
{
    int fd = -1;
    st_mmap_t st_mmap;
    struct stat sb;

    if ((fd=open(filename,O_RDONLY,0666))==0) {
        fprintf(stderr,"can't open %s\n",filename);
    }

    if (fstat(fd,&sb)) {
        fprintf(stderr,"can't fstat %s\n",filename);
    }

    st_mmap.size = fix_byte(sb.st_size,4096);
    <font color="red">st_mmap.file_mmap = (char*)manager->allocate(st_mmap.size);</font>

    <font color="red">read(fd,st_mmap.file_mmap,st_mmap.size);</font>

    if (st_mmap.file_mmap == (caddr_t)-1) {
        fprintf(stderr,"Can't mmap file\n");
        perror(NULL);
        exit(0);
    }
    return st_mmap;
}
</pre></section>
      </article>


      <article>
        <h3>
        並列化と実行時コード生成を用いた正規表現マッチングの高速化について
        </h3>
        <p>
        ・NFA/DFAから同時初期状態有限オートマトン(SSFA)を構成
        </p>
        <p>
        ・Simultaneous Start-state Finite Automata
        </p>
        <p>
        ・「NFAの全状態について、それぞれを初期状態とした場合の状態遷移」を
         同時初期状態遷移(SST)と呼んでいる。
        </p>
      </article>

  </body>
</html>