簡體   English   中英

g ++ - 4.8中缺少AVX日志內在函數(_mm256_log_ps)?

[英]AVX log intrinsics (_mm256_log_ps) missing in g++-4.8?

我試圖在我的代碼中使用一些AVX內在函數,並遇到了對數內在函數的磚牆。

使用適用於Linux的Intel Intrinsics Guide v3.0.1,我看到內部_mm256_log_ps(__m256)被列為“immintrin.h”的一部分,並且在我當前的arch上也受支持。

但是,嘗試編譯這個簡單的測試用例失敗,並顯示“錯誤:'_ mm256_log_ps'未在此范圍內聲明”

該示例使用g++-4.8 -march=native -mavx test.cpp

#include <immintrin.h>
int main()
{
        __m256 i;
        _mm256_log_ps(i);
}

我錯過了一些基本的東西嗎? 某些內在函數是否不受g ++支持且僅在icc中可用?

已解決:此指令不是真正的內在指令,而是作為ICC的英特爾SVML的一部分實現的。

如您對問題的評論所示,該內在函數不會映射到實際的AVX指令; 它是英特爾對內在集的擴展。 實現可能使用許多底層指令,因為對數不是一個簡單的操作。

如果您想使用非英特爾編譯器但需要快速對數實現,可以使用AVX查看sin()cos()exp()log()函數的這個開源實現 它們基於相同功能的早期SSE2版本

我在這里發布了_mm256_log_pd(__m256d)https_mm256_log_pd(__m256d) 通過一些努力,你應該能夠將它擴展到8個打包float而不是4個double ,盡管你需要修改位操作。 有些部分是簡單的,因為你不需要將__m256i的奇數/偶數32位組件__m256i__m128i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM