首页 > 解决方案 > 如何在 Ubuntu 上为 AMD Ryzen 移动 CPU 安装 opencl

问题描述

我有一台配备 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

平台名称 Clover

平台供应商 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

平台名称 Clover

设备数量 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

首选/原生向量大小
char 16 / 16
short 8 / 8
int 4 / 4
long 2 / 2
half 8 / 8 (cl_khr_fp16) float 4 / 4
double 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, ...) [其他] 成功 [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-generic, LLVM 7.0.0)”的第一个平台“Clover”的设备类型为“GPU”,而带有设备“gfx902”的第二个平台似乎也成为我系统的 GPU。

所以我的问题是:我必须安装什么才能让opencl也识别我系统的cpu?

感谢您的帮助!

标签: ubuntuopencllinux-device-driveramdubuntu-18.04

解决方案


将 CPU 与 OpenCL 一起使用自然需要支持 CPU 的 OpenCL 实现。特别是POCL应该可用。AMD 似乎已经放弃了他们的 CPU OpenCL 实施,而英特尔声称他们的实施仅适用于他们品牌的处理器。

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


推荐阅读