Инженеры Intel опубликовали в списке рассылки GCC первые патчи, реализующие поддержку архитектуры AI Compute Extensions (ACE). Это кросс-вендорное расширение, разработанное совместно с AMD, призвано стать эволюцией существующих Intel AMX (Advanced Matrix Extensions). Цель ACE — повысить эффективность компиляции и выполнения матричных операций для задач машинного обучения (ML) и искусственного интеллекта (AI) на процессорах x86.
01Что такое ACE и чем она отличается от AMX?
ACE (AI Compute Extensions) v1 — это спецификация, утвержденная группой x86 Ecosystem Advisory Group. В отличие от AMX, который является проприетарным решением Intel, ACE позиционируется как открытый стандарт для x86-экосистемы. Архитектура расширяет возможности AVX (Advanced Vector Extensions) и скалярного кода, добавляя специализированные примитивы для матричных вычислений.
Ключевые архитектурные изменения включают:
- Новое состояние регистров: вводятся регистры тайлов (tile) и масштаба блоков (block scale), аналогичные AMX, но с унифицированным интерфейсом.
- Обработка данных: операции, потребляющие входные данные из регистров AVX и оперирующие состоянием регистров ACE.
- Перемещение данных: эффективные операции переноса данных между состоянием ACE и регистрами AVX.
- Управление системой: новые инструкции для управления состоянием ACE на уровне ОС/ядра.
Главное преимущество ACE — тесная интеграция векторов AVX и тайловых регистров ACE. Это позволяет сочетать высокую плотность вычислений тайловой обработки с богатыми возможностями обработки данных AVX, что критично для современных нейросетевых нагрузок.
02Как работает компиляторная поддержка в GCC
Реализация поддержки ACE в GNU Compiler Collection (GCC) базируется на существующем коде для AMX-TILE и элементах AVX-512. Патчи, опубликованные Intel, представляют собой начальный этап (bring-up), который закладывает фундамент для генерации кода, использующего новые инструкции.
Для практиков, интересующихся внутренним устройством, процесс компиляции кода с использованием ACE включает несколько этапов:
- Анализ AST: компилятор идентифицирует паттерны матричных умножений (GEMM) в коде.
- Выбор стратегии: на основе флагов целевой архитектуры (например,
-mace) выбирается путь генерации кода. - Генерация инструкций: преобразование высокоуровневых операций в последовательность инструкций ACE, включающую перемещение данных в тайловые регистры и выполнение вычислений.
Текущие патчи находятся на стадии обсуждения в списке рассылки GCC. Ожидается, что базовая поддержка ACEv1 войдет в стабильный релиз GCC 17, который планируется к выпуску в следующем году.
# Пример предполагаемого флага компиляции для включения ACE
# (синтаксис может измениться до релиза GCC 17)
g++ -O3 -march=core-ultra-gen3 -mace -o ai_model model.cppПараллельно с GCC, поддержка ACE будет добавляться в Clang и другие компиляторы. Для разработчиков это означает необходимость обновления toolchain для получения прироста производительности на новом железе.
03Сравнение: AMX vs ACE
Понимание различий между текущим решением Intel (AMX) и будущим стандартом (ACE) поможет оценить перспективы оптимизации. Ниже приведена сравнительная таблица на основе спецификаций.
| Характеристика | Intel AMX (AMX-BF16/FP32) | Intel/AMD ACE (v1) |
|---|---|---|
| Статус | Проприетарный (Intel) | Открытый стандарт (x86 Ecosystem) |
| Поддержка в GCC | Долгое время (через -mavx512bf16 и др.) |
Начало поддержки (GCC 17+) |
| Интеграция с AVX | Слабая (отдельные регистры) | Тесная (общая шина данных, синхронизация) |
| Целевая нагрузка | Трансформеры, LLM | Универсальные AI/ML, включая гибридные сценарии |
| Совместимость | Только Intel (Core Ultra, Xeon) | Intel и AMD (в перспективе) |
-mace, не будут работать на процессорах, не поддерживающих ACE. Используйте динамическую диспетчеризацию инструкций для обеспечения обратной совместимости.04Практические шаги для разработчиков
Хотя официальная поддержка в GCC 17 еще впереди, разработчики могут начать подготовку кода. Основные рекомендации:
- Используйте современные библиотеки: Библиотеки вроде oneDNN, OpenBLAS и специализированные бэкенды PyTorch/TensorFlow уже начинают внедрять поддержку ACE. Следите за обновлениями этих проектов.
- Профилируйте код: Используйте инструменты вроде
perfили VTune, чтобы выявить узкие места в матричных операциях. ACE даст максимальный прирост именно в узких местах, связанных с GEMM. - Обновляйте Toolchain: Как только GCC 17 будет доступен в ваших дистрибутивах (или через сборку из исходников), обязательно обновите компилятор для получения выгоды от новых оптимизаций.
# Проверка поддержки инструкций в текущем ядре
grep -i avx /proc/cpuinfo
# В будущем появится флаг ace
# grep -i ace /proc/cpuinfo05Кому подойдёт / что запустится
Архитектура ACE ориентирована на следующие сегменты:
- Владельцы нового железа: Процессоры Intel Core Ultra 2-го поколения (Lunar Lake/Arrow Lake) и будущие Xeon с поддержкой ACE. На текущем железе (Sapphire Rapids, Meteor Lake) ACE работать не будет.
- Разработчики AI/ML: Тем, кто пишет кастомные ядра для нейросетей или оптимизирует инференс на x86. ACE позволит эффективнее использовать ресурсы CPU для задач, где GPU недоступен или неэффективен.
- Пользователи Linux: Поддержка в GCC и ядре Linux будет первичной. Windows-поддержка зависит от драйверов Intel и AMD.
Для рядовых пользователей, запускающих готовые модели через Python-скрипты, прирост производительности станет заметен только после обновления библиотек (PyTorch, TensorFlow) и компилятора. Однако для практиков, занимающихся оптимизацией «под капотом», ACE открывает новые возможности для тонкой настройки производительности на x86.
Источник: Phoronix ↗
