avx

    1熱度

    1回答

    我使用boost::simd作爲我的程序。奇怪的是,與沒有使用boost::simd相比,整個程序的運行速度實際上更慢。我設法追查導致絕大多數CPU運行時的行: using pack_t = boost::simd::pack<double>; using logical_pack_t = boost::simd::pack<boost::simd::logical<double>, pack_

    1熱度

    1回答

    我最近正在研究矢量化指數函數的實現。實際上,找到單精度代碼非常簡單,但很難找到雙精度代碼。我還沒有找到任何雙精度AVX指數的實現。 SSE的代碼幾乎可以適應,但通常用於乘以2^n的技巧似乎不適用於AVX。 有誰知道這樣的實現?

    -1熱度

    1回答

    我正在編程一個完美的程序來並行化多媒體擴展。該程序包括轉換圖像,所以我通過一個矩陣,我修改其中的每個像素。爲了加快速度,我使用了多媒體擴展: 起初我使用了SSE3擴展並實現了2.5加速。接下來,我編程擴展了使用AVX擴展(雙倍大小矢量)的sse算法,但是我沒有得到SSE3的收益。用SSE執行程序的時間或多或少與AVX相同。 這裏是SSE和AVX,分別代碼的總結: for(i=0; i<lim;

    1熱度

    1回答

    因此,這是我正在嘗試完成的。在我的C++項目中,必須使用Microsoft Visual Studio 2015或更高版本進行編譯,我需要根據用戶的CPU中可用的最新SIMD指令集,有些代碼具有不同版本,其中包括:SSE,SSE2,SSE3 ,SSSE3,SSE4.1,SSE4.2,AVX,AVX2和AVX512。 由於我在這裏尋找的是編譯時CPU調度,我的第一個猜測是,它可以很容易地使用編譯器宏

    1熱度

    2回答

    我正在尋找用於處理速度改進的並行處理算法。 我想測試Agner Fog's vector class library, VCL。 我在想如何選擇不同的矢量類,例如Vec16c(SSE2指令集)和Vec32c(AVX指令集)。 我使用Intel®Atom™x5-Z8350處理器,並根據規格支持SSE4.2指令集。 如何在硬件支持方面有效地選擇矢量類? 對我的處理器說,我可以使用AVC指令集推薦的Ve

    3熱度

    1回答

    我試圖找到一種更有效的方法來「旋轉」或將avx _m256矢量中的32位浮點值向右或向左移動一個地方。 使得: A7,A6,A5,A4,A3,A2,A1,A0 變得 0,A7,A6,A5,A4,A3,A2,A1 (我不介意,因爲我反正更換單元中的數據丟失。) 我已經查看了這個線程:Emulating shifts on 32 bytes with AVX 但我不雷爾y理解正在發生的事情,並且它不會

    1熱度

    1回答

    我已撥出對準32個字節雙打的陣列 double *dst; posix_memalign((void**)&dst, 32, 4*sizeof(double)); 我後來用_mm256_store_pd(dst,q);和爲什麼一個段錯誤發生在這裏的指令 vmovapd YMMWORD PTR [rdi],ymm0 得到偶爾的段錯誤?除了對齊之外,vmovapd是否會導致段錯誤?

    3熱度

    1回答

    考慮這三個函數執行相同的計算: #include <x86intrin.h> void testfunc_loop(double a, double b, double* dst) { double f[] = {a,b,-a,-b}; for(int n = 0; n < 4; ++n) { dst[n] = 0.1 + f[n]*(1.0 +

    5熱度

    1回答

    我想查找一個角色的第一個實例,在這種情況下使用simd(AVX2或更早版本)'''。我想使用_mm256_cmpeq_epi8,但是我需要一個快速的方法來查找__m256i中的任何結果字節是否已被設置爲0xFF,然後計劃使用_mm256_movemask_epi8將結果從字節轉換爲位,並使用ffs來獲得匹配的索引。使用_mm_movemask_epi8一次搬出的一部分的任何其他建議

    1熱度

    1回答

    下面是一個顯示支持的指令集的類的例子。 https://msdn.microsoft.com/en-us/library/hskdteyh.aspx 我想寫三個不同的函數實現,每個函數都使用不同的指令集。但是,例如,由於flag/ARCH:AVX2,這款應用程序不會運行在第4代以上的英特爾處理器上,因此整個檢查點是毫無意義的。 那麼,問題是:什麼究竟是這個標誌呢?啓用支持或啓用使用提供的指令集進行