系统:
Ryzen 1600,r9 270(radeon driver),ubuntu 16.04
我试图让我的编译器(gcc 5.4.1)用OpenCL编译一些C ++,但是不能让它找到头文件。
TEST.CPP:
#include <CL/cl.hpp>
int main(){}
我运行 g ++ test.cpp -lOpenCL 但是得到致命错误:CL / cl.hpp:没有这样的文件或目录。
对于在StackOverflow上遇到相同问题的其他人,问题是未安装libOpenCL。但我有,我安装了所有这些包:
opencl-headers,ocl-icd-opencl-dev,ocl-icd-libopencl1,mesa-opencl-icd,clinfo,libclc-dev,libclc-amdgcn,libclcr600 (已搜索&#39 ; opencl&#39; in synaptic)
运行&#34;找到libOpenCL&#34;提供了许多条目,包括&#34; /usr/local/lib/libOpenCL.so"哪个应该被-lOpenCL标志??
选中clinfo:
平台数量1 平台名称三叶草 平台供应商Mesa 平台版本OpenCL 1.1 Mesa 17.2.8 平台配置文件FULL_PROFILE 平台扩展cl_khr_icd 平台扩展功能后缀MESA
平台名称Clover
设备数量1
设备名称AMD PITCAIRN(DRM 2.50.0 / 4.13.0-37-generic,LLVM 5.0.0)
设备供应商AMD
设备供应商ID 0x1002
设备版本OpenCL 1.1 Mesa 17.2.8
驱动程序版本17.2.8
设备OpenCL C版本OpenCL C 1.1
设备类型GPU
设备配置文件FULL_PROFILE
最大计算单位20
最大时钟频率955MHz
最大工作项目尺寸3
最大工作项目大小256x256x256
最大工作组大小256
首选工作组大小为64
优选/原始载体大小
char 16/16
短8/8
int 4/4
长2/2
半0/0(不适用)
浮4/4
双2/2(cl_khr_fp64)
半精度浮点支持(n / a)
单精度浮点支持(核心)
非正规数
Infinity和NANs是的
舍入到最近的是
回合零号
圆到无穷大
IEEE754-2008融合乘法 - 加号
支持在软件编号中模拟
正确的分割和sqrt操作No.
双精度浮点支持(cl_khr_fp64)
Denormals是的
Infinity和NANs是的
舍入到最近的是
圆到零是的
圆到无限是的
IEEE754-2008融合乘法加是
支持在软件编号中模拟
正确的分割和sqrt操作No.
地址位64,Little-Endian
全局内存大小2147483648(2GiB)
纠错支持号
最大内存分配1503238553(1.4GiB)
主机和设备的统一内存
任何数据类型的最小对齐128字节
基址的对齐1024位(128字节)
全局内存缓存类型无
图片支持号
本地内存类型本地
本地内存大小32768(32KiB)
最大恒定缓冲区大小1503238553(1.4GiB)
最大常数args 16
内核参数的最大大小1024
队列属性
无序执行号
分析是的
分析计时器分辨率0ns
执行能力
运行OpenCL内核是的
运行本机内核号
设备可用是
编译器可用是
设备扩展cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp64
NULL平台行为 clGetPlatformInfo(NULL,CL_PLATFORM_NAME,...)Clover clGetDeviceIDs(NULL,CL_DEVICE_TYPE_ALL,...)成功[MESA] clCreateContext(NULL,...)[默认]成功[MESA] clCreateContextFromType(NULL,CL_DEVICE_TYPE_CPU)平台中找不到设备 clCreateContextFromType(NULL,CL_DEVICE_TYPE_GPU)成功(1) 平台名称三叶草 设备名称AMD PITCAIRN(DRM 2.50.0 / 4.13.0-37-generic,LLVM 5.0.0) clCreateContextFromType(NULL,CL_DEVICE_TYPE_ACCELERATOR)平台中找不到设备 clCreateContextFromType(NULL,CL_DEVICE_TYPE_CUSTOM)在平台中找不到设备 clCreateContextFromType(NULL,CL_DEVICE_TYPE_ALL)成功(1) 平台名称三叶草 设备名称AMD PITCAIRN(DRM 2.50.0 / 4.13.0-37-generic,LLVM 5.0.0)
ICD加载程序属性 ICD加载程序名称OpenCL ICD Loader ICD装载机供应商OCL Icd免费软件 ICD加载器版本2.2.8 ICD loader Profile OpenCL 1.2 注意:您的OpenCL库声明支持OpenCL 1.2, 但它似乎也支持OpenCL 2.1。
答案 0 :(得分:0)
您要从此处下载cl.hpp:https://www.khronos.org/registry/OpenCL/api/2.1/cl.hpp。 并确保您链接到OpenCL。
OpenCL是一种C风格的API,因此有许多用于处理指向整数的指针的函数。
cl.hpp是一种C ++样式的API,因此很多类都具有可读的方法来播放指向int的指针。
它们是分开的东西。
答案 1 :(得分:0)
在Linux上,您需要一个通常名为opencl-headers
的软件包。另外请注意,不同的OpenCL版本不兼容,因此,如果您的示例是1.2,则需要确保标头也为1.2