Поддержка ядра Linux AVX2

Я хотел бы знать, когда было изменено ядро ​​Linux, чтобы включить полную поддержку наборов инструкций AVX2.

Я протестировал некоторое программное обеспечение с использованием набора инструкций AVX2, который, по утверждению кого-то другого, быстрее работает на компьютере с Linux на 20%, но мои тесты проводились на сервере с поддержкой avx2 в соответствии с /proc/cpuinfo используя ядро: 3.10.0-229.1.2.el7.x86_64

Достаточно ли свежо ядро ​​3.10.0 для полной поддержки AVX2?

PS: перефразируя из комментария: какое ядро ​​будет полностью поддерживать AVX2 для двоичного файла, скомпилированного с новейшей версией GCC, который, вероятно, является лучшим для поддержки AVX2?

1 ответ

Для запуска приложений с кодом avx2 ядро ​​должно правильно обрабатывать сохранение / восстановление состояния процессора при переключении между задачами, это было сделано в 2.6.30 ( https://kernelnewbies.org/Linux_2_6_30). SW также должен содержать (может быть, решение во время компиляции включать его или нет) код avx2 и использовать его (или он может содержать оба и определять время выполнения, но для этого он должен обнаружить, что ваш процессор поддерживает avx2). То, сколько преимуществ приносит avx2, также зависит от процессора (некоторые процессоры поддерживают его, но не получают от него никаких преимуществ по разным причинам. Процессоры Intel в целом выигрывают больше, чем процессоры AMD, и каждое новое поколение получает больше преимуществ).

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

Вы можете проверить это, выполнив такие действия, как dmesg | grep avx2 или чтение файла конфигурации (конфигурацию, используемую для компиляции работающего в данный момент ядра, иногда можно найти в /proc/config.gz) и поиск avx2.

Другие вопросы по тегам