Свързани въпроси 'sse'

SIMD (AVX) сравнение
Какво е името на вътрешния елемент на gcc за сравняване на __m256 и __m256i (AVX набор от инструкции)?
6730 изгледи
schedule 14.09.2022

Добре ли е да се създаде голям масив от AVX/SSE стойности
Паралелизирам определен проблем с динамично програмиране, използвайки инструкции AVX2/SSE. В основната итерация на моето изчисление изчислявам колона в матрица, където всяка клетка е структура от AVX2 регистри ( _m256i ). Използвам стойности от...
967 изгледи
schedule 18.09.2022

msvc 2017 x64 запазване на регистъра
Според https://docs.microsoft.com/ru-ru/cpp/build/x64-software-conventions?view=vs-2017 - xmm6:xmm15 са енергонезависими. Но програмата ми не се срива, ако не запазя xmm6, xmm7. Не извиквам ОС от сборка. Трябва ли да запазя регистрите в този...
166 изгледи

SSE: reinterpret_cast‹__m128*› вместо _mm_load_ps
В процес съм на кодиране на проста функция за навиване в C++, започвайки от най-елементарната навивка с "плъзгащ се прозорец" с обикновени продукти (без FFT неща засега), до SEE, AVX и евентуално OpenCL. Все пак срещнах проблем със SSE. Моят код...
1843 изгледи
schedule 08.10.2022

Как да конвертирате шестнадесетичен float в float в C/C++ с помощта на _mm_extract_ps SSE GCC instrinc функция
Пиша SSE код за 2D конволюция, но SSE документацията е много оскъдна. Изчислявам точков продукт с _mm_dp_ps и използвам _mm_extract_ps, за да получа резултата от точковия продукт, но _mm_extract_ps връща шестнадесетичен, който представлява число с...
2231 изгледи
schedule 17.10.2022

Как да принудя gcc да използва всички SSE (или AVX) регистри?
Опитвам се да напиша някакъв код с интензивни изчисления за цел на Windows x64, със SSE или новите инструкции на AVX, компилиран в GCC 4.5.2 и 4.6.1, MinGW64 (TDM GCC компилация и някои персонализирани компилации). Моите опции за компилатор са -O3...
6967 изгледи
schedule 05.11.2022

Модул 2*Pi с помощта на SSE/SSE2
Все още съм доста нов в използването на SSE и се опитвам да внедря модул от 2*Pi за входове с двойна точност от порядъка 1e8 (резултатът от който ще бъде въведен в някои векторизирани тригонометрични изчисления). Сегашният ми опит за кода се...
1480 изгледи
schedule 19.10.2022

xmm регистър sse x64 стойност вътре
Пиша проект за училище в x64 асемблиране. Използвам компилатор nasm. Знам, че xmm регистрите могат да съхраняват 4 x 32 бита или 2 x 64 бита. Лутах се да разбера как мога да поставя 4 плаващи стойности (32 бита) в xmm1 например. Функцията ми има...
1209 изгледи
schedule 17.11.2022

Може ли да се оптимизира отчитането на съвпаденията на байтове между два низа с помощта на SIMD?
Профилирането предполага, че тази функция тук е истинско препятствие за моето приложение: static inline int countEqualChars(const char* string1, const char* string2, int size) { int r = 0; for (int j = 0; j < size; ++j) { if...
1033 изгледи
schedule 09.11.2023

SSE: реципрочно, ако не е нула
Как мога да взема реципрочната (обратната) стойност на плаващите числа с инструкции за SSE, но само за ненулеви стойности? Фон по-долу: Искам да нормализирам масив от вектори, така че всяко измерение да има една и съща средна стойност. В C...
1797 изгледи
schedule 25.11.2023

Най-бързият начин за хоризонтална векторна сума на SSE (или друга редукция)
Даден е вектор от три (или четири) плувки. Кой е най-бързият начин да ги сумирате? SSE (movaps, shuffle, add, movd) винаги ли е по-бърз от x87? Заслужават ли си инструкциите за хоризонтално добавяне в SSE3? Каква е цената за преминаване към...
35457 изгледи

Как да добавя всеки байт от 8-байтово цяло число?
Уча се как да използвам инструкциите на Intel MMX и SSE във видео приложение. Имам 8-байтова дума и бих искал да добавя всичките 8 байта и да създам едно цяло число като резултат. Простият метод е серия от 7 смени и добавяния, но това е бавно. Кой...
993 изгледи
schedule 20.12.2023

Масив от тип sse: Грешка в сегментирането
днес се опитах да инициализирам масив от sse тип __m128d. За съжаление не се получи - защо? Като цяло невъзможно ли е да се създадат масиви от sse типове (тъй като те са регистрови типове?). Следният код се връща към грешка при присвояването в...
300 изгледи
schedule 29.12.2023

SIMD/SSE: кратък точков продукт и кратка максимална стойност
Опитвам се да оптимизирам точково произведение на два масива в стил c от contant и малък размер и от тип short. Прочетох няколко документации за SIMD intrinsics и много публикации в блогове/статии за оптимизация на точков продукт с помощта на този...
516 изгледи
schedule 11.01.2024

Масивите, инициализирани като `float[10][10]` вече ли са подравнени в паметта за SIMD/SSE?
Трябва да оптимизирам своето матрично умножение, като използвам SIMD/Intel SSE. Даденият примерен код изглежда така: *x = (float*)memalign(16, size * sizeof(float)); Въпреки това използвам C++ и [found that][1] I вместо malloc (преди да...
1041 изгледи
schedule 18.01.2024

Опитвате се да добавите __m128 с помощта на и маска в SSE програмиране
Опитвам се да използвам резултата от операция за сравнение, за да добавя към SSE променлива. Току-що разбрах, че когато използвам операцията _mm_cmplt_ps , ако резултатът е верен, той връща NAN, защото 0xffffffff не може да бъде представен, което не...
796 изгледи
schedule 23.01.2024

Вътрешни SSE: Преобразувайте 32-битови числа с плаваща замък в 8-битови цели числа без ПОДПИС
Използвайки SSE intrinsics, получих вектор от четири 32-битови плаващи числа, фиксирани в диапазона 0-255 и закръглени до най-близкото цяло число. Сега бих искал да запиша тези четири като байтове. Има вътрешен _mm_cvtps_pi8 , който ще...
6026 изгледи
schedule 20.11.2022

Мулт плюс изместване наляво операции с помощта на MMX инструкции за асемблер
Търся да извърша shl(mult(var1,var2),1) операция, където mult умножава var1 и var2 (и двете са 16-битови цели числа със знак), а shl измества наляво аритметично резултата от умножението. Резултатът трябва да бъде наситен, т.е. int32 max или...
254 изгледи
schedule 31.01.2024

Как да сумирам __m256 хоризонтално?
Бих искал хоризонтално да сумирам компонентите на __m256 вектор, като използвам AVX инструкции. В SSE бих могъл да използвам _mm_hadd_ps(xmm,xmm); _mm_hadd_ps(xmm,xmm); за да получите резултата при първия компонент на вектора, но това не...
9533 изгледи
schedule 16.02.2024

_mm_extract_epi8() вътрешен, който приема небуквално цяло число като аргумент
Напоследък използвам SSE intrinsic int _mm_extract_epi8 (__m128i src, const int ndx) , който според препратката „извлича цял байт от опакован елемент от цялочислен масив, избран по индекс“. Точно това искам. Аз обаче определям индекса чрез...
1648 изгледи
schedule 24.02.2024