В WSL2 драйвера Vulkan для Linux у NVIDIA нет: карта отдаётся через /dev/dxg по
протоколу WDDM, нативный libGLX_nvidia про него не знает и перечисляет ноль
устройств, поэтому Container Toolkit нечего подкладывать внутрь и docker падает
с `could not select device driver "nvidia"`.
С /dev/dxg умеет говорить dzn (Dozen) — драйвер Mesa, транслирующий Vulkan в
D3D12. Он положен в образ, и NVIDIA-runtime для этого пути не нужен вовсе: нужны
проброс устройства и монтирование /usr/lib/wsl, где Microsoft держит libd3d12.so.
Правка в решателе одна: флаги инстанса wgpu теперь читаются из окружения
(InstanceFlags::from_build_config().with_env()). Без этого переменная
WGPU_ALLOW_UNDERLYING_NONCOMPLIANT_ADAPTER не действует, а wgpu по умолчанию
МОЛЧА прячет адаптеры, не прошедшие тесты соответствия Vulkan, — под это правило
попадает dzn, и решатель сообщал, что GPU не найден. Поведение по умолчанию не
изменилось: без переменной такие адаптеры по-прежнему скрыты.
База образа сменена с debian:bookworm-slim на archlinux:base: в пакетах Mesa у
Debian и Ubuntu dzn не собирают (проверено по спискам файлов), в Arch он лежит
отдельным пакетом той же версии Mesa, что и на хосте WSL.
Новое:
* docker-compose.wsl.yml — путь через /dev/dxg, с профилем проверок и с build:
на случай, когда доступа к реестру нет;
* bench/parity.py — сверка GPU-пути с CPU в f64 на течениях, где расхождение
f32 и f64 не нарастает. Соответствие dzn вендором не проверено, значит
проверяем сами, а не верим на слово.
Замерено на Intel Iris Xe (та же карта, нативный драйвер против dzn):
* точность: cd 2.39486 против 2.39486, energy_end 5.74813e-05 против
5.74810e-05 — совпадение до 5-6 значащих цифр;
* скорость: плата за трансляцию падает с ростом сетки, 4.2x на 61 тыс. узлов,
1.46x на 461 тыс., 1.30x на 1.84 млн. На 95.1% стоимости кампании сетки
крупнее 600 тыс. узлов, поэтому ожидаемое удорожание — около трети, не в разы.
В калибровку добавлена сетка 1920x960: оценивать кампанию по 240x120 значит
занижать пропускную способность вчетверо. Образ опубликован как
notbigghost/kbc2d:1.1.0 (он же latest), проверен вытягиванием из реестра.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>