LINUX.ORG.RU

AMD создаёт команду для внедрения Rust в GPU-стек — от компиляторов до прошивок

 , , , ,

AMD создаёт команду для внедрения Rust в GPU-стек — от компиляторов до прошивок

0

2

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, станет понятно после появления первых результатов работы новой команды.

>>> Источник

★★★★★

Проверено: cetjs2 ()
Ответ на: комментарий от CrX

я просто вижу весь комплекс конспирологических «аргументов»

И я уверяю, что это банальное клеше/ярлык, так нельзя, ибо для этого нужно продемонстрировать этот «комплекс» и Доказать что он Однозначно указывает на несостоятельность чьей-то точки зрения…

Sm0ke85
()
Ответ на: комментарий от CrX

Кстати, Столлмана тоже за фрика считали, а он оказался во многом прав, потому что многие его предупреждения о технологиях со временем стали обычной реальностью (но в некоторых моментах он все же был, на мой взгляд, слишком категоричен, ну т.е. не без изъянов он вещал свои пророчества, однако общее направление верное вполне).

Sm0ke85
()
Последнее исправление: Sm0ke85 (всего исправлений: 1)
Ответ на: комментарий от Sm0ke85

То определение из учебника - не верно, ну или как минимум не полно.

Как ты пришёл к такому выводу из вышестоящего?

unC0Rr ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.