我有一个使用OpenCL内置平方根函数(sqrt)的内核但是当我尝试在GPU上运行内核时,我在构建时遇到无法识别的命令错误,如果我使用浮点数它会工作正常但是使用双打时它不起作用。我在Mac OS X 10.7.5上运行,而我的显卡是ATI Radeon HD 6750卡。
有谁知道问题可能是什么?
答案 0 :(得分:1)
显然你的gpu不支持双精度浮点数: http://clbenchmark.com/device-environment.jsp?config=12011396
支持双重报告扩展的AMD卡:cl_khr_fp64(或cl_amd_fp64)。
您可以通过以下方式检查openCL编译时间:
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
#elif defined(cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64 : enable
#else
#error "Double precision floating point not supported by OpenCL implementation."
#endif
或者您可以在不运行opencl编译的情况下进行检查:
status = clGetDeviceInfo (oclInfo->device, CL_DEVICE_DOUBLE_FP_CONFIG, sizeof configFp64, &configFp64, NULL);