avx

    2熱度

    1回答

    我正在學習AVX內在用法,問題是如何優化下面的代碼。我將它移植到內部工作的方式,但我感覺它變得更容易和更高效。 C++僞代碼版本 float min_value = FLOAT_MAX; float result_p = 0; for loop { float u = .... if(u > 0.0f || u < 1.0f) continue;

    3熱度

    1回答

    我希望有人可以在這裏幫忙。 我有一個大的字節向量,從中創建一個小字節向量(基於掩碼),然後用simd處理。 當前掩碼是baseOffset +子掩碼(byte [256])的數組,對於存儲進行了優化,因爲存在> 10^8。我創建一個maxsize子向量,然後循環遍歷mask數組,並將baseOffssetby 256乘以大值向量的掩碼加載中的每個位偏移量,然後將這些值依次放入較小的向量中。然後通過

    3熱度

    1回答

    我正在修改RNNLM神經網絡來研究語言模型。然而,考慮到我的語料庫的大小,它運行得很慢。我試圖優化矩陣*向量例程(這是對於小數據集總時間的63%負責(我預計它會在更大的集合上更糟糕))。現在我被固有內容困住了。如果我改變 _mm256_storeu_ps (&(dest.ac[b*8+from+0]), t4); (帶u未對齊我想)一切都會按計劃 _mm256_store_ps (&(dest

    1熱度

    1回答

    我正在使用AVX內在函數,但由於除了基於_mm256的內在函數以外的其他所有內容,MSVC都會生成非-vex指令,所以我需要使用/ arch:AVX編譯整個源代碼。項目的其餘部分使用/ arch:SSE2進行編譯,以便它可以在較舊的CPU上運行,並且我正在手動檢查AVX是否可用。 包含AVX代碼的源代碼(爲AVX編譯)包含一個巨大的模板庫和其他東西,只是爲了讓它們定義。是否有可能編譯器/鏈接器決定

    1熱度

    2回答

    除了標題...有沒有一種簡單的方法可以自己找到這些信息?最好以表格形式。

    2熱度

    2回答

    我有一個由32個字節組成的數組。我需要從這個數組中構建8個4字節的整數。例如 0x00,0x11,0x22,0x33 8位整數必須是一個0x00112233 32位整數。 我決定使用AVX指令,因爲我可以用一個命令將整個數組加載到寄存器。 代碼我寫道: #include <stdio.h> #include "immintrin.h" typedef unsigned int uint32

    7熱度

    1回答

    我想實現SIMD minmag and maxmag functions。據我瞭解這些功能 minmag(a,b) = |a|<|b| ? a : b maxmag(a,b) = |a|>|b| ? a : b 我想這些對於float和double和我的目標硬件的Haswell。我真正需要的是計算兩者的代碼。以下是我對SSE4.1雙(AVX的代碼幾乎是相同的) static inline v

    0熱度

    1回答

    我有具有下述組成的結構: static constexpr uint64_t emptyStructValue { 0 }; union MyStruct { explicit MyStruct(uint64_t comp) : composite(comp){} struct{ int16_t a; bool b; bool c;

    3熱度

    2回答

    我有這樣的結構: struct { uint32_t a; uint16_t b; uint16_t c; uint16_t d; uint8_t e; } s; ,我想比較兩個平等上述結構的,儘可能以最快的方式。我查看了「英特爾內核指南」,但無法找到整數的比較結果,可用的選項主要是雙精度和單浮點向量輸入。 請問有人請告知最好的方法?我可以在

    2熱度

    2回答

    我正在嘗試編寫一個C++程序,它啓動了一個我在x64彙編器中編寫的函數。 我想加快一點(並使用CPU功能),所以我選擇使用矢量操作。 問題是,我必須乘以一個整數的正弦,所以我必須先計算正弦。 是否可以在SSE/AVX中做到這一點?我知道指令fsin,但它不僅在FPU中,而且它一次只計算1個正弦。所以我不得不將它推入FPU,請撥打fsin,將它從FPU彈出到內存,然後將其放入AVX寄存器。在我看來,