#ubuntu #opencl #linux-device-driver #amd #ubuntu-18.04
#ubuntu #opencl #linux-драйвер устройства #amd #ubuntu-18.04
Вопрос:
У меня есть ноутбук с процессором AMD Ryzen 5 2500u (со встроенным radeon vega 8 mobile GPU) и я использую Ubuntu 18.04.2. Я хотел бы выполнить некоторые вычисления OpenCL с C на CPU и GPU. Моя проблема в том, что я не уверен, как opencl может распознавать процессор.
Я установил amdgpu-pro с веб-сайта amd и AMD APP SDK 3.0. После запуска clinfo я получаю следующий вывод:
Количество платформ 2
Название платформы Clover
Поставщик платформы Mesa
Версия платформы OpenCL 1.1 Mesa 18.2.8
Профиль платформы FULL_PROFILE
Расширения платформы cl_khr_icd
Суффикс функции расширений платформы MESA
Название платформы AMD Accelerated
Поставщик платформы параллельной обработки 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
Идентификатор поставщика устройства 0x1002
Версия устройства OpenCL 1.1 Mesa 18.2.8
Версия драйвера 18.2.8
Версия OpenCL C для устройств OpenCL C 1.1
Тип устройства GPU
Профиль устройства FULL_PROFILE
Устройство доступно Да
Компилятор доступен, да
Максимальное количество вычислительных единиц 8
Максимальная тактовая частота 1100 МГц
Максимальные размеры рабочего элемента 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)
…
Platform Name AMD Accelerated Parallel Processing
Number of devices 1
Device Name gfx902
Device Vendor Advanced Micro Devices, Inc.
Device Vendor ID 0x1002
Device Version OpenCL 1.2 AMD-APP (2671.3)
Driver Version 2671.3 (PAL,HSAIL)
Device OpenCL C Version OpenCL C 1.2
Device Type GPU
Device Board Name (AMD) Unknown AMD GPU
Device Topology (AMD) PCI-E, 05:00.0
Device Profile FULL_PROFILE
…….
NULL platform behavior
clGetPlatformInfo(NULL, CL_PLATFORM_NAME, …) No platform
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, …) No platform
clCreateContext(NULL, …) [default] No platform
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)
Первая платформа «Clover» с устройством «AMD RAVEN (DRM 3.26.0, 4.18.0-16-generic, LLVM 7.0.0)» имеет тип устройства «GPU», а вторая платформа с устройством «gfx902» также, похоже, является графическим процессором моей системы.
Итак, мой вопрос: что мне нужно установить, чтобы opencl также распознал процессор моей системы?
Спасибо за помощь!
Комментарии:
1. Последний комментарий: название платформы
Clover
означает, что вы используете реализацию OpenCL в Mesa. Вам это не нужно… Также вам не нужен AMD APP SDK. Вы должны удалить их.amdgpu-pro
Должно быть достаточно в Ubuntu 18.04
Ответ №1:
Естественно, для использования процессора с OpenCL требуется реализация OpenCL с поддержкой процессора. В частности, должен быть доступен POCL. AMD, похоже, отказалась от своей реализации CPU OpenCL, а Intel утверждает, что они предназначены только для процессоров их марки.
Кстати, смешивание реализаций OpenCL для одного и того же устройства (например, Clover и APP) может дать неожиданные результаты, если что-то попытается автоматически распределить работу на все устройства. Должно быть нормально, если вы можете указать, какие устройства использовать.