Вопросы по теме 'auto-vectorization'

Развертывание цикла приращения указателя для автоматической векторизации
Мне было интересно, если развернуть этот цикл: for (int i = 0; i < n; i++) { *p = a[i]*b[i]; p++; } в for (int i = 0; i < n; i+=4) { *(p + 0) = a[i + 0]*b[i + 0]; *(p + 1) = a[i + 1]*b[i + 1]; *(p + 2) = a[i +...
413 просмотров

Испускают ли компиляторы обычно векторные (SIMD) инструкции, когда не говорят об этом явно?
C ++ 17 добавляет расширения для параллелизма в стандартную библиотеку (например, std::sort(std::execution::par_unseq, arr, arr + 1000) , что позволяет выполнять сортировку с использованием нескольких потоков и векторных инструкций). Я заметил,...
1822 просмотров

Почему #pragma omp simd значительно улучшает производительность только в -O2 под компилятором gcc?
Проверьте следующий код: #include <stdio.h> #include <omp.h> #define ARRAY_SIZE (1024) float A[ARRAY_SIZE]; float B[ARRAY_SIZE]; float C[ARRAY_SIZE]; int main(void) { for (int i = 0; i < ARRAY_SIZE; i++) { A[i]...
2166 просмотров

Автовекторизация Java
Я пытаюсь понять, когда JDK будет автоматически векторизоваться. У меня есть следующий набор вопросов (несмотря на гугление, чтение, эксперименты и т.д.). Учитывая простой цикл следующим образом: for(int i=0; size = size(); i < size; i++) {...
527 просмотров
schedule 11.12.2023

Есть ли способ автоматически генерировать инструкции MMX (не SSE) с помощью gcc
Похоже, что gcc с радостью выполнит автоматическую векторизацию простых примеров и выдаст инструкции SSE. Есть ли способ выдавать только инструкции MMX? Например, если я попробую следующий пример на Godbolt: int sumint(int *arr) { int sum...
114 просмотров
schedule 10.07.2023