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類型回來,可以