将此示例用于 mac单击此处
我让 OpenCL 因大型阵列而崩溃(Put NUM_VALUE=10000)。关于为什么会这样的任何建议?
你应该在调试器中运行程序,比如 gdb 来确定。它可能是以下分配之一:
float* test_in = (float*)malloc(sizeof(cl_float) * NUM_VALUES);
void* mem_in = gcl_malloc(sizeof(cl_float) * NUM_VALUES, test_in, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR);
void* mem_out = gcl_malloc(sizeof(cl_float) * NUM_VALUES, NULL, CL_MEM_WRITE_ONLY);
为内存请求返回 NULL,因为该程序不检查,导致对这些数组之一的下一次访问发生段错误。