Microsoft реализует в WSL доступ к GPU и запуск графических приложений Linux

Компания Microsoft объявила о реализации значительных улучшений в подсистеме WSL (Windows Subsystem for Linux), обеспечивающей запуск исполняемых файлов Linux в Windows:

  • Добавлена поддержка запуска Linux-приложений с графическим интерфейсом. Поддержка реализована через виртуализацию доступа к GPU и предоставление драйверов, через которые смогут работать штатные графические подсистемы дистрибутивов Linux, в том числе на базе Wayland. Графические приложения Linux и Windows смогут выполняться бок о бок на рабочем столе Windows. 0_1589908783.png

    Для ядра Linux подготовлен открытый драйвер dxgkrnl, предоставляющий устройство /dev/dxg с сервисами повторяющими WDDM (Windows Display Driver Model) D3DKMT ядра Windows. Драйвер организует соединение с физическим GPU при помощи VM bus. Linux приложения имеют тот же уровень доступа к GPU, что и родные приложения для Windows, без применения разделения ресурсов между Windows и Linux.

    0_1589909094.png

    Более того, для Linux предоставлена библиотека libd3d12.so, предоставляющая полноценный графический API Direct3D 12. Библиотека libd3d12.so собрана из того же кода, что и родная Windows-реализация Direct3D 12 и по функциональности полностью аналогична библиотеке d3d12.dll. В форме библиотеки DxCore (libdxcore.so) также предоставлен упрощённый вариант API DXGI (DirectX Graphics Infrastructure). Библиотеки libd3d12.so и libdxcore.so являются проприетарными и поставляются только в бинарных сборках (монтируются в WSL как /usr/lib/wsl/lib), совместимых с Ubuntu, Debian, Fedora, Centos, SUSE и другими дистрибутивами на базе Glibc.

    0_1589909676.png

    Поддержка OpenGL в Mesa обеспечена через прослойку, транслирующую вызовы в API DirectX 12. Метод реализации API Vulkan пока на стадии планирования.

    0_1589910074.png
  • Добавлена поддержка компьютерных вычислений на видеокартах, которая позволяет использовать аппаратное ускорение для таких задач как машинное обучение. На первом этапе в WSL-окружениях будет обеспечена поддержка CUDA и DirectML, работающим поверх API D3D12 (например, в Linux-окружении можно запустить TensorFlow с бэкендом для DirectML). Поддержка OpenCL возможна через прослойку, выполняющую маппинг вызовов в API DirectX 12. 0_1589909729.png
  • Установка WSL вскоре будет поддерживаться с помощью простой команды "wsl.exe --install". 0_1589910925.png
  • Начиная с майского обновления Windows 10 при первой установке Linux-окружения по умолчанию будет использоваться прослойка WSL2. Для явного выбора версии WSL следует использовать команду "wsl.exe --set-version дистрибутив версия_WSL". WSL2 отличается поставкой полноценного ядра Linux вместо эмулятора, транслирующего системные вызовы Linux в системные вызовы Windows.

    Окружение WSL2 выполняется в отдельном дисковом образе (VHD) c файловой системой ext4 и виртуальным сетевым адаптером. Ядро Linux в WSL2 не будет входить в установочный образ Windows, а будет загружаться динамически и поддерживаться в актуальном виде силами Windows по аналогии с тем, как устанавливаются и обновляются графические драйверы. Для установки и обновления ядра будет применяться штатный механизм Windows Update.

    Предлагаемое для WSL2 ядро основано на выпуске ядра Linux 4.19, который выполняется в окружении Windows при помощи виртуальной машины, уже задействованной в Azure. Применяемые в ядре специфичные для WSL2 патчи включают оптимизации для сокращения времени запуска ядра, уменьшения потребления памяти, возвращения Windows освобождённой Linux-процессами памяти, оставления в ядре минимально необходимого набора драйверов и подсистем.



Источник: http://www.opennet.ru/opennews/art.shtml?num=52985

©  OpenNet