Отключение всех расширений AVX512 - PullRequest
2 голосов
/ 23 марта 2020

Мне нужно отключить все расширения AVX512 в скомпилированном коде g cc. Причина в том, что Valgrind задыхается от инструкций AVX512. Есть ли способ сделать это с одним флагом?

Я знаю, как отключить каждое расширение отдельно (-mno-avx512f, -mno-avx512pf et c), но это хлопотно, потому что разные версии g cc поддерживают разные их подмножества.

Я использую CMake. Если есть способ автоматизировать флаги с помощью оборудования CMake, это также подойдет мне.

1 Ответ

2 голосов
/ 24 марта 2020

gcc -mno-avx512f также подразумевает отсутствие других расширений AVX512. AVX512F является «основой», и отключение говорит G CC, что машина не декодирует префиксы EVEX.

Аналогично, -mno-avx отключает AVX2, FMA3 и т. Д., Поскольку все они строятся из AVX. (Из-за того, как работает G CC, -mavx512f -mno-avx может даже отключить AVX512F.)


Например, gcc -march=icelake-client -mno-avx512f отклонит встроенные функции для инструкций AVX512DQ или AVX512VL и т. Д., А также не использовать их при авто-векторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...