
Как запустить 3D-приложение на сервере без GPU: от SwiftShader до WARP
k0mar0v 54 минуты назад Как запустить 3D-приложение на сервере без GPU: от SwiftShader до WARP 6 мин 1.8K Блог компании МТС Компьютерное железо Старое железо Софт Гаджеты В очередной раз перебирая свой ретрокомпьютер, о...
Вот важная новость с фронта ИИ: k0mar0v 54 минуты назад Как запустить 3D-приложение на сервере без GPU: от SwiftShader до WARP 6 мин 1. 8K Блог компании МТС Компьютерное железо Старое железо Софт Гаджеты В очередной раз перебирая свой ретрокомпьютер, о котором уже рассказывал на Хабре, поменял видеокарту и запустил Quake 2. Решив сравнить картинку, выставил Software rendering, и мне в голову пришла мысль: жаль, что нельзя так сделать в современных играх… Или можно?
Короткое гугление дало исчерпывающий ответ — легко. Да и инструменты для этого общедоступны. Ниже — четверка самых популярных программных решений, позволяющих запускать 3D-приложения, даже если на сервере нет ни одного GPU с поддержкой OpenGL или Vulkan.
Технические детали
Что вообще значит «приложение требует GPU» Начну с очень грубого обобщения: сердцем любого устройства, занимающегося выводом 3D-графики, является растеризатор. В его задачи входит проецирование подготовленной 2D-геометрии в растровое отображение — сетку плоских фрагментов, готовых к дальнейшему шейдингу и выводу на экран. Ранние трехмерные ускорители вроде 3dfx Voodoo 2 фактически только это и делали, забирая часть вычислительной нагрузки на себя.
Саму геометрию и трансформацию по-прежнему считал CPU. До появления таких ускорителей создателям игр приходилось писать собственные растеризаторы, которые работали на CPU. Возможность запихнуть эту часть в кремний и дать к ней доступ разработчикам, существенно упростила жизнь, став причиной появления целого зоопарка разных API, вроде Glide, DirectX, Vulkan и тому подобным.
С тех пор растеризатор во всех современных настольных и мобильных архитектурах реализован аппаратно. Хотя были и неудачные эксперименты — вроде GPGPU Intel Larrabee, который выполнял растеризацию исключительно программно. Время наглядно продемонстрировало, что такой подход нежизнеспособен и стоит оставить все как есть.
Отраслевые последствия
В сухом остатке: когда приложению требуется GPU — ему нужен не доступ к железу, а лишь возможность взаимодействия с графическим API. Если на вызов поступил корректный ответ, то по большому счету нет разницы, кто ответил — железный или софтовый драйвер. Последний же может спокойно работать на CPU, пускай и значительно медленнее.
Почему серверы часто живут без GPUДля классической серверной модели отсутствие видеокарты — это базовая норма. Нет, разумеется, какую-то простую картинку он способен выдать — в BMC/AST-чипах есть примитивный видеовыход, чтобы показать BIOS/UEFI, дать отработать установщику операционной системы или отобразить консоль восстановления. Но вот запустить там какой-нибудь Blender или WebGL становится проблемой.
Типичная виртуальная машина способна переваривать десятки тысяч подключений, работать базой данных и веб-сервером, но при этом потеряться, когда софт спросит: «А где у нас тут OpenGL? »Причина проста — раньше серверные приложения редко хотели графику, а дискретный GPU был лишней точкой отказа и дополнительным расходом электроэнергии.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





