simd

    4熱度

    1回答

    比方說,例如,我有2個變量__m256i叫rows和cols,在他們裏面的值是:現在 rows: 0, 2, 7, 5, 7, 2, 3, 0 cols: 1, 2, 7, 5, 7, 2, 2, 6 ,這些值表示爲8個點的x和y位置,從而,在這種情況下,我將有以下幾點: p0: [0, 1], p1: [2, 2], p2: [7, 7], p3: [5, 5] p4: [7, 7],

    -1熱度

    1回答

    我想轉換一些現有的代碼,可以使用SIMD指令進行優化。有一個掩碼生成代碼,我正在測試轉換後可以從SIMD中獲得多少性能,下面是我用來分析它的一個過於簡化的塊。 Random r = new Random(); var random1 = new double[65536000*4]; var random2 = new double[random1.Length]; var result =

    1熱度

    1回答

    考慮存儲器佈局,使得8個連續的4字節塊讀取[abcdefgh]。我把它們加載到兩個寄存器v0.4s和v1.4s,所以我得到v0.4s = [abcd]和v1.4s = [efgh],其中每個字符代表一個32位塊。我想重新排序它們以獲得兩個(可能不同)寄存器中的[abef]和[cdgh]。 我現在的做法是首先將[efgh]的64位二進制取反,得到[ghef]。然後我可以使用提取得到[abef]和[g

    4熱度

    1回答

    我無法在內核中找到很多SIMD指令(如SSE/AVX)的使用(除了用於加速RAID6的奇偶校驗計算的地方)。 Q1)任何具體原因或只是缺少用例? Q2)如果我想使用SIMD指令,比如設備驅動程序,那麼今天需要做什麼? Q3)將ISPC這樣的框架納入內核(僅用於實驗)有多難?

    -2熱度

    1回答

    所以我在編譯Dolphin時遇到這個錯誤。我已經嘗試過clang-3.7和3.8以及GCC 5.2和6.3。奇怪的是,所有其他_mm函數似乎都可以工作,只是這一個。

    1熱度

    1回答

    的我有一個函數: void Func(const int * a, const int * b, size_t size, int p, int * c) { for (size_t i = 0; i < size; ++i) c[i] = (a[i]*b[i])%p; } 執行該功能爲整數的數組許多模乘法。 所有整數都是正數。 而且我需要改善它的表現。 我想到了SS

    5熱度

    1回答

    我想從一個由8個整數組成的另一個__mm256i offset指定的8個位置從一個寄存器變量__mm256i src中提取8個比特。 例如:如果offset是[1,3,5,21,100,200,201,202],我想從src獲得第1,3,5,10,100,121,202位,並將它們打包到int8。 這個問題類似於Extracting bits using bit manipulation,但我想用

    0熱度

    1回答

    我目前正在處理一個處理圖像的項目。爲了加速這個過程(並增加我的知識),我決定使用SIMD指令編寫一些基本功能。 使用for循環的代碼是 int idx; uint16_t* A, B, C; float gAlpha = 0.8; float alpha = 0.2; for (size_t rw = 0; rw < height; rw++) { for (size_t cl

    0熱度

    2回答

    我發現_m128i int horizontal_max_Vec4i(__m128i x) { __m128i max1 = _mm_shuffle_epi32(x, _MM_SHUFFLE(0,0,3,2)); __m128i max2 = _mm_max_epi32(x,max1); __m128i max3 = _mm_shuffle_epi32(max2, _

    3熱度

    1回答

    我試圖以11位精度尾數實現快速atan2(浮點數)。atan2實現將用於圖像處理。 所以用SIMD指令(impl瞄準x86(帶有SSE2)& ARM(帶有vpfv4 NEON))可能會更好。 現在,我使用切比雪夫多項式近似(https://jp.mathworks.com/help/fixedpoint/examples/calculate-fixed-point-arctangent.html)