@Tamul

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

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

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

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

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

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

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

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

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

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

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