sse

    2熱度

    1回答

    我認爲我對延遲和吞吐量之間的差異有一個很好的理解。但是,對於Intel Intrinsics而言,延遲對指令吞吐量的影響對我來說並不明確,特別是在按順序(或幾乎按順序)使用多個內部調用時。 例如,讓我們考慮: _mm_cmpestrc 此爲11延遲,並且在處理器的Haswell吞吐量7。如果我在一個循環中運行這個指令,我會在11個週期後得到一個連續的每個週期輸出嗎?由於這需要一次運行11條指令

    5熱度

    1回答

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

    4熱度

    1回答

    _mm_prefetch調用here指定的內容從RAM中的給定內存位置預取到緩存行。但是緩存完全在硬件控制下?基於哪些內存(基於空間/時間位置)被訪問很多,硬件將內容從內存預取到緩存。我認爲程序員無法控制緩存,它完全是一種硬件機制。 所以我的理解是錯誤的,緩存實際上可以由我們控制,對吧? 如果_mm_prefetch可以控制哪些可以內部緩存中說, 是否意味着它永遠不會從緩存中刪除時? 什麼是在 緩

    0熱度

    1回答

    我正在與一家公司合作創建一組使用SSE指令的專用代碼。他們正在使用Qt Creator IDE。我向他們提供了一個C頭文件和相應的* .c文件,它們在XCode和Visual Studio中編譯;他們不會在Qt Creator中編譯。 如何更改適當的編譯器設置,以便SSE指令能夠在Qt Creator中編譯? 導致第一個錯誤的路線如下: _mm_store_ps(outData, _mm_add_

    2熱度

    2回答

    我已經實現了program使用SSE2分別比較AVX2和SSE2的vpsadbw指令和psadbw。以下代碼是SSE2程序: #define MAX1 4096 #define MAX2 MAX1 #define MAX3 MAX1 #define NUM_LOOP 1000000000 double pTime = 0, mTime = 5; //global data for

    4熱度

    1回答

    如何將128位xmm寄存器拆分爲兩個64位四字? 我在xmm1一個非常大的數字,並希望得到更高的四字r9和較低的四字r10,或RAX和RDX。 movlpd或movhpd只適用於reg到mem,反之亦然。

    2熱度

    1回答

    我想用SIMD來計算exponential函數。我發現這個功能:https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_exp_ps&expand=2136 我已經在我的代碼中包含了"immintrin.h",並且我的cpu也有一個SSE的標誌。但gcc正在抱怨error: ‘_mm_exp_pd’ was no

    22熱度

    2回答

    我一直在試圖找出應用程序中的性能問題,並最終將其縮小爲一個非常奇怪的問題。如果VZEROUPPER指令被註釋掉,以下代碼片段在Skylake CPU(i5-6500)上運行速度會減慢6倍。我測試過Sandy Bridge和Ivy Bridge CPU,兩個版本都以相同的速度運行,不管有沒有VZEROUPPER。 現在我對VZEROUPPER做的事情有了一個相當好的想法,我認爲在沒有VEX編碼指令並

    6熱度

    2回答

    我正在實現SSE類型之間的轉換,並且發現對於SSE4.1之前的目標實現int8-> int64擴展轉換非常麻煩。 直截了當的實現將是: inline __m128i convert_i8_i64(__m128i a) { #ifdef __SSE4_1__ return _mm_cvtepi8_epi64(a); #else a = _mm_unpacklo_epi8(a

    3熱度

    1回答

    如何使用SSE內在函數將16位8位整數除以4(或將它們向右移2)?