私は、小さなライブラリを作ろうとすると、C++バインディングを使ってOpenCLを書いています。OpenCL enqueTask vs enqueNDRangeKernel
NDRange offset(0);
NDRange global_size(numWorkItems);
NDRange local_size(1);
//this call fails with error code -56
err = queue.enqueueNDRangeKernel(kernelReduction, offset, global_size, local_size);
//this call works:
err = queue.enqueueTask(kernelReduction);
ここで、エラーコード-56はCL_INVALID_GLOBAL_OFFSETです。そして私は最初の呼び出しが失敗する理由を知りません。助言がありますか?
どのディメンションを使用していますか? OpenCLのドキュメントによると、オフセットは整数オフセットの配列でなければならず、それぞれが特定の次元に対応している必要があります。 – Thomas
C++バインディングで理解できる限り、NDRangeイニシャライザによって提供されています。 1の整数が与えられれば1次元とみなされ、2の場合は2と仮定されます。 –