Найден способ быстрого определения наличия поддержки AVX-512 у Intel Alder Lake

Весной закончилась баталия между Intel и производителями материнских плат, в основе которой находилась возможность включения инструкций AVX-512 у настольных процессоров семейства Alder Lake. Напоминаем, что изначально высокопроизводительные ядра поддерживали AVX-512, однако потом Intel решила отключить поддержку, но производители материнских плат использовали различные обходы ограничений до тех пор, пока компания не начала выключать поддержку на аппаратном уровне.

Если вам все же нужен представитель Alder Lake с поддержкой инструкций AVX-512, то специально для вас оверклокер Luumi выпустил видеоматериал с объяснением того, как очень быстро найти процессор с поддержкой AVX-512. Весь секрет кроется в логотипе Intel на термораспредлительной крышечке: если он квадратный, то процессор не поддерживает AVX-512, а если он закруглен, то поддерживает.

«Похоже, что почти все процессоры Alder Lake, выпущенные в 2022 году, не имеют поддержки AVX-512, поэтому вам лучше искать процессор 2021 года. К счастью для нас, Intel оставила отметку, чтобы определить, поддерживает ли процессор AVX-512 или нет. Это можно понять, взглянув на крышечку. Каждый процессор с маркировкой в виде гало/круга сверху слова “Intel” на крышечке имеет поддержку AVX-512, а все процессоры с прямоугольной/квадратной маркировкой не оснащаются AVX-512».
Запуск игры без AVX — что это такое?

Приветствую ребята))
Коротко ответ: запуск игры на процессоре без поддержки AVX-инструкций. Обычно это старые процессоры, в итоге игра может работать, но возможно с меньшей производительностью.
Все современные процессоры поддерживают AVX. Вот например старый i7 2600K (1155 сокет) уже поддерживает AVX, но первую версию, а i7 860 (1156 сокет) — вообще не поддерживает, но правда он еще старее чем i7 2600K. Кстати легендарный процессор Q9650 (775 сокет) разумеется и близко не знает про AVX.
AVX — что это такое? Еще есть AVX2. Это улучшенные версии старых инструкций SSE. Простыми словами — это специальные инструкции, которые помогают процессору работать быстрее с некоторыми вычислениями. Они созданы как для процов Интел, так и для АМД. AVX расшифровывается как Advanced Vector Extensions.
Ну а что делают инструкции AVX? Все просто — процессор без поддержки AVX за один такт сможет сложить 1 пару чисел, а с поддержкой — уже 10. Однако это все нужно не так часто, как нам кажется, по большей части эффект заметен в профессиональных программах, а в играх не так заметно. Возможно современные игры уже больше могут использовать AVX.
Как узнать — поддерживает ли процессор AVX? Очень просто — скачайте бесплатную утилиту CPU-Z, она маленькая, неприхотливая, запустите ее и посмотрите какие инструкции поддерживает ваш проц:

Вот выше на картинке — проц i5 7400, вполне современный, как видим он поддерживает и просто AVX и более новую версию AVX2. Впрочем ничего удивительного — i5 7400 это седьмое поколение, а это 2017 год.
Надеюсь данная информация оказалась полезной. Удачи и добра, до новых встреч друзья!
Исправлено: Ваш процессор поддерживает инструкции, что этот двоичный файл TensorFlow не был скомпилирован для использования AVX2
Advanced Vector Extensions ( AVX, также известный как Sandy Bridge New Extensions ) — это расширения архитектуры набора команд x86 для микропроцессоров от Intel и AMD, предложенные Intel в марте 2008 года и впервые поддерживаемые Intel с выпуском процессора Sandy Bridge в первом квартале 2011 года и позже. AMD выпустит процессор Bulldozer в третьем квартале 2011 года. AVX предоставляет новые функции, новые инструкции и новую схему кодирования.

Предупреждение отображается в cmd
Это предупреждающее сообщение распечатывается общей библиотекой TensorFlow. Как указано в сообщении, общая библиотека не содержит инструкций, которые ваш процессор может использовать.
Что вызывает это предупреждение?
После TensorFlow 1.6 двоичные файлы теперь используют инструкции AVX, которые могут больше не работать на старых процессорах. Таким образом, старые процессоры не смогут запускать AVX, в то время как для более новых ЦП пользователь должен построить тензорный поток из источника для своего ЦП. Ниже приведена вся информация, которую вам нужно знать об этом конкретном предупреждении. Также есть способ избавления от этого предупреждения для дальнейшего использования.
Что делает AVX?
В частности, AVX представил FMA (Fused multiply-add); которая является операцией умножения-сложения с плавающей точкой, и эта операция выполняется за один шаг. Это помогает ускорить многие операции без каких-либо проблем. Это делает вычисления алгебры более быстрыми и простыми в использовании, а также точечное произведение, умножение матриц, свертку и т. Д. И это все наиболее используемые и основные операции для любого обучения машинному обучению. Процессоры, которые поддерживают AVX и FMA, будут намного быстрее, чем старые. Но в предупреждении говорится, что ваш процессор поддерживает AVX, так что это хороший момент.

