5 сентября стало известно о новом направлении AMD по использованию Rust в низкоуровневом программном стеке графических процессоров. Сотрудник AMD Харш Менон (Harsh Menon) сообщил о формировании небольшой специализированной команды, задача которой — «push Rust deep into the GPU stack». В качестве направлений он перечислил компиляторы, runtime, firmware, архитектуру GPU и совместное проектирование аппаратного и программного обеспечения.
Объявление подтверждается опубликованной самой AMD вакансией Software Development Engineer — Rust, Compilers, and GPU Systems. В ней компания прямо называет Rust «core technical direction» при разработке системного ПО следующего поколения для GPU. Работы должны охватить компиляторы, runtime, низкоуровневое ПО GPU, прошивки и средства разработки. AMD отдельно подчёркивает: «Rust is not incidental to this role» — язык рассматривается не как вспомогательный инструмент для отдельных утилит.
Одной из целей объявлено превращение Rust в полноправный инженерный язык в соответствующих частях GPU-стека. Речь идёт не только о написании отдельных компонентов, но и об интеграции toolchain, создании библиотек, правил разработки, диагностики, тестирования и способов развёртывания такого кода в production. Разработчик должен заниматься как ближайшими реализациями, так и долгосрочной архитектурой применения Rust на нынешних и будущих платформах AMD.
Особое место отводится компиляторам. В описании обязанностей AMD перечислена практически вся цепочка преобразования программы: rustc → MIR → промежуточные представления и MLIR → LLVM IR → AMDGPU code generation. Планируется разработка проходов анализа и преобразования кода с учётом особенностей исполнения на GPU: отдельных пространств памяти, синхронизации, аппаратных возможностей и специализированных GPU-операций. Это указывает на работы не просто по переносу существующего host-кода на Rust, но и по развитию инфраструктуры, необходимой для использования Rust значительно ближе к исполняемому на GPU коду.
Другим направлением станут интерфейсы между различными уровнями системы. AMD собирается разрабатывать типизированные и пригодные для аудита границы между компилятором, host runtime, кодом GPU, firmware и аппаратурой. Отдельно упоминаются ABI, размещение аргументов, calling conventions, работа linker и loader, ELF и метаданные AMD GPU code objects. Таким образом, ставка делается не только на защиту памяти, обычно ассоциируемую с Rust, но и на уменьшение числа ошибок на границах между компонентами сложного GPU-стека.
В самой вакансии AMD подчёркивает, что memory safety не решает проблему корректности целиком. Для GPU-систем имеют значение конкурентный доступ, порядок выполнения операций, совместимость ABI, поведение устройства и преобразования, выполняемые компилятором. В перечне требуемых областей знаний поэтому фигурируют также анализ программ и formal methods — предполагается формализовать часть предположений, существующих между программным обеспечением и аппаратурой, и проверять их при разработке.
Rust планируют применять и ещё ниже — в средах без полноценной стандартной библиотеки. AMD прямо упоминает разработку или усовершенствование bare-metal и no_std компонентов на Rust, где требуется предсказуемое взаимодействие с аппаратурой, ограниченное состояние и контролируемое поведение при ошибках. В сочетании с отдельно названным firmware это означает, что область эксперимента не ограничивается пользовательскими библиотеками и компиляторами.
Для Linux направление представляет дополнительный интерес из-за структуры программного стека AMD. ROCm распространяется как открытый программный стек для вычислений на GPU и включает средства разработки, API, runtime, компиляторы и взаимодействует с драйвером AMDGPU. В документации ROCm сама AMD описывает современный стек своих ускорителей как взаимозависимый набор из GPU firmware, драйвера AMDGPU и пользовательских компонентов ROCm.
При этом из объявления не следует, что AMD собирается переписывать существующий драйвер Linux amdgpu на Rust. В первоисточниках говорится шире о «low-level GPU software», firmware, runtime и компиляторах, но конкретного плана замены написанных на C частей amdgpu не опубликовано. Поэтому формулировки вроде «AMD переводит Linux-драйвер на Rust» на данном этапе были бы преждевременными.
Не объявлено и то, что весь создаваемый на Rust код обязательно станет открытым. Значительная часть Linux- и ROCm-стека AMD развивается как открытое ПО, однако в новой вакансии речь идёт прежде всего о технической архитектуре и production-разработке, а условия распространения будущих компонентов там не определены.
Таким образом, пока речь идёт не о завершённом продукте или переносе существующего проекта, а о формировании внутри AMD отдельной компетенции по системному Rust для GPU. Судя по перечню задач, компания рассматривает язык сразу на нескольких уровнях — от rustc, MLIR и LLVM до runtime, ABI, firmware и взаимодействия непосредственно с аппаратурой. Насколько далеко Rust в итоге проникнет в открытый Linux/ROCm-стек AMD, станет понятно после появления первых результатов работы новой команды.
>>> Источник












