문자열을 OpenCL 커널에 전달하려고합니다. 커널에 대한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를) 점점 계속 여기에 약식 내 C++ 코드입니다. 크기가 유효하지 않은 이유를 정확히 알지 못합니다.
어떤 API 호출이 오류 코드를 반환하고 있습니까? – Dithermaster
은 아마도'CL_MEM_COPY_HOST_PTR'을 사용할 것입니다. 문자열을'std :: string' 밖으로 복사 할 필요도 없습니다. – tmlen
@Dithermaster'kernel.setArg' 호출 – atr07