Описание тега auto-vectorization
3
ответа
Почему gve autovectorization не работает на матрице свертки больше, чем 3x3?
Я реализовал следующую программу для матрицы свертки #include <stdio.h> #include <time.h> #define NUM_LOOP 1000 #define N 128 //input or output dimention 1 #define M N //input or output dimention 2 #define P 5 //convolution matrix diment…
04 дек '16 в 23:04
2
ответа
256-битная векторизация через OpenMP SIMD предотвращает оптимизацию компилятора (скажем, встроенная функция)?
Рассмотрим следующий игрушечный пример, где A является n x 2 Матрица хранится в главном порядке столбца, и я хочу вычислить сумму столбца. sum_0 вычисляет только сумму 1-го столбца, а sum_1 делает 2-й столбец, а также. Это действительно искусственны…
03 июл '18 в 10:24
1
ответ
Автоматическая векторизация с индексом по модулю?
Я пытаюсь заставить clang++ автоматически векторизовать простой цикл шифрования, который делает что-то вроде этого: for(int i = 0; i < sz; ++i) { dst[i] = src[i] ^ key[i] } если dst, src а также key одинаковой длины, у компилятора нет проблем с в…
18 янв '16 в 18:15
1
ответ
Trivial Loop не векторизован gcc 4.8.5
Я пытаюсь узнать больше об автоматической векторизации в GCC. В моем проекте я должен использовать gcc 4.8.5, и у меня есть несколько циклов, которые я вижу, которые не векторизованы. Таким образом, я создал небольшой пример, чтобы играть и понять, …
01 ноя '18 в 15:39
0
ответов
Почему оптимизация O3 не улучшает производительность при использовании типа с плавающей запятой?
Я составил соответствующий C реализация двух float а также int программа умножения матриц, когда я компилирую их в O2 почти все то же самое, но когда я использую O3 признак использования возможности автоматической векторизации, оба они приводят к ра…
04 май '16 в 06:35
1
ответ
Почему начальная загрузка векторизации из выровненного std::array является скалярной? (Г ++/ лязг ++)
У меня проблемы с пониманием того, что мешает компиляторам использовать начальную векторную загрузку при чтении данных из std:: array. Я знаю, что gcc может выдавать отладочную информацию с помощью -fopt-info-vec-*. В подробном журнале я не могу най…
24 дек '16 в 06:39
0
ответов
Компилятор Swift автоматически векторизует циклы как оптимизацию?
Я беру класс по параллельным / распределенным вычислениям и мне было интересно, выполняет ли компилятор Swift автоматическую векторизацию для оптимизации циклов. Я понимаю, что LLVM выполняет много (все?) Оптимизаций. Я нашел эту страницу, которая д…
25 янв '18 в 01:18
0
ответов
clang: распечатать текущий шаблон в сообщении об ошибке
У меня есть код с #pragma clang loop vectorize(enable), что обеспечивает векторизацию. Для некоторых типов эта векторизация невозможна - пример: #include <string> #include <vector> template <typename T> void double_entries(std::vec…
19 окт '18 в 17:02
1
ответ
Отключить автоматическую векторизацию определенных циклов в функции в GCC
Я хочу отключить автоматическую векторизацию для определенных циклов в функции. Как я могу сделать это с GCC? Я знаю, что могу отключить автоматическую векторизацию для всей функции с __attribute__((optimize("no-tree-vectorize"))) но как мне сделать…
16 май '14 в 13:28
2
ответа
Почему gcc -O3 автоматически векторизует факториал? Что много лишних инструкций выглядит хуже
Вот очень простая факториальная функция. int factorial(int num) { if (num == 0) return 1; return num*factorial(num-1); } Сборка GCC для этой функции на -O2 является разумной. factorial(int): mov eax, 1 test edi, edi je .L1 .L2: imul eax, edi sub edi…
10 июл '18 в 17:32
1
ответ
Массив и автоматическая векторизация указателя в gcc
Я пытаюсь использовать авто-векторизацию с g ++ 5.4 (-ftree-vectorize). Я заметил, что версия массива в коде ниже чего-то заставляет компилятор упустить возможность векторизации во внутреннем цикле, что приводит к значительной разнице в производител…
16 сен '16 в 07:07
2
ответа
Автовекторизация в визуальной студии 2012 для векторов типа Eigen неэффективна
У меня есть std:: vector типов Eigen::vector3d, и когда я компилирую этот код с использованием Microsoft Visual Studio 2012, имеющего флаг /Qvec-report:2 для сообщения подробностей о векторизации. Он показывает, что цикл не векторизован по причине 1…
17 окт '16 в 11:14
1
ответ
Выровненная память QVector(). Data()
Я пишу программу с использованием Qt5, и мне нужно выделить QVector <float> имея его data() указатель на 32 байта выровнен. Есть ли в любом случае я мог бы сделать это без изменения самой библиотеки Qt? Мой код выглядит примерно так: QVector &…
20 авг '15 в 09:28
0
ответов
GCC 6.3.1 не выполняет авто-векторизацию без -ffinite-math-only
Я хотел бы понять, почему GCC не выполняет авто-векторизацию следующего цикла, если я не передаю -ffinite-math-only. Что касается моего понимания и руководства GCC, оптимизация требует -funsafe-math-optimizations Если выбранное аппаратное обеспечени…
24 июл '17 в 10:30
2
ответа
Использование ограничительного ограничителя с массивами переменной длины C99 (VLA)
Я исследую, как различные реализации простых циклов в C99 автоматически векторизуются на основе сигнатуры функции. Вот мой код: /* #define PRAGMA_SIMD _Pragma("simd") */ #define PRAGMA_SIMD #ifdef __INTEL_COMPILER #define ASSUME_ALIGNED(a) __assume_…
17 мар '15 в 00:07
1
ответ
MSVC 2017 поддерживает автоматическую диспетчеризацию процессора?
Я читал на нескольких сайтах, что MSVC может выдавать инструкции AVX, когда используется архитектура SSE2, и обнаруживать время поддержки поддержки AVX. Это правда? Я тестировал различные циклы, которые определенно выиграли бы от поддержки AVX / AVX…
15 апр '18 в 21:30
0
ответов
Включает ли gcc ffast-math векторизацию?
Я сейчас компилирую spec2000 art benchmark, используя следующие 2 флага: -Ofast -m32 -march = родной -Ofast -m32 -march = собственный -fno-tree-vectorize Вторая настройка просто отключить векторизатор. Однако, когда я проверил objdump из двух настро…
30 май '16 в 15:07
0
ответов
Есть ли способ помочь авто-векторизации компилятора испускать арифметику сатурации в LLVM?
У меня есть несколько для циклов, которые делают насыщенные арифметические операции. Например: Реализация насыщенного добавления в моем случае выглядит следующим образом: static void addsat(Vector &R, Vector &A, Vector &B) { int32_t a, b…
13 июн '16 в 01:18
1
ответ
GCC 4.8.2 ошибка авто-векторизации из-за cout
Мой код выглядит следующим образом, и я использую GCC 4.8.2: #include <iostream> #include <stdint.h> #include <sys/time.h> #include <ctime> using namespace std; int main(int argc, char *argv[]) { struct timespec time_start={0…
23 окт '18 в 01:51
5
ответов
SSE избыточен или не рекомендуется?
Просматривая здесь и в интернете, я могу найти много сообщений о современных компиляторах, опережающих SSE во многих реальных ситуациях, и я только что столкнулся с некоторым кодом, который унаследовал, когда я отключал некоторый код SSE, написанный…
27 ноя '15 в 00:23