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

1 ответ

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

ентация Apple по «Работе с матрицами» не только использует противоречие между основными столбцами и основными строками, но и усугубляет путаницу, приводя примеры «построения» матрицы преобразования и «матрицы вращения» в 2D. Перевести матрицу в ...

1 ответ

@PeterCordes Должен ли я превратить этот ответ в вики сообщества, чтобы вы могли вставить свой ответ здесь? К сожалению, я не могу не принять мой ответ.

у некоторыеAVX код и мне нужно загрузить из потенциально невыровненной памяти. Я сейчас загружаю 4двойникиследовательно, я бы использовал внутреннюю инструкцию _mm256, _loadu_pd [https://software.intel.com/en-us/node/524102]; код, который ...

2 ответа

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

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

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

1 ответ

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

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

1 ответ

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

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

2 ответа

 микро-слияния. Глупые, глючные инструменты с закрытым исходным кодом.) Во всяком случае, это поднимает планку еще больше, чтобы любой другой подход конкурировать.

у ускорить следующую операцию с инструкциями AVX2, но я не смог найти способ сделать это. Мне дали большой массивuint64_t data[100000] из uint64_t и массивunsigned char indices[100000] байтов. Я хочу вывести массивuint64_t Out[256] где i-е ...

3 ответа

 меньший диапазон. Это тот же трюк в обратном порядке, который вы используете для log (x): извлеките экспоненту ввода, чтобы получить log2 (integer_part (x)).

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

5 ответов

Более того, вы можете использовать внешние инструменты для разборки скомпилированного бинарного файла, например, objdump или более профессиональный ida.

исал некоторый код для математики, и он должен идти быстро, поэтому мне нужно использовать инструкции SSE и AVX. Я собираю его с g ++ и использую флаги-O3 а также-march=native, так что я думаю, что он использует инструкции SSE и AVX, но я не ...

1 ответ

 директивы ассемблера (16-битные блоки) вместо

ли (быстрый) способ выполнить биты, обратные 32-битным значениям int в регистре avx2? Например. _mm256_set1_epi32(2732370386); <do something here> //binary: 10100010110111001010100111010010 => 1001011100101010011101101000101 //register contains ...

1 ответ

stackoverflow.com/questions/41819514/...

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