Технология Intel AVX
Почему он не используется по умолчанию?
Это связано с тем, что дистрибутив по умолчанию TensorFlow создается без расширений ЦП. Из-за расширений ЦП указываются AVX, AVX2, FMA и т. Д. Инструкции, которые вызывают эту проблему, не включены по умолчанию в доступных сборках по умолчанию. Причины, по которым они не включены, состоят в том, чтобы сделать это более совместимым с максимально возможным количеством процессоров. Также, чтобы сравнить эти расширения, они гораздо медленнее в процессоре, чем в графическом процессоре. Процессор используется в маломасштабном машинном обучении, в то время как использование ГПУ ожидается, когда он используется для обучения в среднем или крупномасштабном машинном обучении.
Исправление Предупреждение!
Эти предупреждения — просто сообщения. Целью этих предупреждений является информирование вас о встроенном TensorFlow из источника. Когда вы создаете TensorFlow из исходного кода, он может быть быстрее на машине. Так что все эти предупреждения говорят вам о сборке TensorFlow из исходного кода.
Если на вашем компьютере установлен графический процессор, вы можете игнорировать эти предупреждения от поддержки AVX. Потому что самые дорогие будут отправлены на устройстве с графическим процессором. И если вы хотите больше не видеть эту ошибку, вы можете просто проигнорировать ее, добавив:
импортировать модуль ОС в основной программный код, а также установить для него объект отображения
# Для отключения импорта предупреждений os os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'
Но если вы работаете в Unix, используйте команду export в оболочке bash
экспортировать TF_CPP_MIN_LOG_LEVEL = 2
Но если у вас нет графического процессора и вы хотите максимально использовать свой процессор, вам следует собрать TensorFlow из источника, оптимизированного для вашего процессора, с включенными здесь AVX, AVX2 и FMA.
Включение поддержки Windows 7 для Intel AVX
Intel ? Advanced Vector Extensions (AVX) ? — это 256-разрядное расширение вектора SIMD с плавающей запятой в архитектуре Intel. Он включает расширения для наборов инструкций и регистров.
Корпорация Майкрософт разработала некоторые усовершенствования API, такие как функции XState, которые позволяют приложениям получать доступ к расширенной информации о функциях процессора и состоянии, включая AVX, и управлять ими.
Сценарии использования
Существует три общих уровня потенциального воздействия.
Уровень 1. Приложения, которые напрямую не используют Intel AVX, не увидят никакого влияния на их функциональность, даже если они вызывают библиотеки или используют компиляторы, которые косвенно используют или создают расширения Intel AVX. Это, безусловно, большинство приложений.
Уровень 2. Расширенные приложения, которые явно используют набор инструкций Intel AVX, смогут получать доступ к содержимому регистрации AVX и изменять их при возникновении аппаратного исключения. В эту категорию будет попадать очень небольшое число приложений, так как это подразумевает глубокое знание потока инструкций, выполняемого во время исключения, например приложений с разделами, написанными на языке ассемблера, или тех, которые создают машинный код во время выполнения (например, среды выполнения управляемого кода с JIT-компиляцией).
Уровень 3. Приложения-отладчики смогут получать доступ к состоянию AVX в отлаживаемом приложении и управлять им.
Использование возможностей функций
Уровень 1. Для использования Intel AVX приложениями не требуется никаких действий.
Уровень 2. Приложения в этой категории могут получать доступ к состоянию AVX во время исключения и управлять ими из своих фильтров исключений. После получения базового контекста процессора с помощью GetExceptionInformation фильтры должны:
1. Проверьте значение флага CONTEXT_XSTATE . Этот флаг указывает на наличие хотя бы одного компонента XState в контексте.
2. В этом случае вызовите Метод GetXStateFeaturesMask и проверьте значение флага XSTATE_AVX в возвращенной маске. Это указывает на наличие состояния AVX в контексте.
3. Вызовите Метод LocateXStateFeature , чтобы получить фактическое расположение, в котором хранится состояние AVX.
Уровень 3. Нет необходимости обновлять существующие приложения отладчика, если они не хотят получать доступ к регистрам Intel AVX:
1. Чтобы определить, включен ли AVX, отладчик должен использовать:
- GetEnabledXStateFeatures, чтобы получить маску включенных функций XState на процессорах x86 или x64, чтобы определить, какие функции присутствуют и включены в системе, прежде чем использовать функцию процессора XState или пытаться управлять контекстами XState
2. Если avx присутствует и вы хотите получить состояние AVX и управлять им из отлаживаемого приложения (например, GetThreadContext и SetThreadContext), отладчик должен использовать:
- Функция InitializeContext для инициализации структуры контекста внутри буфера с необходимым размером и выравниванием
- Функция CopyContext для копирования структуры исходного контекста (включая любой XState) в инициализированную структуру контекста назначения
3. Чтобы проверить, задать и найти состояние AVX в контексте процессора, отладчик должен использовать:
- LocateXStateFeature для получения указателя на состояние процессора для отдельного компонента XState в структуре контекста
- GetXStateFeaturesMask, чтобы вернуть маску функций XState, заданных в структуре контекста
- SetXStateFeaturesMask, чтобы задать маску функций XState, заданных в структуре контекста
Ссылки на другие ресурсы
- Сведения о функциях XState в Windows SDK см. в разделе Отладка функций.
- Общие сведения о инструкциях и возможностях Intel AVX см. в статье Intel AVX: новые границы в улучшении производительности и энергоэффективности.