Advanced Vector Extensions (AVX) - это расширение архитектуры набора инструкций x86 для микропроцессоров Intel и AMD.
1 ответ

Оптимальный способ хранения двойных SSE2/AVX/AVX512 как плавающих с использованием встроенных функций

Мне часто нужно использовать double по соображениям точности, но я хочу сохранить результаты как плавающие. Какой оптимальный способ? Я в настоящее время использую: SSE2: _mm_store_sd((double*)dst, _mm_castps_pd(_mm_cvtpd_ps(xmm))); AVX: _mm_storeu_…
18 окт '18 в 09:45
1 ответ

Внедрение Lanczos SSE/AVX

Кто-нибудь есть какие-либо советы о том, как реализовать алгоритм пересчёта (увеличения и уменьшения) изображений Lanczos с использованием SSE/AVX (встроенные функции или сборка)? Я посмотрел на некоторые реализации C, но есть много разветвлений, и …
10 дек '15 в 23:15
0 ответов

Прерывание инструкции AVX2 в Visual Studio 2013

Вот код C++: #include <stdio.h> #include <iostream> #include <immintrin.h> using namespace std; int main(int argc, char* argv[]) { char a[100]; for (int i = 0; i < 32; i++) a[i] = 1; for (int i = 32; i < 64; i++) a[i] = 0; __…
07 янв '15 в 03:16
2 ответа

Использует ли побитовая операция (&, ^. | И т. Д.), Предоставляемая в качестве перегрузки операторов в std::bitset, инструкции AVX или SSE4?

Поскольку это зависит от реализации, единственный ли способ выяснить это - разборка?
05 окт '16 в 22:19
2 ответа

Почему инструкции SSE сохраняют верхние 128-битные регистры YMM?

Кажется, повторяющаяся проблема, что многие процессоры Intel (вплоть до Skylake, если я не ошибаюсь) демонстрируют низкую производительность при смешении инструкций AVX-256 с инструкциями SSE. Согласно документации Intel, это вызвано тем, что инстру…
24 янв '17 в 03:26
1 ответ

Установка TensorFlow из источников, на Windows 10

Я уже установил tenorflow-GPU, и он работает нормально. Теперь я хочу установить tenorflow-gpu из исходного кода, чтобы воспользоваться преимуществами набора команд AVX и SSE4.2-1.0, учитывая мою конфигурацию системы ниже; Процессор: Dual Intel Xeon…
11 май '17 в 13:25
2 ответа

Как сказать gcc, что данные, на которые указывает указатель, всегда будут выровнены?

