我创建了一个基本的OpenCL代码,应该进行矩阵乘法。我不确定我可能犯了什么错误,但我收到了这个错误:
线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xc00)
经过一些研究后,当程序试图访问一个已经释放或指向不期望的位置的内存位置时,实际上会出现错误。但是我不明白在my code中调用clCreateProgramWithSource的情况可能是什么情况。
仅供参考,我只是尝试将第三个参数更改为NULL,在这种情况下它实际上可以正常工作,但是当传递与内核字符串相对应的正确字符串值时失败。
(我使用Xcode 9.2)
有人可以对此有所了解。
提前致谢。
答案 0 :(得分:2)
In the code you have mentioned:
string sourceCode = readFile("/Users/rajkumar/Documents/OpenCL/Kernels/matmul.cl");
// Create a program from the kernel source
size_t len = (size_t)sourceCode.length();
size_t * len_ptr = &(len);
cl_program program = clCreateProgramWithSource(opencl->context,
1,(const char**)&sourceCode,
NULL,&clStatus);
You cannot cast std::string*
to a const char**
. You should call sourceCode.c_str()
, then store it to a temporary variable of type const char*
, and pass a pointer to this variable into clCreateProgramWithSource()
.