gpu-unlock: разблокировка FP/BF16 на видеокартах Nvidia 3000
gpu-unlock — это модуль ядра Linux, который разблокирует скорость выдачи инструкций FP/BF16 на видеокартах Nvidia 3000, позволяя им работать на уровне своих профессиональных аналогов.
Проект предоставляет возможность использовать полную мощность видеокарт GA102, GA103, GA104 и GA106, что значительно увеличивает производительность при вычислениях, предлагая прирост до 80% в BF16 GEMM. В отличие от других решений, gpu-unlock не требует ручного патчинга драйверов после обновлений Nvidia, что упрощает процесс для разработчиков и энтузиастов.
Запускается модуль на системах с ядром Linux, и его использование требует определённых навыков в работе с драйверами и модулями ядра. Учти, что проект находится на ранней стадии, поэтому могут быть ограничения или нестабильные результаты на некоторых картах. Не забудь ознакомиться с совместимостью своих устройств в репозитории.
Проект gpu-unlock предназначен для разблокировки инструкции FP/BF16 на видеокартах Nvidia серии 3000, позволяя им работать на уровне производительности своих профессиональных аналогов. Это достигается благодаря использованию специального модуля ядра Linux, который сочетает в себе методы разблокировки вместе с предварительным управлением драйверами в UEFI. Модуль запускает разблокировку, задает соответствующие селекторы скорости и выполняет процедуру FLR (Function Level Reset) до того, как стандартный драйвер Nvidia свяжется с картой. Это позволяет избежать необходимости вручную патчить драйвер каждый раз при выходе новых версий.
Ожидаемым результатом использования этого модуля является удвоение скорости выдачи инструкций FP/BF16 FMA в операции FP32 на видеокартах с архитектурой GA102, GA103, GA104 и GA106. Например, по тестам пользователи сообщили о значительном увеличении производительности в различных задачах, связанных с матричными вычислениями.
Как установить и запустить
Для установки модуля тебе нужно выполнить следующие команды в терминале:
git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make install
После установки необходимо добавить параметр `gpu_unlock.targets=all` в командную строку ядра. Это делается по-разному в зависимости от используемого загрузчика:
- GRUB (Debian/Ubuntu/Mint): добавить его в строку `GRUB_CMDLINE_LINUX_DEFAULT` в файле `/etc/default/grub`, затем выполнить
sudo update-grub. - GRUB (Arch/CachyOS): аналогично, затем выполнить
sudo grub-mkconfig -o /boot/grub/grub.cfg. - Fedora/RHEL: выполнить
sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all". - systemd-boot: добавить в строку
optionsв твоем загрузочном разделе.
Тестированные карты
Модуль поддерживает все видеокарты GeForce, указанные в файле `kernel/gpu_unlock/main.c`. Ниже представлены результаты тестов пользователей:
| Чип | Карта | PCI ID | Результат | Увеличение BF16 GEMM | Отчёты |
|---|---|---|---|---|---|
| GA102 | RTX 3090 Ti | 10de:2203 | Разблокировано | +68–80% | #1 |
| GA102 | RTX 3090 | 10de:2204 | Разблокировано | +25–67% | #5 |
| GA104 | RTX 3070 | 10de:2484 | Разблокировано | +73–81% | #10 |
| GA106 | RTX 3060 12 GB | 10de:2504 | Разблокировано | около +80% | #31 |
Ограничения
Следует учитывать, что модуль работает только с не привязанными картами GA102, GA103, GA104 и GA106. Если карта уже привязана к драйверу Nvidia или выключена, модуль пропустит её. Также есть ограничения на производительность в зависимости от модели карты и её настроек, таких как лимит по мощности. При использовании функционала "снижение потребления" во время сна происходит сброс параметров скорости, и модуль будет разблокирован повторно при возобновлении работы.
Важно помнить и о том, что модуль должен быть установлен и включен перед загрузкой драйвера Nvidia, иначе его работа будет бесполезной. Для проверки результатов разблокировки можно использовать команды:
journalctl -k -b | grep gpu_unlock
lspci -nnk -s 0000:21:00.0
Лицензия
Проект распространяется под лицензией GPL-2.0, в то время как программное обеспечение от NVIDIA остаётся под своей лицензией.
Открыть на GitHub: Zagitta/gpu-unlock →
RepoRadar