avx

    9熱度

    3回答

    我正在考慮爲uint32_t實現8元堆排序。爲此,我需要一個函數來選擇8元素向量中的最大元素的索引,以便我可以將其與父元素進行比較,並有條件地執行交換和進一步的siftDown步驟。 (可以將8個uint32_ts更改爲16個uint32_ts或8個uint64_t,或者任何x86 SIMD可以有效支持的任何其他類型)。 我對如何做到這一點有一些想法,但我正在尋找比非矢量化代碼更快的東西,尤其是我

    1熱度

    2回答

    ,我可以包括Valgrind的頭在運行時知道我的軟件是否已在運行Valgrind的: #include <valgrind/valgrind.h> bool RunningOnValgrind() { return RUNNING_ON_VALGRIND ? true : false; } 這在valgrind manual被記錄在案。 我希望能夠知道我正在運行的valgri

    4熱度

    2回答

    我想將包含掩碼的兩個256位向量(__m256d)與比較操作(例如_mm256_cmp_pd)結合爲一個256位向量,方法是省略上半部分每64位加倍。 所以,如果在下文中,a_i, b_i, ...是32個比特的字,並且我有具有以下結構中的兩個2​​56位(4×雙)載體: a_0, a_0, b_0, b_0, c_0, c_0, d_0, d_0,和a_1, a_1, b_1, b_1, c_1

    3熱度

    1回答

    假設我有一個128寄存器,它包含一些浮點數[x1,x2,x3,x4],另一個保存[y1,y2,y3,y4]。 獲得像[x1,y1,x2,y2]這樣的東西的最好方法是什麼? 我想我可以多次移動寄存器,使用臨時對象,然後在多個步驟中合併它們,但是我想知道是否缺少一些方便的指令可以讓我的生活更輕鬆。我認爲這是一件很平常的事情,所以我想知道這裏最好的做法是什麼。 謝謝!

    2熱度

    3回答

    我有兩個uint8_t數組,它們都有64個元素。 爲了計算SAD,我想出了最好的方法,就是加載4x16的元素,將它們放到兩個m128i寄存器中,然後把它們放到m256寄存器中。這對於uint8_t陣列完成的,就像這樣: __m128i a1, a2, b1, b2, s1, s2; __m256i u, v, c; // 128 bit of data x 2 a1 = _mm_set_e

    2熱度

    2回答

    我想優化自適應濾波代碼使用AVX的濾波器內核可能是隨機的每個像素(說0到991)。 它相應的C代碼在下面給出: /* filter function */ void filter() { int size = width *height; // image size float w[992][11]; // filter kernel array fl

    3熱度

    3回答

    AVX支持浮點數據類型__m256和__m256d等按位邏輯操作。 但是,C++不允許對浮點數和雙精度進行按位運算。如果我是對的,浮點數的內部表示不能保證,編譯器是否會使用IEEE754,因此程序員不能確定浮點的位數是多少。 考慮這個例子: #include <immintrin.h> #include <iostream> #include <limits> #include <casse

    3熱度

    1回答

    我期待在英特爾固有的指南: https://software.intel.com/sites/landingpage/IntrinsicsGuide/ ,並同時他們_mm_dp_ps和_mm_dp_pd用於計算和雙精度浮點數的點積我不能看到計算整數點積任何東西。 我有兩個unsigned int[8]陣列和我想: (A [0] XB [0])+(一個[1] * B [1])....... +(一個

    2熱度

    2回答

    : 沒有這樣的指令:`vmovss(%RDX), %xmm0' With -march=core2一切都很好。 問題是:如何檢測waf中的處理器架構?目前,waf知道在運行達爾文操作系統的計算機上運行,​​但問題與操作系統和處理器無關,所以這沒有幫助。 我不問如何解決彙編錯誤!我在問如何檢測處理器架構。

    0熱度

    1回答

    下一個非零我有一個int數組[10000],我想從某一位置到找到下一個非零索引進行迭代。目前我使用的是基本while循環: while(array[i] == 0){ pos++; } 等 我知道有內在我可以在同一時間測試4個整數爲零,但有沒有辦法返回的東西指示的矢量指數「第一個「非零?