# HG changeset patch # User Tatsuki IHA # Date 1517866171 -32400 # Node ID 87c3ca1046899fc19434c9912df1083021b34588 # Parent 7ddbad0c4b5d18569d73b494345e825c47fb9759 Fix diff -r 7ddbad0c4b5d -r 87c3ca104689 paper/evaluation.tex --- a/paper/evaluation.tex Tue Feb 06 04:11:42 2018 +0900 +++ b/paper/evaluation.tex Tue Feb 06 06:29:31 2018 +0900 @@ -43,7 +43,7 @@ これは要素毎に Task を生成するとその分の Context を生成するために時間を取ってしまうからである。 GPU での実行は データ並列を使用して行う。 -GPU でデータ並列を実行する場合は Context とコピーなどは発生しないため、1要素に1スレッドを割り振って実行を行う。 +1次元 Twice は並列実行の依存関係もなく、データ並列での実行に適した課題である。 そのため、 通信時間を考慮しなければ CPU よりコア数が多い GPU が有利となる。 diff -r 7ddbad0c4b5d -r 87c3ca104689 paper/gpu.tex --- a/paper/gpu.tex Tue Feb 06 04:11:42 2018 +0900 +++ b/paper/gpu.tex Tue Feb 06 06:29:31 2018 +0900 @@ -49,14 +49,13 @@ 受け取ったデータ並列用の Task は Code Gear のメタレベルで kernel の実行を行う。 \section{CUDAExectuor} -CUDAExectuor は \coderef{executorInterface} を実装しており、 Host から Device へのデータの送信(read)、 kernel の実行(exec)、 Device から Host への データの書き出しを行う(write)。 +CUDAExectuor は \coderef{executorInterface} に示す ExecutorInterfaceを実装しており、 Host から Device へのデータの送信(read)、 kernel の実行(exec)、 Device から Host への データの書き出しを行う(write)。 \lstinputlisting[caption=executor Inteface, label=code:executorInterface]{./src/executorInterface.h} Gears OS では データは Data Gear で表現される。 つまり、Host、Device 間でデータのやり取りを行うということは Data Gear を GPU のデータ領域に沿った形に適用する必要がある。 -Host から Device へデータを送信する際、 CUDA では cuMemAlloc 関数を使用して Device 側のデータ領域を確保する。 -cuMemAlloc 関数には確保するデータ領域のサイズを指定する必要がある。 +Host から Device へデータを送信する際、 CUDA では cuMemAlloc 関数を使用してサイズを指定し、Device 側のデータ領域を確保する。 全ての Data Gear には Meta Data Gear として Data Gear のサイズを持っており、基本的にはこのサイズでデータ領域を取ればよい。 しかし、Data Gear によっては内部に更にポインタで Data Gear を持っている場合がある。 このような Data Gear は Data Gear の実際のサイズではなく、ポインタのサイズで計算されてしまうため、そのままでは Device 用のデータ領域を確保することができない。 @@ -84,14 +83,7 @@ kernel の実行はcuLaunchKernel 関数で行われる。 cuLaunchKernel 関数には引数として各次元のblockサイズ、thread サイズ、kernel への引数等を渡す。 - -実際にcuLaunchKernel 関数を使用している部分を \coderef{cuLaunchKernel} に示す。 - -\newpage - -\lstinputlisting[caption=kernel の起動, label=code:cuLaunchKernel]{./src/cuLaunchKernel.cbc} - -Gears OS ではデータ並列 Task の際は Iterator Interface を持っており、 そこで指定した長さ、次元数に応じて cuLaunchKernel の引数を決定する(\coderef{cuLaunchKernel} 11-18行目)。 +Gears OS ではデータ並列 Task の際は Iterator Interface を持っており、 そこで指定した長さ、次元数に応じて cuLaunchKernel の引数を決定する。 % 少ないけどコードはなるべく載せたくない(メタ部分 + 複雑) \section{stub Code Gear による kernel の実行} diff -r 7ddbad0c4b5d -r 87c3ca104689 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed