avx2

    6熱度

    1回答

    我在內存中包含索引I0,I1,I2,I3的整數對齊數組。我的目標是讓它們進入包含I0,I0 + 1,I1,I1 + 1,I2,I2 + 1,I3,I3 + 1的__m256i寄存器。最難的部分是將它們放入256位寄存器I0,I0 ,I1,I1,I2,I2,I3,I3,之後我可以添加一個包含0,1,0,1,0,1,0,1的寄存器。 我發現了固有的_mm256_castsi128_si256,它我可以

    0熱度

    1回答

    我在某些C代碼中使用AVX2指令。 的VPERMD指令採用兩個8整數矢量a和idx併產生第三個,dst,通過基於idx置換a。這似乎相當於dst[i] = a[idx[i]] for i in 0..7。我打電話給這個來源,因爲這個舉動是根據來源索引的。 但是,我有我的計算指數以目的地爲基礎的形式。這對設置數組很自然,相當於dst[idx[i]] = a[i] for i in 0..7。 如何將

    3熱度

    1回答

    您好,我有一個AVX2內部函數的奇怪問題。我用int64_t * cast創建一個指向_m256i向量的指針。然後我通過取消引用指針來分配一個值。奇怪的是,在向量變量中沒有觀察到該值,除非我在它後面運行一些cout語句。指針和向量具有相同的內存地址,並且取消引用指針會生成正確的值,但向量不會。我錯過了什麼? // Vector Variable __m256i R_A0to3 = _mm256_

    -1熱度

    1回答

    我想了解從http://gruntthepeon.free.fr/ssemath/sse_mathfun.h或exp256_ps()從http://software-lisc.fbk.eu/avx_mathfun/avx_mathfun.hexp_ps()的實現。 我明白幾乎所有的計算,除了如何確定恆定cephes_exp_C2。它似乎增加了計算的準確性。如果將其從計算中移除,則結果函數顯着更快且

    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回答

    我想通過使用AVX intrinsics來優化一些代碼。一個非常簡單的測試用例編譯,但告訴我,我的循環沒有矢量化的原因有很多,我不明白。 這是完整的程序,simple.c #include <math.h> #include <stdlib.h> #include <assert.h> #include <immintrin.h> int main(void) { __m2

    2熱度

    1回答

    我研究了AVX或AVX2 ISA支持的字符串指令,但是我找不到像SSE4.2這樣的任何256位字符串比較指令如果有任何字符串比較我找不到它們?否則爲什麼AVX/AVX2 ISA不支持256位字符串指令? 我還發現,AVX2不支持mullo爲unsigned short作爲16位無符號整數,我不知道原因。因爲它已在SSE4.2中得到支持。

    1熱度

    2回答

    我有興趣將__m256i數據類型(在英特爾內部函數中用於AVX指令)的數據複製到新的__m256i中。 我知道我可以將數據從AVX寄存器存儲到內存,然後從內存中,我可以加載數據到一個新的寄存器。但是,有沒有更簡單的方法(即專用指令),我可以直接「克隆」寄存器,而無需先使用操作將其存儲到內存中,然後再次加載它? 我想,我可以添加一個空的寄存器到我的寄存器,然後得到一個新的__m256i類型回來,可以

    4熱度

    2回答

    摘要/ tl; dr:除了進行2次移位並將結果混合在一起之外,是否有任何方法可以逐位旋轉YMM寄存器中的一個字節(使用AVX)? 對於YMM寄存器中的每8個字節,我需要在其中左轉7個字節。每個字節需要比前者向左多旋轉一圈。因此1字節應該旋轉0位,第7位應該旋轉6位。 目前,我已經做了一個這樣做的實現[我在這裏使用1位旋轉作爲示例]將寄存器1位向左和向右移位7個單獨。然後,我使用混合操作(內部操作_

    1熱度

    1回答

    我已經在這裏找到了PRIMATEs密碼的一個分片實現:http://primates.ae/(我做了它的120位版本)。 我完全使用C語言編寫並使用了Intel Intrinsics,這樣我就可以使用AVX2指令集。 由於我做了一個切片的實現,我想優化它的速度,從而衡量性能,我計算每個字節的週期。爲此,我使用Windows提供的QueryPerformanceCounter()函數 現在是事情了。