annotate paper/chapter1.tex @ 1:d84b6a97a86a

Survey OpenCL
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Sun, 04 Jan 2015 18:42:55 +0900
parents aae08d907517
children d29d75425bb0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \chapter{既存のマルチプラットフォームフレームワーク}
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 \section{OpenCL}
1
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 OpenCL とは、マルチコア CPU と GPU のようなヘテロジニアスな環境を利用した並列計算を支援するフレームワークである。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
4
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
5 OpenCL には主に2つの仕様がある。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
6
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
7 \begin{itemize}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 \item OpenCL C言語
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
9 \item OpenCL Runtime API
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
10 \end{itemize}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
11 OpenCL C は演算用プロセッサ上で動作する、 C 言語を拡張したプログラミング言語である。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
12 一方で OpenCL Runtime API は OpenCL C で記述したプログラムを演算用プロセッサ上で実行させるため、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
13 制御用のプロセッサが利用する API である。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
14
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
15 OpenCL では演算用プロセッサ側を device 、制御用デバイス側を host として定義する。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
16 また、 Device 上で動作するプログラムの事を kernel と呼ぶ。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
17
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
18 \subsection{Command Queue}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
19 OpenCL では、デバイスの操作に Command Queue を使用する。 Command Queue は Device に命令を送るための仕組みである。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
20 Command Queue は clCreateCommandQueue という OpenCL API で作成され、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
21 Command Queueが所属するコンテキストや実行対象となるデバイスを指定する。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
22
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
23 kernel の実行、input data への書き込み、 output data の読み込みといった
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
24 メモリ操作はこの Command Queue を通して行われる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
25
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
26 \subsection{メモリアクセス}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
27 host では主に data を input/output するメモリ資源の確保を行う。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
28 GPU のメモリ空間(図:\ref{fig:gpuarch})はマルチコア CPU (図:\ref{fig:cpuarch})と違い、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
29 共有メモリでないため host と kernel(Task)間で data の共有ができない。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
30
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
31 \begin{figure}[htpb]
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
32 \begin{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
33 \includegraphics[scale=0.4]{./images/gpu_arch.pdf}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
34 \end{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
35 \caption{Gpu Architecture}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
36 \label{fig:gpuarch}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37 \end{figure}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
38
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
39 \begin{figure}[htpb]
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
40 \begin{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
41 \includegraphics[scale=0.8]{./images/cpu_arch.pdf}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
42 \end{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
43 \caption{Cpu Architecture}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
44 \label{fig:cpuarch}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45 \end{figure}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
46 アクセスするにはメモリ空間間でコピーしなければならない。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
48 OpenCLは host 側で memory buffer を作成してメモリのコピーを行う。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
49 これらの処理や Task は Command Queue に enqueue することで実行される。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
50 \subsection{データ並列}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
51 多次元のデータ構造がある場合に高い並列度を保つには、それを分割して並列に実行する機能が必要である。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
52 データ並列実行という。OpenCLはデータ並列実行もサポートしている。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
53 OpenCL は次元数に対応する index があり、 OpenCL は一つの記述から異なる index を持つ複数の kernel を自動生成する。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
54 その添字を global\_id と呼ぶ。この時入力されたデータはワークアイテムという処理単位に分割される。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
55
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
56 OpenCL はワークアイテムに対してそれぞれを識別する ID ( global\_id )を割り当てる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
57 kernel は get\_global\_id API によって ID を取得し、取得した ID に対応するデータに対して処理を行い、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
58 データ並列を実現する。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
59 この ID によって取得してきたワークアイテムをグローバルワークアイテムという。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
60 また、ワークアイテムは3次元までのデータを渡すことができる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
61
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
62 データ並列による kernel 実行の場合は clEnqueueNDRangeKernel API を使用するが、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
63 この関数の引数としてワークアイテムのサイズと次元数を指定することでデータ並列で実行できる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
64
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
65 \subsection{ワークグループ}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
66 前節でワークアイテムという処理単位について述べたが、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
67 さらに複数個のグローバルワークアイテムを work\_group という単位にまとめることができる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
68 work\_group 内では同期やローカルメモリの共有が可能となる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
69
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
70 グローバルワークアイテム(ワークアイテム全体)の個数と、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
71 ローカルワークアイテム(グループ一つ辺りのアイテム)の個数を指定することでワークアイテムを分割する。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
72 なお、このときグローバルワークアイテム数はローカルアイテム数の整数倍でなければ
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
73 clEnqueueNDRangeKernel API 呼び出しは失敗する。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
74
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
75 ローカルアイテム数は0を指定することで、コンパイル時に最適化させることができる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
76 したがってローカルアイテムのサイズは0を指定するのが一般的である。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
77
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
78 なお、 work\_group を設定した場合は global\_id の他に work\_group\_id 、local\_id が
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
79 それぞれの kernel に割り当てられる(図:\ref{fig:workitem_id})。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
80
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
81 \begin{figure}[htpb]
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
82 \begin{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
83 \includegraphics[scale=0.65]{./images/workitem.pdf}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
84 \end{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
85 \caption{WorkItem ID}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
86 \label{fig:workitem_id}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
87 \end{figure}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
88
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
89 なお、work\_groupを設定した場合はglobal\_idの他にwork\_group\_id、local\_idが
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
90 それぞれのkernelに割り当てられる(図:\ref{fig:workitem_id})。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
91
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
92 kernel 側からそれぞれ ID に対応した API を使用して、各 ID を取得する。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
93 取得した ID から自分が担当する index を計算して導く。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
94 表:\ref{table:kernel_id_api}は kernel 側で使用できる、 ID を取得するための API となる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
95 \begin{tiny}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
96 \begin{table}[htpb]
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
97 \begin{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
98 \label{table:kernel_id_api}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
99 \small
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
100 \begin{tabular}[htpb]{c|l}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
101 \hline
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
102 get\_group\_id & work\_group\_id を取得 \\
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
103 \hline
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
104 get\_local\_id & local\_id を取得 \\
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
105 \hline
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
106 get\_global\_id & global\_id を取得 \\
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
107 \hline
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
108 \end{tabular}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
109 \caption{kernel で使用する ID 取得の API}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
110 \end{center}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
111 \end{table}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
112 \end{tiny}
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
113 なお、 local\_id 、global\_id を取得する API は引数に0、1、2の値を set することができる。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
114 id は x, y, z 座標があり、それぞれが 0, 1, 2 に対応している。
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
115 例えば get\_global\_id(1) と呼び出した場合は y 座標の、
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
116 get\_global\_id(1) と呼び出した場合は z 座標の global\_id を取得する。
0
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
aae08d907517 first commit
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
1
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
122
d84b6a97a86a Survey OpenCL
Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
123