Назад
Vx вносить гетерогенную пам'ять і топологію в систему типів
SiTech AI Team3 хв читання

Vx вносить гетерогенную пам'ять і топологію в систему типів

Vx — це мова системного програмування для гетерогенних обчислень, яка перетворює пам'ять CPU, GPU, NPU та акселераторів на частину перевірок типів, з явними перенесеннями та машинно-орієнтованим розміщенням.

Розташування пам'яті є частиною типу

Vx розглядає гетерогенні обчислення як питання рівня мови і не покладається на прозорий runtime для розміщення на акселераторі. Тензор, прикріплений до високопропускної пам'яті NPU, має інший тип, ніж той самий тензор у DRAM хоста, і переміщення між цими розташуваннями вимагає явного перенесення. На уніфікованій пам'яті Apple це перенесення компілюється майже ні у що, але в джервсе все одно зазначено, що локальність даних має перевірятися без профілювання бінарного файлу.

Компілятор перевіряє неправильний доступ із хоста до покажчиків пристрою, вхідні прикріплені NPU значення у хост-вираженнях та такі розміщення, робочі набори яких перевищують простір цільової пам'яті. Інші правила включають буфери, прочитані до видимості асинхронного перенесення, помилки використання після перенесення, перенесення без явного шляху між просторами пам'яті та диференціацію в регіонах без визначеного ад'юнгата. Контракти видимості асинхронного перенесення обробляє SMT-прувер.

Машинні файли визначають обмеження обладнання

Замість жорсткого вбудовування моделі вартості Vx читає машинний файл, який описує ієрархію пам'яті та взаємозв'язки конкретної частини. Компілятор використовує цю інформацію для дозволу або відхилення розміщень. Перетворення одиниць використовує точні цілі числа: префікси SI десяткові, а префікси IEC — двійкові, що зберігає значення таких величин, як GB та GiB.

Репозиторій включає машинні файли для H100, H200, B200, A100, MI300X, Apple M4 та багатьох вузлів GPU. Файли вказують на свої джерела та виділяють цифри, які залишаються непідтвердженими.

Паралельний фронтенд і кілька бекендів

У фронтенді, орієнтованому на дані Vx, кожен символ, номінальний тип та мономорфізований варіант представлені плоским 256-бітним ідентифікатором. Система номінальних типів звільняє обов'язкові модулі boxing один від одного для рекурсивних типів, що дозволяє конвеєру компіляції запускати рушій запиту на ядрах без конкуренції за lock. Компіляція проходить плоскими масивами, а не деревами, пройденими покажчиками.

Тестові набори підтверджують, що послідовні та паралельні компонування видають байт-ідентичний MLIR за різних конфігурацій потоків у масштабі бенчмарку. Ця гарантія поширюється на вихід фронтенда; решта обробки належить LLVM. Бекенди включають x86-64 та arm64 CPU, NVIDIA GPU, Apple AMX та ANE, а також віддалені регіони, керовані розподіленим маніфестом. Виробники можуть розширювати Vx додатковими проходами MLIR замість патчингу компілятора.

Створено для фіксованих, чутливих до продуктивності навантажень

Vx призначений для програмного забезпечення, яке має бути правильним і швидким на різних видах кремнію. Проєкт визнає, що його ahead-of-time, орієнтований на дані та статично розбитий на регіони дизайн менш підходящий для робочих навантажень, які змінюють архітектуру, перевіряють форми тензорів і динамічно подовжуються, поки ці рішення ще змінюються. Варіанти його інсталяції включають macOS на Apple Silicon та Linux x86_64, а супровідні посібники охоплюють мову, топології, розміщення пам'яті та машинні файли.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.