Вопрос

Серия v4 gcc компилятор может автоматически векторизовать циклы, используя SIMD процессор на некоторых современных процессорах, таких как чипы AMD Athlon или Intel Pentium/Core.Как это делается?

Это было полезно?

Решение

Оригинальная страница предлагает подробную информацию о том, как GCC для автоматической векторизации циклов, включая несколько примеров:

http://gcc.gnu.org/projects/tree-ssa/vectorization.html

Хотя примеры великолепны, оказывается, что синтаксис вызова этих опций в последней версии GCC, похоже, немного изменился, см. сейчас:

Таким образом, следующие варианты будут работать для чипов x86 с SSE2, предоставляя журнал петель, которые были векторизованы:

gcc -O2 -ftree-vectorize -msse2 -ftree-vectorizer-verbose=5

Обратите внимание, что -MSSE также является возможностью, но он будет векторизировать только петли, используя поплавки, а не удваивание или INT.

Другие советы

Существует пропуск (промежуточное представление GCC). pass_vectorize.Этот проход включит автоматическую векторизацию на уровне gimple.

Чтобы включить автовекторизацию (GCC V4.4.0), нам необходимо выполнить следующие шаги:

  1. Укажите количество слов в векторе согласно целевой архитектуре.Это можно сделать, определив макрос UNITS_PER_SIMD_WORD.
  2. Возможные векторные режимы обычно необходимо определять в отдельном файле. <target>-modes.def.Этот файл должен находиться в каталоге, где находятся другие файлы, содержащие описания компьютеров.(Согласно сценарию конфигурации.Если вы можете изменить сценарий, вы можете поместить файл в любой каталог, в котором хотите, чтобы он находился).
  3. Режимы, которые следует учитывать при векторизации в соответствии с целевой архитектурой.Например, 4 слова составят вектор, или восемь полуслов составят вектор, или два двойных слова составят вектор.Подробности об этом необходимо указать в <target>-modes.def файл.Например:

    VECTOR_MODES (INT, 8);     /*       V8QI V4HI V2SI /
    VECTOR_MODES (INT, 16);/
    V16QI V8HI V4SI V2DI /
    VECTOR_MODES (FLOAT, 8);/
               V4HF V2SF */

  4. Постройте порт.Векторизацию можно включить с помощью параметров командной строки. -O2 -ftree-vectorize.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top