OpenCLカーネルに文字列を渡そうとしています。ここに私のC++コード省略です:OpenCLカーネルにstd :: stringを渡します。
std::string a = "abcd";
char *aChar = new char[a.size()+1];
aChar[a.size()] = 0;
memcpy(aChar, a.c_str(), a.size());
cl::Buffer serverKeyBuffer(context, CL_MEM_READ_ONLY | CL_MEM_HOST_READ_ONLY, sizeof(char) * a.size(), aChar);
署名カーネルのは、次のとおりです。
__kernel void MyKernel(__global float* rollNumber, __global char* a)
私は-51(CL_INVALID_ARG_SIZE)を得続けます。なぜサイズが無効になるのかわからない
どのAPI呼び出しがエラーコードを返していますか? – Dithermaster
は 'CL_MEM_COPY_HOST_PTR'を使うかもしれません。文字列を 'std :: string'からコピーする必要もありません。 – tmlen
@Dithermasterそれは 'kernel.setArg'コール – atr07