В моей программе (написанной на простом C) у меня есть структура, в которой хранятся данные, подготовленные для преобразования с помощью векторного (только AVX) двумерного быстрого преобразования Фурье. Структура выглядит так: struct data { double c…
14 сен '17 в 21:38
5 ответов

Транспонировать поплавок 8x8, используя AVX/AVX2

Транспонирование матрицы 8x8 может быть достигнуто путем создания четырех матриц 4x4 и транспонирования каждой из них. Это не хочу, я иду за. В другом вопросе один ответ дал решение, которое потребовало бы только 24 инструкций для матрицы 8x8. Однак…
02 сен '14 в 11:51
1 ответ

Оптимизировать извлечение 64-битного значения из регистра AVX2

Я пытаюсь извлечь 64 бит из регистра __m256i. Пример моей текущей функции извлечения: byte 31 16 15 0 byte_result_vec 000D 000C 000B 000A 000H 000G 000F 000E _mm256_packs_epi32 -> 0D0C 0B0A 0D0C 0B0A 0H0G 0F0E 0H0G 0F0E _mm256_packus_epi16 -> …
13 янв '14 в 00:55
1 ответ

Сдвиги AVX2 (16 бит)

Существуют ли встроенные инструкции для выполнения операций сдвига вправо и влево для (16-разрядных) целочисленных элементов в AVX2? Как следующие примеры: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] --> [16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] а также [1…
22 фев '15 в 23:25
5 ответов

Как определить, поддерживает ли машина Linux инструкции AVX/AVX2?

Я на компьютерах SUSE Linux Enterprise 10/11. Я запускаю свои регрессии на ферму машин с процессорами Intel. Некоторые из моих тестов не пройдены, потому что мои инструменты построены с использованием библиотеки, которая требует поддержки инструкций…
27 май '16 в 09:40
1 ответ

Почему присвоение элементу массива AVX-Vector-wrapper-class-object-array вызывает ошибки нарушения доступа?

Я пытаюсь сделать кое-что векторное и написал оболочку для типа данных m256d из immintrin.h для использования перегруженных операторов. Следующий пример должен дать вам основную идею. Определение класса #include <immintrin.h> using namespace s…
28 мар '12 в 22:13
1 ответ

g++ 6.3, суммирование по Кахану по внутренним признакам avx сериализуется с ключевым словом volatile

Используя avx intrinsics и алгоритм суммирования Кахана, я попробовал это (только часть "сумматора"): void add(const __m256 valuesToAdd) { volatile __m256 y = _mm256_sub_ps(valuesToAdd, accumulatedError); volatile __m256 t = _mm256_add_ps(accumulato…
05 авг '17 в 23:20
2 ответа

Как использовать инструкции Fused Multiply-Add (FMA) с SSE/AVX

Я узнал, что некоторые процессоры Intel/AMD могут выполнять одновременное умножение и добавление с помощью SSE / AVX: FLOPS за цикл для песчаных мостов и скважин SSE2 / AVX / AVX2. Мне нравится знать, как сделать это лучше всего в коде, и я также хо…
10 апр '13 в 18:02
3 ответа

Наборы инструкций SIMD Intel для 2D Matrix

Я разрабатываю высокопроизводительные алгоритмы на основе наборов инструкций Intel (AVX, FMA, ...). Мои алгоритмы (мои ядра) работают довольно хорошо, когда данные хранятся последовательно. Однако теперь я столкнулся с большой проблемой, и я не наше…
24 янв '19 в 11:23
0 ответов

Существует ли версия стандартной математической библиотеки, которая использует инструкции VEX?

У меня есть эта большая библиотека со смесью обычного C++, большим количеством встроенных функций SSE и несколькими незначительными частями сборки. Я достиг точки, где я хотел бы нацелить набор инструкций AVX. Чтобы сделать это, я хотел бы построить…
26 мар '18 в 15:48
1 ответ

Как определить доступность SSE/SSE2/AVX/AVX2/AVX-512/AVX-128-FMA/KCVI во время компиляции?

Я пытаюсь оптимизировать некоторые матричные вычисления, и мне было интересно, можно ли было определить во время компиляции, включен ли SSE / SSE2 / AVX / AVX2 / AVX-512 / AVX-128-FMA / KCVI[1] компилятор? Идеально для GCC и Clang, но я могу справит…
09 мар '15 в 10:23
1 ответ

Эффективно установить для младших 64 битов регистра YMM постоянную

Как я могу установить младшие 64 бита регистра YMM на некоторую константу за наименьшее количество тактов? Я знаю различные способы, которыми я могу сделать это, используя инструкции SSE, а также инструкцию AVX VBROADCASTSD, но я не уверен, какой ме…
03 мар '12 в 12:35
1 ответ

Какое значение имеет _mm256_shuffle_epi8 в этой реализации Game of Life?

Делая домашнее задание по реализации "Игры жизни" Конвея с использованием встроенных функций, я нашел рабочий код, но не могу понять его основную часть. Эта реализация сначала вычисляет количество живых соседей для каждой продажи и сохраняет результ…
06 фев '19 в 10:32
5 ответов

Быстрая реализация экспоненциальной функции с использованием AVX

Я ищу эффективное (быстрое) приближение экспоненциальной функции, работающей с элементами AVX (плавающая точка одинарной точности). А именно - __m256 _mm256_exp_ps( __m256 x ) без SVML. Относительная точность должна быть примерно такой: ~1e-6 или ~2…
19 фев '18 в 10:08