Результаты поиска по запросу "sse"

1 ответ

docs.microsoft.com/en-us/windows-hardware/drivers/kernel/...

тоящее время я изучаю программирование на процессоре Intel x86.Может кто-нибудь объяснить мне, в чем разница между MMX и XMM регистром? Я очень смущен с точк...

5 ответов

@ watson1180 аппроксимация рациональной функции, очевидно, медленнее, чем методы ряда Тейлора на современном оборудовании

ужна реализация с открытым исходным кодом (без ограничений по лицензии), функция журнала, что-то с подписью

2 ответа

Как умножить два кватерниона с минимальными инструкциями?

Подумав немного, я придумал следующий код для умножения двух кватернионов с использованием SSE: #include <pmmintrin.h> /* SSE3 intrinsics */ /* multiplication of two quaternions (x, y, z, w) x (a, b, c, d) */ __m128 _mm_cross4_ps(__m128 ...

ТОП публикаций

0 ответов

github.com/WojciechMula/sse-popcount/blob/master/...

множения больших двоичных матриц (10Kx20K) я обычно преобразую матрицы в числа с плавающей запятой и выполняю умножение матрицы с плавающей запятой, так как умножение целочисленной матрицы выполняется довольно медленно (посмотрите ...

0 ответов

Мы вернемся к более простому C-коду для смещенных кадров. Но так как это видеокадры, это довольно редко. Кадры выровнены для байтов sse и буфера, добавленных для переполнения, поэтому это случается редко.

, чтобы оптимизировать некоторый код SSE, который я написал для преобразования YUV в RGB (как плоские, так и упакованные функции YUV). Я использую SSSE3 в данный момент, но если есть полезные функции из более поздних версий SSE, это ...

0 ответов

@IwillnotexistIdonotexist: Хорошо заметили. Я думаю, это означает, что вы можете получить одну широкую запись MMIO для смежных немаскированных элементов или две узкие. Но выполнение одного выровненного 8-байтового атомарного хранилища все же дает атомарность для 4-байтовых половинок, хотя для MMIO это не так. Поэтому я не думаю, что это исключает атомарность для каждого элемента, потому что специфичная для реализации часть может быть только объединением хранилищ элементов в более широкие и все еще атомарные хранилища.

отрим массив какatomic<int32_t> shared_array[], Что делать, если вы хотите SIMD векторизацииfor(...) sum += shared_array[i].load(memory_order_relaxed)?. Или искать в массиве первый ненулевой элемент или обнулять его диапазон? Это, вероятно, ...

1 ответ

Однако будущее неясно, и дело в этом хорошее, но гораздо более общее: кажется, что компиляторы и разработчики в основном не имеют никакой поддержки и не тратят много времени на размышления об этой мета-оптимизации «более высокого уровня», когда вам в основном приходится заранее определите, может ли вся ваша кодовая база (или, по крайней мере, какой-то большой кусок во время выполнения) использовать расширения A, B, C и т. д. Каждое обсуждение небольшой функции теперь должно быть обусловлено предостережением о турбо частотах, и мы не Я даже не говорил о том, как весы скользят с активными ядрами!

ой ассемблер кода Можете ли вы встроить его в C ++ и проверить по SSE4? На скорости Мне бы очень хотелось увидеть, как шагнуло в развитие SSE4. Или его совсем не беспокоит? Давайте проверим (у меня нет поддержки выше SSSE3) { sse2 strcmp ...

1 ответ

SSE42 & STTNI - PcmpEstrM в два раза медленнее, чем PcmpIstrM, это правда?

Я экспериментирую с инструкциями SSE42 и STTNI и получил странный результат - PcmpEstrM(работает с явно заданными длинами строк)в два раза медленнее, чем PcmpIstrM(неявные строки длины). На моемi7 3610QMразница в том,2366,2 мс против 1202,3 мс - ...

1 ответ

Это зависит от того, насколько велики ваши массивы: если массивы сопоставимы или меньше, чем размер LLC, то вы наверняка получите некоторую выгоду, если будете делать что-то задом наперед, поскольку разумная часть данных последней обработки может находиться в кэше. (но это также осложняется новыми функциями LLC, которые пытаются обнаружить потоковые нагрузки и изменить политику замены кэша при их обнаружении). Более общий подход к этой работе - просто заблокировать вашу обработку: вместо того, чтобы выполнять каждый этап целиком, попробуйте чередовать ...

аюсь векторизовать цикл, вычисляя точечное произведение больших векторов с плавающей точкой. Я вычисляю это параллельно, используя тот факт, что CPU имеет большое количество регистров XMM, например: __m128* A, B; __m128 dot0, dot1, dot2, dot3 = ...

1 ответ

 были все операции домена вектора-int. То же самое для современных процессоров AMD.

ольно часто использовал инструкции x86 SIMD (SSE1234) в виде встроенных функций. Что меня огорчило, так это то, что в SSE ISA есть несколько простых инструкций, которые доступны только для чисел с плавающей запятой или только для целых чисел, но ...