intrinsics

    2熱度

    1回答

    我想爲Xeon Phi(60核心)編寫基準。在我的程序中,我使用OpenMP標準和Intel內部函數。我實現了比標量算法快230倍以下算法的並行版本(5點模板計算)。我想添加SIMD到並行代碼。我的表現有問題。當我調用_m512_store_pd()時,計算性能下降,SIMD並行版本比沒有SIMD的版本慢。問題是什麼?我該怎麼做才能獲得更好的表現? for(int i=start; i<stop;

    2熱度

    1回答

    假設我有8個SSE寄存器,枚舉爲r0,r1,r2,...,r7,並且每個都包含8個16位整數。我想創建一個新的寄存器,其中包含8個寄存器中的第i個元素,從r0開始,到r7。換句話說,我想獲得一個寄存器具有以下內容: r0[i],r1[i],r2[i],r3[i],r4[i],r5[i],r6[i],r7[i] 會如何,使用SSE(或AVX)做些什麼呢? 謝謝! 請注意,索引i不是常數,而是在運行時

    0熱度

    1回答

    我需要計算CRC,以便形成一個INTEL機器上的散列函數,並具有以下兩個固有功能上來: _mm_crc32_u32 _mm_crc32_u64 在我的項目,我處理32位變量和我的困境是移位和或運算每兩個變量(因此產生一個64位的變量),然後使用64位的CRC或運行之間在兩個32-bi的每一個上都有32位CRC t變量。 我無法在任何地方找到這些功能中每一個所用的週期數量,並且從英特爾功能規格中不清

    4熱度

    2回答

    我已經寫和調試一些AVX代碼G ++,現在我試圖讓它與MSVC的工作,但我不斷收到 錯誤LNK2019:解析外部符號__mm256_setr_epi64x中引用功能 「私人:工會__m256i __thiscall avx_matrix :: avx_bit_mask(無符號整數)常量」(avx_bit_mask @ avx_matrix @@ ABE AT__m256i @@我@ Z?) 的代碼

    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;

    2熱度

    2回答

    我有一個32位RGBA圖像緩衝區。讓我們假設它是,比如1920x1080 - 典型的從左到右,從上到下的RAW緩衝區。 這是我想很快做真的是什麼:創建源於這一個代碼緩衝了兩個新的緩衝區... 「補」緩衝...... RGB值匹配原始緩衝區。 Alpha值將變爲不透明(0xff) 「KEY」Buffer ...每個RGB值都與原始緩衝區的Alpha值匹配。 α值將是不透明的(0xff的) 我(慢)的

    0熱度

    1回答

    我們正在嘗試製作不同操作的矢量內在庫,其中一個庫獲取數字的絕對值。但是,我的教授只限於double。 我是相當新的x86的內部函數指令集,所以我希望有人能賜教。 這是我到目前爲止有: void vectorAbs(double *x, double *y, unsigned int N); int main() { double x[] = { -1, -2, -3, -4, -5,

    3熱度

    1回答

    假設我有一個128寄存器,它包含一些浮點數[x1,x2,x3,x4],另一個保存[y1,y2,y3,y4]。 獲得像[x1,y1,x2,y2]這樣的東西的最好方法是什麼? 我想我可以多次移動寄存器,使用臨時對象,然後在多個步驟中合併它們,但是我想知道是否缺少一些方便的指令可以讓我的生活更輕鬆。我認爲這是一件很平常的事情,所以我想知道這裏最好的做法是什麼。 謝謝!

    4熱度

    2回答

    假設我們有一個std::vector,或任何其他序列容器(有時它將是一個雙流),其中存儲uint64_t元素。 現在,讓我們將這個向量看作是連續位的一個序列size() * 64。我需要找到由給定的[begin, end)範圍內的位組成的單詞,因爲end - begin <= 64所以它適合一個單詞。 我現在所擁有的解決方案找到了兩個單詞,它們的各個部分將形成結果,並分別掩蓋並組合它們。因爲我需要

    2熱度

    3回答

    我正在創建一個簡單的矩陣乘法程序,在Intel Xeon Phi體系結構上運行。 經過多次嘗試自動矢量化嘗試獲得更好的性能後,我不得不使用英特爾內部函數。 到目前爲止,矩陣大小是由源代碼中的#define給出的,但是當我在運行時嘗試給出它時,性能會有很大的下降。 的源代碼是下面的: #include <stdio.h> #include <stdlib.h> #include <time.h>