intrinsics

    -2熱度

    1回答

    在OpenGL/DirectX的常見操作(如三角形填充,紋理映射,剪輯等)中是否存在特定於GPU的內部函數/指令? 如果是這樣,可以使用運行在GPU上的OpenCL或CUDA代碼訪問它們嗎? 編輯:我,想知道如果像三角形填充等在OpenGL操作使用的是不能從的OpenCL或CUDA訪問特定的GPU指令,因此,這是不可能爲有效地實施他們的OpenCL/CUDA ,因爲他們將使用OpenGL(具有渲染

    0熱度

    1回答

    比方說,我有4個浮點矢量: __m128 vector = |f0|f1|f2|f3| (pseudocode) 我的目的是變量轉換成這樣: |0.0|f0|f1|f2| 做一個右移似乎是最簡單的選擇,但我一直沒能找到這樣一種可用於浮筒的內在物質。 什麼是最快的方法來實現這一目標?

    2熱度

    2回答

    我想知道是否有一個SSE2/AVX2整數指令或指令(或內在)序列: 給定一個的形式的8個字節的像素行: A = {a, b, c, d, e, f, g, h} 是否有任何方式來加載在包含8個32位ARGB像素,使得初始灰度值被廣播到其它各2個字節的YMM寄存器這些像素對應的32位像素?結果應該是這樣的:(0是Alpha值) B = {0aaa, 0bbb, 0ccc, 0ddd, 0eee,

    2熱度

    2回答

    我想知道是否可以通過英特爾的SSE內部函數檢查處理器的標誌寄存器嗎? 例如: int idx = _mm_cmpistri(mmrange, mmstr, 0x14); int zero = _mm_cmpistrz(mmrange, mmstr, 0x14); 在該示例中,編譯器能夠這兩個內在優化對單個指令(pcmpistri)並檢查標誌由一個跳轉指令(jz)寄存器。 然而,在下面的示例中

    0熱度

    1回答

    我試圖使用Intel Intrinsics在float陣列上快速執行操作。這些行動本身似乎運作良好;但是,當我嘗試將操作的結果轉換爲標準C變量時,我得到一個SEGFAULT。如果我將下面的指示線註釋掉,程序就會運行。如果我保存指定行的結果,但不以任何方式操縱它,程序運行正常。只有當我試圖(以任何方式)與_mm_cvtss_f32(C)的結果進行交互時,我的程序纔會崩潰。有任何想法嗎? float

    1熱度

    1回答

    背景:我開發了一個用C/C++編寫的計算密集型工具,必須能夠在各種不同的x86_64處理器上運行。爲了加快float和integer的計算速度,代碼中包含了很多SSE *內在函數,並針對不同的CPU SSE功能量身定製了不同的路徑。 (由於CPU標誌在程序開始時被檢測到並用於設置布爾值,因此我假設對於量身定製的代碼塊的分支預測將非常有效地工作)。 爲簡單起見,我認爲只有SSE2到SSE4.2需要考

    6熱度

    1回答

    我該如何編寫一個便攜的GNU C builtin vectors版本,它不依賴於x86 set1內在的? typedef uint16_t v8su __attribute__((vector_size(16))); v8su set1_u16_x86(uint16_t scalar) { return (v8su)_mm_set1_epi16(scalar); // cast ne

    1熱度

    1回答

    我正在使用AVX2 x86 256位SIMD擴展。我想要做一個32位整數成分明智的if-then-else指令。在英特爾文檔中,這樣的指令稱爲vblend。 英特爾內部指南包含函數_mm256_blendv_epi8。這個功能幾乎可以滿足我的需求。唯一的問題是它與8位整數一起工作。不幸的是,文檔中沒有_mm256_blendv_epi32。我的第一個問題是:爲什麼這個功能不存在?我的第二個問題是:

    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理解正在發生的事情,並且它不會

    2熱度

    1回答

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