opencl支持double双精度浮点数

先查看设备是否支持cl_khr_fp64, 若无cl_khr_fp64则设备不支持双精度浮点数。  如果有cl_khr_fp64的相关信息,在kernel文件中添加:

#pragma OPENCL EXTENSION cl_khr_fp64 : enable即可。


具体方法如下:

假设已获取某设备cl_device_id deviceId, 首先获取设备信息如下:

cl_int errNum;

size_t paramValueSize;

//cl_khr_fp64的相关信息在 cl_device_info CL_DEVICE_EXTENSIONS中

errNum = clGetDeviceInfo(deviceId, CL_DEVICE_EXTENSIONS, 0,NULL,&paramValueSize);

if(errNum != CL_SUCCESS)

{

cerr<<"failed to find opencl device info"<<endl;

return;

}

char* info = (char*)malloc(sizeof(char)*paramValueSize);

errNum = clGetDeviceInfo(deviceId, CL_DEVICE_EXTENSIONS, paramValueSize, info, NULL);

if(errNum !=  CL_SUCCESS)

{

cerr<<"failed to find opencl device info"<<endl;

return;

}

cout<<"CL_DEVICE_EXTENSIONS: \t"<<info<<endl;


阅读更多
文章标签: opencl double
个人分类: C++ opencl
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