如何在Ubuntu上为AMD Ryzen移动CPU安装opencl

时间:2019-03-25 18:13:04

标签: ubuntu opencl linux-device-driver amd ubuntu-18.04

我有一台笔记本电脑,配备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?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用带有OpenCL的CPU自然需要具有CPU功能的OpenCL实现。特别是POCL应该可用。 AMD似乎已经放弃了他们的CPU OpenCL实施,而Intel声称它们仅适用于他们的处理器品牌。

顺便说一句,如果尝试将工作自动分配给所有设备,则混合使用同一设备(例如Clover和AP​​P)的OpenCL实现可能会产生令人惊讶的结果。如果可以指定要使用的设备,那应该没问题。