【发布时间】:2015-06-23 14:47:11
【问题描述】:
我的程序不能同时使用 CPU 和 GPU:
ret = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_CPU, 1, &device_id, &ret_num_devices);
ret = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_GPU, 1, &device_id, &ret_num_devices);
使用 CPU 时,我收到以下消息:
0x000007FEE30E8F90 (amdocl64.dll) 中的第一次机会异常 Project2.exe:0xC0000005:访问冲突读取位置 0xFFFFFFFFFFFFFFFF。如果有此异常的处理程序,则 程序可以安全地继续。
执行此命令时出现问题:
ret = clEnqueueReadBuffer(command_queue, Cmobj, CL_TRUE, 0,
K*L*sizeof(float), C, 0, NULL, NULL);
当使用GPU程序执行此命令时冻结:
ret = clBuildProgram(program, 1, &device_id, NULL, NULL, NULL);
内存有问题吗?或者是其他东西? 我使用 Visual Studio 2012、AMD Radeon HD 6470M、AMD APP SDK 2.9-1
【问题讨论】:
-
鉴于您收到内存访问冲突错误代码 (0xC0000005),这两种实现的共同点在不应该出现的情况下为 null。