Задать вопрос
@Tamul

Можно ли запустить Linux ТОЛЬКО на видеокарте?

Возможно ли теоретически портировать ядро таким образом, чтобы оно работало на одном лишь видеочипе почти без остальных компонентов ПК?
В видеокартах тьюринг-полное ядро, доступ любого ядра к любой ячейке памяти (хотя и с разной задержкой), свой микрокод, своя ПЗУ с BIOS. Этого разве не достаточно, чтобы запустить достаточно тяжёлую ОС на видеокарте, вообще вынутой из компа, на которую подаётся только питание? Связь с внешним миром через какой-нибудь I2C, по которому карточка всё равно общается с монитором, или через PCI-E, если получится запустить его в режиме хоста.
На linux.org.ru обсуждали в 2008, но особо ответ не сформулировали.
Может есть какие-то ограничения запуску ОС типа сложности хранить исполняемый код в ОЗУ или отсутствия фич процессора, которые есть в ЦПУ общего назначения уже лет 30, но в видеочипах просто не нужны?
И если получится с кучей грязных хаков запустить там ядро Linux - то смогут ли работать там специфически скомпилированные под эту архитектуру приложения без существенного переписывания их кода?

Не ожидаю, что в ответе будет чёткий алгоритм, как это провернуть, достаточно чего-то вроде "возможно, но тебе потребуется 50 программистов и пару лет на исследование".
  • Вопрос задан
  • 2311 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 5
@rPman
Да возможно - например виртуализация! Пилите на шейдерных процессорах виртуальную машину, а уже на ней, размещая оперативную память и регистры в gpu ram, запускаете что угодно.

Но это не имеет никакого смысла потому что не даст высокой производительности в общем случае. Шейдерный процессор имеет небольшую скорость (вся фича в их количестве) и обладает кучей ограничений. А еще - размер кода, который можно загрузить в видеокарту как код шейдеров - ограничен очень небольшим размером (не смог найти данные про современное железо но лимит очень небольшой, считанные десятки тысяч опкодов или мегабайты) при превышении которого код подгружается из системной памяти - сильно медленно. В gpgpu вообще много специфических ограничений, при превышении которых скорость падает на порядки, и с каждым производителем gpu свои особенности.

И 'нет' - код не может быть запущен только на gpu, нужен контроль со стороны центрального процессора, для взаимодействия и управления.
Ответ написан
Комментировать
CityCat4
@CityCat4
Дома с переломом ноги
Да нет, в ответе будет вопрос "Кому и зачем может быть это надо - проделать такой обьем работы?" Вот есть тьюринг-полный язык brainfuck - много знаете программ, написанных на нем?
Ответ написан
@acwartz
Тут должна быть ваша реклама.
Важно понимать почему его нет. Банально дело в разделение труда и кооперации.

CPU берет на себя всю работу по исполнению программного кода и не лезет в графику, имеет собственное охлаждение, шину электропитания и оперативную память.

GPU берет на себя всю работу по обработке графики и вывода изображения, имеет своё охлаждение и шину электропитания и даже оперативную память.

В сумме каждый занят своим делом и не ждет другого.
ПО может передавать вычисления с GPU на CPU, например nVidea может отравить вычисления физики Phys-X когда тот ничем не занят.

Следовательно ответ: возможно, но никто поддержкой этого заниматься не будет т.к. CPU всегда есть и он занят своим делом.
Ответ написан
Комментировать
@algiraid
Предположим, это возможно.
Вы запустили ос. Что дальше? К видеокарте не клавомыш ни есть не подключить. То есть надо собирать дополнительное железо. Полностью вручную, на рынке такого нет. Для этого железа надо писать дрова. Дрова надо включить в состав ядра. И так далее.
Стоит ли это таких усилий, с учётом того, что можно взять уже готовое нормальное решение?
Ответ написан
Комментировать
@Mas_Hakim
Старая тема, отвечу тут, вдруг кто то интересовался тоже как и я.

Сразу напишу ответ на вопросы "Зачем?"

* Видеокарты несвежих моделей - это по сути весовой товар, можно купить много и почти бесплатно в пересчете на юнит.
* Потенциально GPU - это девайс на который можно установить встраиваемую систему, она там и установлена.
* Кластер из 20 видеокарт - это серьёзное оружие. При решении проблемы ограничений на перепрошивку от производителей - можно устроить и свечной заводик средних размеров - бизнес идея что тут скажешь.
Гипотеза
Можно ли запустить embedded Unix на видеокарте AMD как автономное устройство, без CPU, с поддержкой MPI и TCP/IP?
Основные тезисы:

  • Видеокарта AMD содержит процессор MP1 (Management Processor), который управляет GPU и может выполнять код.
  • Если заменить или модифицировать прошивку MP1, можно использовать его как основной CPU для запуска компактного Unix-ядра.
  • VRAM можно использовать как RAM, чтобы загружать и выполнять код.
  • PCIe можно использовать как транспорт для TCP/IP, реализовав сетевой стек через DMA.
  • MPI можно запустить на этом стеке, чтобы использовать видеокарты в распределённых вычислениях без традиционного CPU.

Технические моменты :
MP1 загружает подписанную AMD-прошивку → надо обойти Secure Boot.
Отсутствие стандартного сетевого интерфейса → нужно использовать PCIe-DMA как транспорт.
VRAM не предназначена для работы как RAM → нужно модифицировать MMU MP1.
Неизвестно, поддерживает ли MP1 полный Linux-стек → нужно реверсить микрокод.
Как проверить эту гипотезу?

  • Сделать дамп SPI Flash с MP1 и попытаться разобрать бинарник. Дизассемблинг - классика.
  • Найти способ отключить Secure Boot (например, через уязвимость в загрузчике).
  • Попробовать загрузить кастомный код в MP1 и выполнить его
  • Реализовать TCP/IP поверх PCIe-DMA и протестировать передачу данных.

Вывод:
Если удастся взломать MP1 и заставить его загружать Unix, то видеокарта AMD сможет работать как автономный вычислительный узел без CPU.
Что нужно для этого?

* Если быть реалистом - нужен доступ к boot-loader GPU и одноклассник - инсайдер, т.е. сотрудник AMD короче. Ещё - AMD отладчик прошивок хотя бы. Плюс несколько видеокарт для опытов, и какой - никакой стенд для тестов (просто комп с установленным софтом и свободным PCIe)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы