Суть проблемы: программный лимит на кремнии
Потребительские видеокарты NVIDIA поколений Ada Lovelace (RTX 40xx), Ampere (RTX 30xx) и Turing (RTX 20xx) физически оснащены полными блоками Tensor Core. Однако заводская прошивка VBIOS устанавливает специфический fuse-бит (например, 0x0082381c для Ada/Ampere), ограничивающий скорость выполнения инструкций матричного умножения с накоплением в регистры 32-битной точности (FP16/BF16/TF32/FP8 -> FP32).
В стоковой конфигурации эти операции выполняются с половинной скоростью по сравнению с инструкциями FP16->FP16. Это критически замедляет работу многих AI-моделей и научных вычислений, где требуется высокая пропускная способность именно в смешанной точности.
Решение: разблокировка до загрузки ОС
Утилита GPU-Tensor-Unlock-Universal (версия 1.2.3) устраняет это ограничение, изменяя состояние регистров GPU до того, как загрузится основной драйвер операционной системы. Инструмент работает на уровне UEFI (Windows) или через модуль ядра gpu_unlock.ko (Linux), не записывая ничего в SPI-флеш VBIOS, что сохраняет гарантию производителя.
Ключевые особенности реализации:
- Кроссплатформенность: Единый интерфейс для Windows 10/11 и Linux.
- Безопасность: Автоматическая проверка целостности VBIOS (SHA-256, битовые контрольные суммы, дескрипторы Falcon Ucode) перед отключением дисплейного драйвера.
- Автопрофилирование: Скрипт сам определяет PCI ID, подсистему и архитектуру чипа, исключая риск установки неправильного профиля.
Результаты производительности
После активации разблокировки пропускная способность инструкций FMLA32 увеличивается ровно в 2 раза. Ниже приведены сравнительные данные по типам операций, которые становятся доступными в полном объеме:
| Тип операции (PTX) | Архитектура | Статус до разблокировки | Статус после разблокировки |
|---|---|---|---|
| FP16 -> FP32 | Ada / Ampere / Turing | Half Rate (50%) | Full Rate (100%) |
| BF16 -> FP32 | Ada / Ampere | Half Rate (50%) | Full Rate (100%) |
| TF32 -> FP32 | Ada / Ampere | Half Rate (50%) | Full Rate (100%) |
| FP8 E4M3 -> FP32 | Ada | Half Rate (50%) | Full Rate (100%) |
| INT8 -> INT32 | Ada / Ampere / Turing | Half Rate (50%) | Full Rate (100%) |
Интегрированный бенчмарк и верификация
В отличие от предыдущих исследовательских репозиториев, этот проект включает встроенный скрипт tensor_benchmark.py. Он компилирует PTX-ядра на лету, использует случайные входные данные для предотвращения оптимизаций компилятора и сравнивает результаты «ДО» и «ПОСЛЕ» для каждого UUID видеокарты. Это позволяет пользователям получить объективные метрики ускорения без необходимости собирать сторонние инструменты вроде mmapeak.
Как это работает технически
Процесс разблокировки требует перезагрузки в среду UEFI (Windows) или загрузки модуля ядра (Linux). На Windows утилита создает загрузочную USB-флешку с EFI-образом, который выполняется до старта Windows. На Linux используется DKMS-модуль, внедряемый в initramfs. Инструмент поддерживает мультиязычный интерфейс (EN, RU, ZH, HI) и имеет встроенные проверки на случай ошибки пользователя, блокируя запуск несовместимых профилей.
Источник: Github ↗
