avx2

    3熱度

    1回答

    無效操作數我想一個CentOS 6.5服務器上安裝通過pip install annoyannoy,但得到了下面的錯誤。任何想法?我發現VBROADCASTSS在here,但仍然不知道如何解決這些錯誤。 gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -

    11熱度

    1回答

    我遇到了一個可能導致錯誤代碼生成的bug,它們是3.4,3.5和3.6中繼。實際上引發的問題的來源是相當複雜的,但我已經能夠將其降低到這個自成體系例如: #include <iostream> #include <immintrin.h> #include <string.h> struct simd_pack { enum { num_vectors = 1 };

    4熱度

    1回答

    我正在優化圖像上的高斯模糊算法,我想用__m256內在函數替換下面代碼中的浮點緩衝區[8]的用法變量。什麼系列的指令最適合這項任務? // unsigned char *new_image is loaded with data ... float buffer[8]; buffer[x ] = new_image[x]; buffer[x + 1] = ne

    0熱度

    1回答

    我正在使用英特爾AVX2指令編寫程序。我在我的程序中發現了一個只出現在優化級別-O2或更高的錯誤(使用-O1它很好)。經過廣泛的調試後,我縮小了越野車的範圍。現在這個錯誤似乎是由於編譯器錯誤地優化了一個簡單的拷貝分配__m256i變量造成的。 考慮下面的代碼片段。 Foo是一個模板化函數。我用CMP = kLess, OPT=kSet進行測試。我知道優化器可能會優化開關。它甚至可以優化變量y。 越

    0熱度

    1回答

    我無法加載或存儲AVX2內在函數指令,就像我之前在AVX中所做的那樣。沒有錯誤,只是警告,並且它在運行時不執行加載/存儲指令。其他AVX2指令正常工作,但無法從內存加載。 如下。 AVX: float t[MAX][MAX]; row0 = _mm256_load_ps(&t[i][j]); _mm256_store_ps(&t[j][i], row0); AVX2: const int3

    2熱度

    1回答

    static __inline__ uint64_t mulhilo64(uint64_t a, uint64_t b, uint64_t* hip) { __uint128_t product = ((__uint128_t)a)*((__uint128_t)b); *hip = product>>64; return (uint64_t)product;

    3熱度

    1回答

    我希望有人可以在這裏幫忙。 我有一個大的字節向量,從中創建一個小字節向量(基於掩碼),然後用simd處理。 當前掩碼是baseOffset +子掩碼(byte [256])的數組,對於存儲進行了優化,因爲存在> 10^8。我創建一個maxsize子向量,然後循環遍歷mask數組,並將baseOffssetby 256乘以大值向量的掩碼加載中的每個位偏移量,然後將這些值依次放入較小的向量中。然後通過

    1熱度

    1回答

    我正在研究一些旨在在32位模式下在x86上運行的代碼。在這種模式下,我明白我只有8個SIMD/AVX2寄存器(YMM0-7)可以自由使用。然而,單獨的一些矢量子程序有時候會使用的寄存器數量超過了這個數量(這意味着它們仍然需要在路上的某個地方 - 大多數情況下並不是那麼晚)。 我的理解是,當編譯器找不到未使用的寄存器時,會將較舊的寄存器導出到堆棧存儲器。但這對性能有多大影響? (例如稍後在每個導出/

    2熱度

    1回答

    我有配置:Intel(R)Core(TM)i7-4702MQ CPU(具有Haswell架構),Windows 8,Intel C++ Compiller XE 13.0。 我想運行我的AVX2優化方案,並把編譯標誌: /QaxCORE-AVX2, /QxCORE-AVX2 但是當我運行該程序,我得到錯誤: Fatal Error: This program was not built to ru

    0熱度

    1回答

    我將矢量化代碼從SSE2內在函數轉換爲AVX2內在函數, ,並希望知道如何檢查256i(16位)矢量是否包含任何大於零的元素。下面是在SSE2使用的代碼: int check2(__m128i vector1, __m128i vector2) { __m128i vcmp = _mm_cmplt_epi16(vector2, vector1); int cmp = _mm_