我有一台笔记本电脑,配备AMD Ryzen 5 2500u(集成了radeon vega 8移动GPU)处理器,并使用Ubuntu 18.04.2。我想在CPU和GPU上使用C ++运行一些OpenCL计算。我的问题是我不确定opencl如何识别cpu。
我已经从amd网站和AMD APP SDK 3.0安装了amdgpu-pro。运行clinfo后,得到以下输出:
平台数2
平台名称三叶草
平台供应商Mesa
平台版本OpenCL 1.1 Mesa 18.2.8
平台配置文件FULL_PROFILE
平台扩展cl_khr_icd
平台扩展功能后缀MESA
平台名称AMD加速
并行处理 平台供应商Advanced Micro Devices,Inc。
平台版本OpenCL 2.1 AMD-APP(2671.3)
平台配置文件FULL_PROFILE
平台扩展cl_khr_icd cl_amd_event_callback cl_amd_offline_devices
平台主机计时器分辨率1ns
平台扩展功能后缀AMD
平台名称三叶草
设备数1
设备名称AMD RAVEN(DRM 3.26.0,4.18.0-16-generic,LLVM 7.0.0)
设备供应商AMD
设备供应商ID 0x1002
设备版本OpenCL 1.1 Mesa 18.2.8
驱动程序版本18.2.8
设备OpenCL C版本OpenCL C 1.1
设备类型GPU
设备配置文件FULL_PROFILE
设备可用是
可用的编译器是
最大计算单元8
最大时钟频率1100MHz
最大工作项目尺寸为3
最大工作项目尺寸为256x256x256
最大工作组大小256
首选工作组大小为64的倍数
首选/本机向量大小
字符16/16
短片8/8
int 4/4
长2/2
半8/8(cl_khr_fp16) 浮点数4/4
双2/2(cl_khr_fp64)半精度浮点支持(cl_khr_fp16)
...
平台名称AMD加速并行处理
设备数1
设备名称gfx902
设备供应商Advanced Micro Devices,Inc。
设备供应商ID 0x1002
设备版本OpenCL 1.2 AMD-APP(2671.3)
驱动程序版本2671.3(PAL,HSAIL)
设备OpenCL C版本OpenCL C 1.2
设备类型GPU
设备板名称(AMD)未知的AMD GPU
设备拓扑(AMD)PCI-E,05:00.0
设备配置文件FULL_PROFILE
.......
NULL平台行为
clGetPlatformInfo(NULL,CL_PLATFORM_NAME,...)没有平台
clGetDeviceIDs(NULL,CL_DEVICE_TYPE_ALL,...)没有平台
clCreateContext(NULL,...)[默认]无平台
clCreateContext(NULL,...)[other]成功[MESA]
clCreateContextFromType(NULL,CL_DEVICE_TYPE_DEFAULT)成功(1)
Platform Name Clover Device Name AMD RAVEN (DRM 3.26.0, 4.18.0-16-generic, LLVM 7.0.0)
clCreateContextFromType(NULL,CL_DEVICE_TYPE_CPU)在平台中找不到设备
clCreateContextFromType(NULL,CL_DEVICE_TYPE_GPU)成功(1)
Platform Name Clover Device Name AMD RAVEN (DRM 3.26.0, 4.18.0-16-generic, LLVM 7.0.0)
clCreateContextFromType(NULL,CL_DEVICE_TYPE_ACCELERATOR)在平台中找不到设备
clCreateContextFromType(NULL,CL_DEVICE_TYPE_CUSTOM)在平台中找不到设备
clCreateContextFromType(NULL,CL_DEVICE_TYPE_ALL)成功(1)
Platform Name Clover Device Name AMD RAVEN (DRM 3.26.0, 4.18.0-16-generic, LLVM 7.0.0)
带有设备“ AMD RAVEN(DRM 3.26.0,4.18.0-16,通用,LLVM 7.0.0)”的第一个平台“ Clover”具有设备类型“ GPU”,而带有设备“ gfx902”的第二个平台似乎也是我系统的GPU。
所以我的问题是:我必须安装什么才能使opencl也可以识别系统的cpu?
感谢您的帮助!
答案 0 :(得分:0)
使用带有OpenCL的CPU自然需要具有CPU功能的OpenCL实现。特别是POCL应该可用。 AMD似乎已经放弃了他们的CPU OpenCL实施,而Intel声称它们仅适用于他们的处理器品牌。
顺便说一句,如果尝试将工作自动分配给所有设备,则混合使用同一设备(例如Clover和APP)的OpenCL实现可能会产生令人惊讶的结果。如果可以指定要使用的设备,那应该没问题。