clCreateCommandQueueWithPropertiesで-30(INVALID_VALUE)となる問題
OpenCLのC++バインディングでCommandQueue
を作るときにエラーが出てしばらく詰まったのでメモ。
環境
- nvidia/opencl:devel
- GeForce GTX 960
- OpenCL 1.2 CUDA
問題
https://blog.miz-ar.info/2017/05/opencl-with-cxx-0/ を参考に簡単なGPUプログラムを組んでみて、コンパイルは通ったのだが実行時に表題のclCreateCommandQueueWithProperties(コードは-30
)でエラーが出てしまう。先のリンクのコードをコンパイルして実行しても結果は同じなので環境を疑った。
だが原因は、コンパイル時にCL_HPP_TARGET_OPENCL_VERSION
を指定しろと怒られたのでてきとーにバージョンを200
にしてしまったのがいけなかったようだ。OpenCLのバージョンはclinfo
で調べられるのできちんと指定してあげる(この時CL_HPP_MINIMUM_OPENCL_VERSION
より大きいとまた怒られるのでこれも指定する)。
#define CL_HPP_MINIMUM_OPENCL_VERSION 100 #define CL_HPP_TARGET_OPENCL_VERSION 120