diff paper/data_parallel.tex @ 1:f4b3de446113

write introduction and cerium
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Tue, 05 Nov 2013 23:59:45 +0900
parents 9e88a388ec83
children b7c8a956c10b
line wrap: on
line diff
--- a/paper/data_parallel.tex	Tue Nov 05 23:18:04 2013 +0900
+++ b/paper/data_parallel.tex	Tue Nov 05 23:59:45 2013 +0900
@@ -1,25 +1,4 @@
-\section{Ceriumにおけるデータ並列}\label{data_parallel}
-OpenCLで充分な並列度を得るには、データ並列による実行をサポートした方が良い。
-CeriumでOpenCLのデータ並列を使うために、iterateというAPIを用意した。
-
-ベンチマークをとるために、まずはCPU(many core)上でデータ並列の機構を実装した。
-OpenCLでデータ並列を行う際は、NDRangeの引数でワークアイテムのサイズを設定し、以下のようにkernelを書けばよい。
-
-\begin{Verbatim}[fontsize=\footnotesize,xleftmargin=1cm]
-__kernel void
-multi(__global const float *i_data1, 
-      __global const float *i_data2,
-      __global float *o_data)
-{
-    int i = get_global_id(0);
-    o_data[i] = i_data1[i]*i_data2[i];
-}
-
-\end{Verbatim}
-kernelを複数生成し、各kernelは自分が担当するindexをget\_global\_id APIで取得し、
-その部分だけ計算を行う。CPUで実行する場合もGPU実行時のkernelとなるべく近い形式で記述できるようにする。
-
-\subsection{データ並列実行の機構}
+\section{Cerium における Data 並列}\label{data_parallel}
 データ並列で実行する場合はspawn APIではなく、iterate APIでTaskを生成すればよい。
 Scheduler内で引数分のTaskを生成し、それぞれに自分が担当するindexをパラメタとして設定していく。
 iterateにはlengthを引数として渡し、lengthの値と渡したlengthの個数で次元数や