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

5 ответов

Теоретически вы получите хотя бы небольшую производительность, когда вычитание может быть выполнено, пока значения все еще находятся в регистрах или кэше процессора, но на практике вы можете наткнуться на несколько приемов, которые могут повысить производительность всего алгоритма.

я есть следующий код, который является узким местом в одной части моего приложения. Все, что я делаю, это вычитаю Array из другого. Оба этих массива имеют более 100000 элементов. Я пытаюсь найти способ сделать это более производительным. var ...

1 ответ

Последнее замечание: использование встроенного ассемблера выше зависит от gcc, причина в том, чтобы разрешить использование неинициализированных переменных без генерации предупреждения компилятора. С vc вам может понадобиться или не потребоваться сначала инициализировать переменные с помощью _mm_setzero_ps (), а затем надеяться, что оптимизатор сможет это убрать.

аюсь найти эффективный способ загрузки компиляции констант времени в регистры SSE (2/3). Я пытался сделать простой код, как это, const __m128 x = { 1.0f, 2.0f, 3.0f, 4.0f };но это генерирует 4 инструкции movss из памяти! movss xmm0,dword ptr ...

1 ответ

@PeterCordes По словам Агнера, маскировка слиянием бесплатна при приземлении Рыцарей (за вычетом дополнительной зависимости). Но он не прокомментировал Скайлэйк. Я не использую маскировку достаточно, чтобы знать. Я не могу представить, что все по-другому.

тим, у вас есть значения вrax а такжеrdx Вы хотите загрузить вxmm регистр. Одним из способов будет: movq xmm0, rax pinsrq xmm0, rdx, 1Это довольно медленно, хотя! Есть ли способ лучше?

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

2 ответа

Эта таблица, вероятно, будет неверно предсказана в первый раз. После этого это может или не может, в зависимости от модели и силы косвенного предсказателя ветвления.

отрим следующий цикл в x86: ; on entry, rdi has the number of iterations .top: ; some magic happens here to calculate a result in rax mov [array + rdi * 8], rax ; store result in output array dec rdi jnz .topЭто просто: что-то вычисляет ...

1 ответ

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

инство компиляторов C ++ поддерживают инструкции SIMD (SSE / AVX) с такими интрижками, как _mm_cmpeq_epi32Моя проблема в том, что эта функция не помечена какconstexprхотя "семантически" нет причин, чтобы эта функция неconstexpr так как это ...

1 ответ

C ++ SSE реализация фильтра

Я пытался использовать SSE, чтобы сделать операцию 4 пикселей. У меня проблема с загрузкой данных изображения в __m128. Мои данные изображения представляют собой буфер символов. Допустим, мое изображение 1024 x1024. Мой фильтр 16х16. __m128 ...

1 ответ

параллельная префиксная (накопительная) сумма с SSE

Я ищу несколько советов о том, как сделать параллельную сумму префикса с SSE. Я заинтересован в том, чтобы делать это на массиве целых чисел, чисел с плавающей точкой или двойных чисел. Я придумал два решения. Особый случай и общий случай. В ...

2 ответа

@PeterCordes Иногда код становится более понятным, когда вы пишете константы в виде двоичного файла. Это не тот случай, я признаю :-).

у преобразовать 8-битное целое число в массив размером 8 с каждым значением, содержащим битовое значение целого числа. Например: у меня естьint8_t x = 8; Я хочу преобразовать это вint8_t array_x = {0,0,0,0,1,0,0,0}; Это должно быть сделано ...

2 ответа

docs.nvidia.com/cuda/cuda-math-api/...

ного гуглю, но сейчас мне неясно, могут ли некоторые графические процессоры, запрограммированные с CUDA, использовать преимущества или использовать инструкции, аналогичные тем, которые есть в расширениях SSE SIMD; например, можем ли мы ...

4 ответа

Является ли встроенная нагрузка SSE медленнее встроенной нагрузки на процессорах Intel x64_64?

Я рассматриваю вопрос об изменении некоторого высокопроизводительного кода, который в настоящее время требует 16-байтовых выровненных массивов и использует_mm_load_ps чтобы ослабить ограничение выравнивания и использовать_mm_loadu_ps, Существует ...