OpenGL de プログラミング - OpenCL編02_3
現在地 >> メニュー >> OpenCL >> OpenCL編02 >> OpenCL編02_3
INDEX:OpenCL編01 <<OpenCL編02OpenCL編02_2、OpenCL編02_3 >> OpenCL編03?

カーネルの書き方


CPU側で呼び出されるGPUの関数のことを「カーネル」という。

本来は色々あるがまずはとりあえず、次のようにして書けばいい。
  • GPU側のソースコードの拡張子は「.cl
  • GPU側のメイン関数の修飾子には「__kernel」をつける
  • 関数の引数には「__global」をつける

【例】
//-- gpuMain.cl --//
__kernel void gpuMain(__global int *Ary)
{
	unsigned int id = get_global_id(0);//配列の通し番号でID取得
	Ary[id] += 1000; 
}

組み込み関数

↑の例で書いた「get_global_id関数」のような、
Work-Item(cudaのthreadにあたるもの)内で使用できる
あらかじめ用意された関数がある。
  • uint get_work_dim()
  • size_t get_global_size (uint dimindx)
  • size_t get_global_id (uint dimindx)
  • size_t get_local_size (uint dimindx)
  • size_t get_local_id (uint dimindx)
  • size_t get_num_groups (uint dimindx)
  • size_t get_group_id (uint dimindx)

サンプルコード