Вопрос или проблема
Предпосылка: Я новичок в этой теме
Я пытаюсь настроить свою WSL для тестирования численных расчетов (на основе OpenGL) на графических процессорах.
Я уже установил CUDA, nvcc --version
, nvidia-smi
и glxgears
кажутся работающими правильно (Смотрите здесь для вывода).
Однако у меня есть следующий вывод после glxinfo -B
:
название дисплея: :0
MESA: ошибка: ZINK: не удалось выбрать pdev
glx: не удалось создать экран drisw
дисплей: :0 экран: 0
прямой рендеринг: Да
Расширенная информация о рендерере (GLX_MESA_query_renderer):
Производитель: Microsoft Corporation (0xffffffff)
Устройство: D3D12 (NVIDIA GeForce GTX 1650 Ti с дизайном Max-Q) (0xffffffff)
Версия: 24.0.9
Ускоренный: да
Видеопамять: 11996MB
Объединенная память: нет
Предпочтительный профиль: core (0x1)
Максимальная версия профиля core: 4.6
Максимальная версия совместимого профиля: 4.6
Максимальная версия профиля GLES1: 1.1
Максимальная версия профиля GLES[23]: 3.1
Строка производителя OpenGL: Microsoft Corporation
Строка рендерера OpenGL: D3D12 (NVIDIA GeForce GTX 1650 Ti с дизайном Max-Q)
Строка версии профиля core OpenGL: 4.6 (Core Profile) Mesa 24.0.9-0ubuntu0.2
Строка версии языка шейдинга профиля core OpenGL: 4.60
Флаги контекста профиля core OpenGL: (нет)
Маска профиля профиля core OpenGL: core profile
Строка версии OpenGL: 4.6 (Compatibility Profile) Mesa 24.0.9-0ubuntu0.2
Строка версии языка шейдинга OpenGL: 4.60
Флаги контекста OpenGL: (нет)
Маска профиля OpenGL: compatibility profile
Строка версии профиля OpenGL ES: OpenGL ES 3.1 Mesa 24.0.9-0ubuntu0.2
Строка версии языка шейдинга профиля OpenGL ES: OpenGL ES GLSL ES 3.10
Это мешает моему приложению, что приводит к сбоям в тестовых случаях.
Я пытался обновить до более новой версии MESA с помощью ppa, но это привело к другой ошибке.
У вас есть идеи, как это исправить? Любая помощь будет очень полезна!
Дополнительная информация:
Ubuntu 24.04
ПК: Razer Blade-stealth
Видеокарта: NVIDIA GeForce GTX 1650 Ti с дизайном Max-Q
Windows 11
У меня была похожая проблема, и мне помогло следующее:
sudo apt install mesa-utils libgl1-mesa-dri libgl1-mesa-glx
export LIBGL_ALWAYS_SOFTWARE=1
Возможно, не удастся установить libgl1-mesa-glx, однако это все равно работает с установленной переменной окружения.
Ответ или решение
Решение ошибки ZINK в WSL2: «failed to choose pdev» после выполнения glxinfo -B
Ваша проблема связана с использованием WSL2 (Windows Subsystem for Linux 2) и ошибки, возникающей в MESA во время работы с OpenGL. Давайте проанализируем вашу ситуацию более детально, чтобы найти оптимальное решение.
Понимание проблемы
Ошибка MESA: error: ZINK: failed to choose pdev
указывает на проблему с выбором подходящего физического устройства (physical device) для графической обработки. Это часто связано с конфигурацией OpenGL в WSL2 и взаимодействием с драйверами NVIDIA.
Ваша система работает на базе Ubuntu 24.04 и использует графическую карту NVIDIA GeForce GTX 1650 Ti. Важно отметить, что OpenGL запускается через API D3D12 в WSL, что может вызывать определённые ограничения или особенности в его работе.
Возможные шаги по устранению ошибки
-
Обновление компонентов MESA: Убедитесь, что у вас установлены последние версии библиотек MESA. Попробуйте выполнить следующее:
sudo apt update sudo apt install mesa-utils libgl1-mesa-dri libgl1-mesa-glx
Это обновит необходимые вам пакеты, что может исправить проблемы совместимости.
-
Использование софтварной рендеринга: Как указано вами, наличие переменной среды
LIBGL_ALWAYS_SOFTWARE=1
позволяет использовать программный рендеринг, что в некоторых случаях обходит проблемы с аппаратным обеспечением.export LIBGL_ALWAYS_SOFTWARE=1
-
Проверка конфигурации и драйверов NVIDIA: Убедитесь, что драйверы NVIDIA правильно установлены и обновлены. Вы можете использовать следующую команду для проверки состояния драйверов:
nvidia-smi
-
Проверка параметров WSL: Убедитесь, что ваша конфигурация WSL соответствует рекомендациям по улучшению обработки графики. Возможно, потребуется редактирование файла конфигурации
.wslconfig
в вашем домашнем каталоге на Windows, добавив:[wsl2] guiApplications=true
-
Работа с D3D12: Поскольку OpenGL в WSL2 использует D3D12, стоит удостовериться, что OpenGL корректно интегрируется с вашей видеокартой через преобразование вызовов. Если проблема сохраняется, возможно, стоит обратить внимание на совместимость используемых инструментов и пакетов.
Завершение
Обратите внимание, что работа с графическими API и их взаимодействие в среде WSL2 может быть непростой задачей, особенно для пользователей, начинающих в этой области. Если все предложенные шаги не помогают, возможно, стоит рассмотреть переход к другой среде для тестирования CUDA и OpenGL, либо открытие вопроса на специализированных форумах или платформах, посвящённых разработке в области GPU.
Если у вас возникнут дополнительные вопросы или потребуется дальнейшая поддержка, не стесняйтесь обращаться за помощью. Удачи в ваших экспериментах с OpenGL на GPU!