2

我有一个使用 OpenCL 内置平方根函数 (sqrt) 的内核,但是当我尝试在 GPU 上运行内核时,我在构建时收到无法识别的命令错误,如果我使用浮点数它可以正常工作,但是当使用双精度时它确实不行。我在 Mac OS X 10.7.5 上运行,我的显卡是 ATI Radeon HD 6750 卡。

有谁知道是什么问题?

4

1 回答 1

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);
于 2013-07-26T12:46:02.873 回答