Как я могу определить, сколько регистров AVX у моего процессора? - PullRequest
0 голосов
/ 17 июня 2020

В настоящее время я разрабатываю функцию, которая считает интеграл с использованием регистров AVX. Я хочу знать, достаточно ли их на моем компьютере. Как я могу это узнать?

1 Ответ

5 голосов
/ 17 июня 2020

Предполагая, что CPU с AVX вообще (т.е. не Pentium / Celeron, даже последнего поколения):

32-битный режим всегда имеет 8 архитектурных регистров YMM. 32-битный режим в основном устарел для высокопроизводительных вычислений.

64-битный режим имеет 16 регистров YMM, или с AVX512VL, 32, если вы включаете использование 256-битных версий инструкций в кодировке EVEX.

В любом случае они переименовываются в более крупный файл физического регистра (PRF), что позволяет избежать опасностей, связанных с записью после записи и записью после чтения. https://blog.stuffedcow.net/2013/05/measuring-rob-capacity/ содержит некоторую информацию о размере окна выполнения вне очереди, ограниченном размером PRF, а не буфером повторного заказа (ROB).


Вы могли обнаружить 64 -битный режим с #if defined(__x86_64__) на большинстве компиляторов, #if defined(_M_X64) на MSV C.

Определение AVX во время компиляции - __AVX__, AVX512VL - __AVX512VL__. (У обычных процессоров с AVX512 он есть, у Xeon Phi (KNL / KNM) нет; только унаследованный SSE или полноразмерный ZMM AVX512.) Возможно, вы захотите выполнить только обнаружение AVX во время выполнения, а не включать его в качестве базового уровня для всех ваших исходные файлы, тем не менее.

...