1

Я хотел бы знать, когда было изменено ядро 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 ответ1

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .