将此示例用于mac Click Here
我正在让OpenCL崩溃大数组(放置NUM_VALUE = 10000)。有关为什么会这样的任何建议?
答案 0 :(得分:1)
你应该在调试器中运行程序,比如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,因为该程序没有检查,导致其中一个阵列的下一次访问发生段错误。