1

将此示例用于 mac单击此处

我让 OpenCL 因大型阵列而崩溃(Put NUM_VALUE=10000)。关于为什么会这样的任何建议?

4

1 回答 1

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,因为该程序不检查,导致对这些数组之一的下一次访问发生段错误。

于 2013-11-08T20:35:58.763 回答