avx

    4熱度

    2回答

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

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

    Dupe of Have different optimizations (plain, SSE, AVX) in the same executable with C/C++ 「自動複製」認爲選錯了建議的副本,我似乎沒有修復它的界面。 有什麼辦法來建立他們沒有申請,如果獲得將可選擇使用指令集擴展,並且仍然功能(雖然比較慢)? 現在,我有一個MSVC++雷達成像應用程序,可以從矢量化中獲益很多。如

    7熱度

    1回答

    我在AVX2函數中遇到了Intel Intrinsics的一個非常奇怪的錯誤,我想在此分享它。要麼是我做錯了什麼(我不明白這是什麼),或者是圖書館裏的一個錯誤。 我有我的main.c這裏面簡單的代碼: __int64 test = 0xFFFF'FFFF'FFFF'FFFF; __m256i ymm = _mm256_set_epi64x(0x0000'0000'0000'0000,

    1熱度

    1回答

    我正在開發一個使用SIMD指令集的QT小部件。我編譯了3個版本:SSE3,AVX和AVX2(simdpp允許通過一個#define在它們之間切換)。 現在,我想要的是我的小部件根據最佳支持的指令集自動在這些實現之間切換。其設置有simdpp指南使得一些神奇的makefile使用: CXXFLAGS="" test: main.o test_sse2.o test_sse3.o test_sse

    5熱度

    2回答

    如何根據主機處理器/操作系統創建可在SSE,AVX和AVX2代碼路徑之間動態切換的庫?我正在使用Agner Fog的VCL(矢量類庫)並使用GCC for Linux進行編譯。

    2熱度

    2回答

    好吧,因此:我已成功將第一個工作Halide generator集成到我的小image-processing project的cmake build system中。 該生成器基於來自Halide代碼庫的示例代碼實現圖像大小調整和重採樣算法 - 我調整了示例以利用生成器參數,並將生成器的編譯和調用綁定到我的cmake腳本使用HalideGenerator.cmake中定義的函數,就像Halide項

    0熱度

    1回答

    我正在使用SIMD指令(SSE和AVX)進行多項操作。據我所知,SSE指令最適合16字節對齊的內存,而AVX指令最適合32字節對齊的內存。 爲了與SSE和AVX最佳使用,始終分配對齊到32字節邊界的內存是否安全? 是否有任何32字節對齊的內存不是16字節對齊的情況?

    1熱度

    3回答

    有沒有一種方法可以使用AVX/SSE來獲取浮點矢量,向下舍入並生成一個整數矢量?所有的floor內部方法似乎都會產生一個浮點的最終矢量,這很奇怪,因爲四捨五入會產生一個整數!

    1熱度

    1回答

    當我嘗試: __m256 a = _mm256_set_ps(1, 1, 1, 1, 1, 1, 1, 1); __m256 b = _mm256_set_ps(0, 0, 0, 0, 0, 0, 0, 0); __m256 c = _mm256_cmp_ps(a, b, _CMP_LT_OQ); 這是一個< b口得到的輸出: [0, 0, 0, 0, 0, 0, 0, 0] 但是,