intrinsics

    0熱度

    1回答

    我在AVX2的新版本程序中使用256位變量(__m256i類型),並使用了Intel內在函數。之前,使用64位塊來處理數據。所以,_mm_crc32_u64函數用於CRC計算。 crc = _mm_crc32_u64(seed,*chunk_64bit); 但現在,爲了提高性能,我想計算CRC每個256個數據塊(至少128個數據塊)seperately。 一種方法可以像這樣在每個塊上應用_mm

    0熱度

    1回答

    我試圖平移該C/C++代碼,以SIMD內在功能。 for(int i=0 ; i < length ; i++) A[i] = B[C[i]]; 我能翻譯下面的代碼(C/C++) for(int i=0 ; i < length ; i++) A[i] = B[i]; 到SIMD代碼(使用本徵函數) for(int i=0 ; i < length-16 ; i+=16

    4熱度

    1回答

    我有一些產品代碼,內核實現了各種SIMD指令集,包括AVX,AVX2和AVX512。該代碼可以在目標機器上編譯成類似./configure --enable-proc=AVX CXXFLAGS="-mavx"的目標機器。 這也適用於暴露AVX intrinsics的Travis CI。我想至少編譯AVX2和AVX512版本,以查看是否所有文件都已簽入。但似乎編譯一個不同的ISA並不容易。 一個簡單

    2熱度

    1回答

    我試圖編譯一個使用gcc編譯icpc和mkl數學庫的大代碼。 這是需要AVX的代碼。 #include <immintrin.h> #include <stdint.h> #include <math.h> . . _mm256_set_m128d( _mm256_extractf128_pd(t2, 0) + _mm256_extractf128_pd(t2, 1),

    8熱度

    1回答

    除了測試單個寄存器是否全零之外,您還可以使用SSE4.1 ptest做什麼? 您可以使用SF和CF的組合來測試關於兩個未知輸入寄存器的任何有用信息嗎? 什麼是PTEST的好處?你可能會認爲這將是很好的檢查結果爲填充比較(如PCMPEQD或CMPPS),但至少在英特爾CPU,it costs more uops to compare-and-branch using PTEST + JCC than

    0熱度

    2回答

    問題聽起來令人痛苦熟悉。 假設你有枚舉: enum MyEnum {first, second, third}; 現在我想一些INT轉換爲MyEnum。天真的做法 int i = 2; MyEnum e = (MyEnum)i; 看起來好,但事實並非如此。首先,2將被轉換爲「第三」,而不是人們所期望的「第二」。其次,這種轉換是愚蠢的,我想要一個聰明的。 動機如下: void foo(My

    1熱度

    1回答

    條件語句我想爲我的遊戲做了一些計算,我試圖來計算兩個點之間的距離。實質上,我使用圓的方程來查看點是否在我定義的半徑內。 (x - x1)^2 + (y - y1)^2 <= r^2 我的問題是:我如何用SSE評估條件語句並解釋結果?到目前爲止,我有這個: float distSqr4 = (pow(x4 - k->getPosition().x, 2) + pow(y4 - k->getPos

    0熱度

    1回答

    當我試圖用icpc進行編譯時,它顯示「表達式必須具有類類型」。對此感到困惑。請幫忙。 int main() { __m256d temp; temp.m256d_f64[0] = 1; return 0; }

    1熱度

    1回答

    當我嘗試加載使用內在函數生成的某些密文時,出現段錯誤。我根本不明白這個錯誤。代碼示例: unsigned char c[177]; unsigned char m[161]; auth = _mm_setzero_si128(); unsigned char M_star[BLOCKSIZE]; __m128i tag = auth; for(i=0;i<numblocks_mes;++

    11熱度

    1回答

    我在旁邊的其他人的代碼中,並試圖找出爲什麼_mm_load_si128存在。 從本質上講,我試圖與 _ra = *reinterpret_cast<__m128i*>(&cd->data[idx]); 更換 _ra = _mm_load_si128(reinterpret_cast<__m128i*>(&cd->data[idx])); 和它的工作原理,準確地執行相同的。 我計算過,對於較