Вопрос или проблема
Я на Arch Linux и хотел бы использовать Beignet. Однако по нез-related причинам мои графические ресурсы предоставляет видеокарта NVIDIA (с использованием драйвера nouveau), что приводит к тому, что любая попытка использовать Beignet обязательно завершается неудачей. Я знаю, что встроенный графический процессор Intel может работать, но по какой-то причине я не могу его использовать.
Вот что я получаю, когда запускаю clinfo
:
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
Количество платформ 1
Название платформы Intel Gen OCL Driver
Вендор платформы Intel
Версия платформы OpenCL 2.0 beignet 1.4 (git-7f1c190c)
Профиль платформы FULL_PROFILE
Расширения платформы 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_3d_image_writes cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_spir cl_khr_icd cl_intel_accelerator cl_intel_subgroups cl_intel_subgroups_short cl_intel_media_block_io cl_intel_planar_yuv cl_khr_gl_sharing
Суффикс функции расширений платформы Intel
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
cl_get_gt_device(): ошибка, неизвестное устройство: 0
Название платформы Intel Gen OCL Driver
Количество устройств 0
NULL поведение платформы
clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...) Intel Gen OCL Driver
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
cl_get_gt_device(): ошибка, неизвестное устройство: 0
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...) Intel Gen OCL Driver
clCreateContext(NULL, ...) [по умолчанию] Устройства не найдены в платформе
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU) Устройства не найдены в платформе
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
cl_get_gt_device(): ошибка, неизвестное устройство: 0
clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU) Устройства не найдены в платформе
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR) Устройства не найдены в платформе
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM) Устройства не найдены в платформе
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
cl_get_gt_device(): ошибка, неизвестное устройство: 0
clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL) Устройства не найдены в платформе
Свойства загрузчика ICD
Имя загрузчика ICD OpenCL ICD Loader
Вендор загрузчика ICD OCL Icd свободное программное обеспечение
Версия загрузчика ICD 2.2.11
Профиль загрузчика ICD OpenCL 2.1
Когда я пытаюсь запустить luxmark
, я получаю следующее:
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
DRM_IOCTL_I915_GEM_APERTURE не удалась: Недопустимый аргумент
Предполагая размер доступной апертуры 131072kB.
Может привести к снижению производительности или неправильному отображению.
получить идентификатор чипа не удалось: -1 [22]
параметр: 4, значение: 0
cl_get_gt_device(): ошибка, неизвестное устройство: 0
завершение произошло после выброса экземпляра 'cl::Error'
что(): clGetDeviceIDs
Принудительное завершение (сброс ядра)
Мое предположение о том, что графический процессор Intel доступен для моего использования, основывается на том, что эта строка присутствует в моем lspci
:
00:02.0 VGA совместимый контроллер: Intel Corporation 4-го поколения Core Processor Family Integrated Graphics Controller (рев 06)
Что-то очевидное упускаю? Мое точное оборудование, согласно lspci
и cat /proc/cpuinfo
, следующее:
00:00.0 Мост хоста: Intel Corporation 4-го поколения Core Processor DRAM Controller (рев 06)
00:01.0 PCI мост: Intel Corporation Xeon E3-1200 v3/4-го поколения Core Processor PCI Express x16 Controller (рев 06)
00:02.0 VGA совместимый контроллер: Intel Corporation 4-го поколения Core Processor Family Integrated Graphics Controller (рев 06)
00:03.0 Звуковое устройство: Intel Corporation Xeon E3-1200 v3/4-го поколения Core Processor HD Audio Controller (рев 06)
00:14.0 USB контроллер: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (рев 05)
00:16.0 Контроллер связи: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (рев 04)
00:1a.0 USB контроллер: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (рев 05)
00:1b.0 Звуковое устройство: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (рев 05)
00:1c.0 PCI мост: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (рев d5)
00:1c.2 PCI мост: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (рев d5)
00:1c.3 PCI мост: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (рев d5)
00:1d.0 USB контроллер: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (рев 05)
00:1f.0 ISA мост: Intel Corporation C220 Series Chipset Family H81 Express LPC Controller (рев 05)
00:1f.2 SATA контроллер: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (рев 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (рев 05)
01:00.0 VGA совместимый контроллер: NVIDIA Corporation GK104 [GeForce GTX 680] (рев a1)
01:00.1 Звуковое устройство: NVIDIA Corporation GK104 HDMI Audio Controller (рев a1)
03:00.0 Контроллер Ethernet: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (рев 0c)
04:00.0 USB контроллер: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (рев 01)
vendor_id : GenuineIntel
семейство процессоров : 6
модель : 60
имя модели : Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz
шаг : 3
микрокод : 0x12
частота процессора: 1236.840
размер кэша : 3072 KB
физический идентификатор: 0
количество потоков: 4
идентификатор ядра: 1
число ядер процессора: 2
apicid : 3
начальный apicid: 3
fpu : да
исключение fpu : да
уровень cpuid : 13
wp : да
флаги : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 монитор ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm arat pln pts
ошибки :
bogomips : 7187.42
размер clflush : 64
выравнивание кэша: 64
размеры адресов: 39 бит физический, 48 бит виртуальный
управление питанием:
Проблема в том, что Beignet по умолчанию использует X11/DRI для поиска GPU. Это не будет работать с дискретной картой как основным дисплеем.
Вы можете сбросить переменную окружения DISPLAY или установить ее в “” для запуска приложения OpenCL без X, так как Beignet будет использовать узлы рендеринга для поиска графического процессора Intel.
Вам нужно повторно скомпилировать Beignet без поддержки X11, чтобы приложения X, такие как Luxmark, работали.
Я подал ошибку с просьбой к Beignet использовать узлы рендеринга по умолчанию:
https://bugs.freedesktop.org/show_bug.cgi?id=107582
Надеюсь, это поможет,
Ответ или решение
Для решения проблемы использования Beignet на вашей системе с интегрированным графическим процессором Intel и дискретной видеокартой NVIDIA, необходимо учесть несколько важных аспектов.
Проблема
Вы столкнулись с ошибками при использовании Beignet на Arch Linux, в то время как дискретная видеокарта NVIDIA (чья поддержка осуществляется драйвером Nouveau) мешает корректной работе интегрированного Intel GPU. Попытка доступа к Intel GPU через Beignet приводит к ошибкам, таким как clGetDeviceIDs
, которые указывают на то, что устройства не обнаружены:
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...) No devices found in platform
Причины
Основная проблема заключается в том, что Beignet по умолчанию использует X11 и DRI для поиска доступных графических процессоров. Однако когда основной дисплей подключен к дискретной видеокарте NVIDIA, это не позволяет Beignet получить доступ к интегрированному графическому процессору Intel.
Также ошибки:
DRM_IOCTL_I915_GEM_APERTURE failed: Invalid argument
указывает на то, что доступ к ресурсам GPU не может быть получен, что связано с неправильной конфигурацией системы для работы с графическими устройствами.
Решения
1. Измените переменную окружения DISPLAY
Первый шаг заключается в установлении переменной окружения DISPLAY
, которая позволит Beignet определить целевое устройство. Вы можете попробовать задать ее значение пустым:
unset DISPLAY
или установить:
export DISPLAY=""
Это поможет Beignet переключиться на использование рендер-узлов, а не X11.
2. Пересоберите Beignet без X11 поддержки
Для запуска графических приложений, таких как LuxMark, вам может понадобиться пересобрать Beignet без поддержки X11. Это даст возможность Beignet подключаться к GPU напрямую через рендер-узлы, что обеспечит доступ к Intel GPU:
- Скачайте исходный код Beignet.
- Настройте окружение сборки, удалив флаги, касающиеся X11.
- Соберите и установите Beignet.
Такой подход позволит избежать проблем, связанных с ошибками отображения при использовании Intel GPU через Beignet.
3. Используйте рендер-узлы
Убедитесь, что ваше ядро поддерживает рендер-узлы. Это ключевой аспект, позволяющий Beignet корректно взаимодействовать с Intel GPU в системе с дискретной NVIDIA картой.
Для проверки поддержки рендер-узлов можете выполнить следующую команду:
ls /dev/dri/
Вы должны увидеть записи renderD*
, если поддержка рендер-узлов активна.
Заключение
Проблемы с Beignet на вашей системе могут быть разрешены путем изменения параметра DISPLAY
и пересборки Beignet без поддержки X11. Следуя предложенным шагам, вы сможете наладить использование интегрированного графического процессора Intel для работы с OpenCL на Arch Linux, даже если у вас есть дискретная видеокарта NVIDIA.
Если у вас возникнут дополнительные вопросы или понадобится помощь, не стесняйтесь задавать их.