avx

    -3热度

    1回答

    inline void addition(double * x, const double * vx,uint32_t size){ /*for (uint32_t i=0;i<size;++i){ x[i] = x[i] + vx[i]; }*/ __asm__ __volatile__ ( "1: \n\t" "vmovupd -3

    4热度

    2回答

    我想下面的代码转换从MATLAB到C++ function data = process(data) data = medfilt2(data, [7 7], 'symmetric'); mask = fspecial('gaussian', [35 35], 12); data = imfilter(data, mask, 'replicate', 'same');

    1热度

    1回答

    我似乎无法找到_mm_pow_ps或_mm256_pow_ps的内在函数,两者都应该包含在'immintrin.h'中。 Clang没有定义这些或他们在我不包括的标题?

    7热度

    2回答

    如果一个SSE/AVX寄存器的值是所有字节都是0或1,那么有什么办法可以有效地获得所有非零元素的索引吗? 例如,如果xmm值是 | r0 = 0 | r1 = 1 | r2 = 0 | r3 = 1 | r4 = 0 | r5 = 1 | r6 = 0 | ... | r14 = 0 | r15 = 1 | 结果应该是(1,3,5,...,15)。结果应放置在另一个_m128i变量或char [1

    1热度

    1回答

    我正在寻找一种无分支方式来根据AVX2值的特定条件选择AVX2常数。什么我现在做 伪代码: condition = _mm256_cmp_gt(value, limit); result = _mm256_or(_mm256_and(condition, constant_a), _mm256_andnot(condition, constant_b)); 有什么比这更有效

    3热度

    1回答

    C和C++函数double floor(double arg)(在cmath和math.h中定义)返回不大于arg的最大整数值。使用AVX指令进行矢量化的最有效方法是什么? 从本质上讲,我要的是 __m256d floor(__m256d arg); 是否有必要转换成整数并返回?

    2热度

    1回答

    我研究了AVX或AVX2 ISA支持的字符串指令,但是我找不到像SSE4.2这样的任何256位字符串比较指令如果有任何字符串比较我找不到它们?否则为什么AVX/AVX2 ISA不支持256位字符串指令? 我还发现,AVX2不支持mullo为unsigned short作为16位无符号整数,我不知道原因。因为它已在SSE4.2中得到支持。

    0热度

    1回答

    我无法加载或存储AVX2内在函数指令,就像我之前在AVX中所做的那样。没有错误,只是警告,并且它在运行时不执行加载/存储指令。其他AVX2指令正常工作,但无法从内存加载。 如下。 AVX: float t[MAX][MAX]; row0 = _mm256_load_ps(&t[i][j]); _mm256_store_ps(&t[j][i], row0); AVX2: const int3

    2热度

    1回答

    当我试着使用AVX获取数据,我得到运行时错误 - 分段故障: int i = 0; const int sz = 9; size_t *src1 = (size_t *)_mm_malloc(sz*sizeof(size_t), 32); size_t *src2 = (size_t *)_mm_malloc(sz*sizeof(size_t), 32); size_t *dst = (s

    1热度

    2回答

    我有兴趣将__m256i数据类型(在英特尔内部函数中用于AVX指令)的数据复制到新的__m256i中。 我知道我可以将数据从AVX寄存器存储到内存,然后从内存中,我可以加载数据到一个新的寄存器。但是,有没有更简单的方法(即专用指令),我可以直接“克隆”寄存器,而无需先使用操作将其存储到内存中,然后再次加载它? 我想,我可以添加一个空的寄存器到我的寄存器,然后得到一个新的__m256i类型回来,可以