MLIR
Зачем это важно? Современные чипы — это и процессоры, и видеокарты, и нейроускорители, и FPGA. Писать под каждое устройство вручную сложно. MLIR позволяет описывать особенности железа на нужном уровне и переиспользовать общие оптимизации. Особенно это ценно для машинного обучения, где модели запускают на самых разных устройствах.
Интуитивно это похоже на конструктор из кирпичиков разного размера. Крупные — высокоуровневые операции, мелкие — машинные инструкции. Компилятор может взять крупный кирпич, разбить на средние, затем на мелкие, и на каждом шаге применять удобные оптимизации. При этом MLIR не привязан к одному языку: он даёт набор готовых блоков и инструменты для их превращения друг в друга.
Пример: фреймворк TensorFlow использует MLIR, чтобы одна и та же нейросеть работала и на серверных процессорах, и в телефоне. Модель описывают один раз, а MLIR адаптирует её под устройство: где-то включает векторные инструкции, где-то — операции ускорителя.
Итог: MLIR — это гибкий мост между кодом и разным железом, делающий компиляторы проще, а программы быстрее и переносимее.
Поделиться