Floating point Can';t在OpenCL程序中初始化double(fp64)的使用

Floating point Can';t在OpenCL程序中初始化double(fp64)的使用,floating-point,double,opencl,Floating Point,Double,Opencl,当我在OpenCL程序中使用以下行时 #pragma OPENCL EXTENSION cl_khr_fp64 : enable #pragma OPENCL扩展cl_khr_fp64:启用 我发现以下OpenCL错误: cl::Error: -46, (std::exception.what() returns "clCreateKernel") cl::Error:-46,(std::exception.what()返回“clCreateKernel”) 有人知道为什么吗? 我做错了什么 顺

当我在OpenCL程序中使用以下行时

#pragma OPENCL EXTENSION cl_khr_fp64 : enable #pragma OPENCL扩展cl_khr_fp64:启用 我发现以下OpenCL错误:

cl::Error: -46, (std::exception.what() returns "clCreateKernel") cl::Error:-46,(std::exception.what()返回“clCreateKernel”) 有人知道为什么吗? 我做错了什么

顺便说一句,我有以下系统:

[INFO] Name: GeForce GTX 470 [INFO] Vendor: NVIDIA Corporation [INFO] Profile: FULL_PROFILE [INFO] Version: OpenCL 1.0 CUDA [INFO] Driver: 260.19.06 [信息]名称:GeForce GTX 470 [信息]供应商:英伟达公司 [信息]配置文件:完整配置文件 [信息]版本:OpenCL 1.0 CUDA [信息]司机:260.19.06
干杯,

我想您正在使用的GeForce GTX 470的OpenCL 1.0驱动程序不支持fp64


尝试新的OpenCL 1.1驱动程序

是否有可能使用C字符串化宏

如果是这样,您需要将代码更改为如下所示:

#pragma OPENCL EXTENSION cl_khr_fp64 : enable \n

这是因为字符串化过程占用所有空格并将其转换为一个空格。但是,C预处理器需要“换行符”来分隔下一行。

构建日志是什么?你应该把它打印出来。你确定是关于司机的吗?无论如何,考虑到我使用Ubuntu开发/运行OpenCL,我最好等到11.04发布下一个驱动程序……切换到双精度并不迫切。再次感谢!OpenCL1.0驱动程序支持双精度,非常好。检查内核构建日志。啊,很抱歉给出了错误的建议。。。我道歉。你能取消检查我的答案吗,@Emanuele?我有一个类似的问题,关于
#pragma OPENCL EXTENSION cl_khr_fp64:enable
clCreateKernel返回cl_INVALID_KERNEL_NAME错误。你解决了吗?我没有用它,因为我正在把整个文本文件读入一个std::字符串。。。无论如何,我会给你一个机会!我也有同样的问题,但我添加了空格和换行符,但没有解决它。它生成但clCreateKernel返回CL\u无效的\u内核\u名称