2017-10-22 3 views
0

次のカーネルでは、まずclCreateBufferを使用してOpenCLメモリバッファを割り当てます。次に、sizeof(cl_mem)にargsizeを設定してclSetKernelArgを使用します。OpenCL clSetKernelArg argsize

float ExampleKernel (__global unsigned char* arg1) 
{ 
// some code 
} 

私の質問は、カーネルの引数は、unsigned char型へのポインタであり、なぜ私ははsizeof(cl_mem)に引数サイズを設定する必要がない場合でも、ありますか?なぜなら、OpenCLデータは常にcl_mem形式(要素ごとにsizeof(cl_mem))で割り当てられるからですか?カーネルが呼び出されると、それぞれの引数型への動的型キャストはOpenCLによって処理されますか?

答えて

2

カーネルの引数はunsigned char型のないである:それは符号なしの文字を含むグローバルメモリへのポインタです。そして、そのようなバッファがホスト側で表される方法は、cl_memタイプを経由することがあります。カーネル側では、ポインタはglobalポインタで表されます。

関連する問題