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

1086
719016

Я хотел бы знать, когда было изменено ядро ​​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». В целом, если запущено скомпилированное программное обеспечение, оно обычно зависит от компилятора, а не от ядра Linux. OTOH, если вы смотрите на тесты RAID6, вы заботитесь о том, когда поддержка была добавлена ​​в ядро. ChrisInEdmonton 8 лет назад 0

1 ответ на вопрос

1
orange_juice6000

Для запуска приложений с кодом 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.

Похожие вопросы