在 Mavericks 上编译 AVX2 程序

Posted

技术标签:

【中文标题】在 Mavericks 上编译 AVX2 程序【英文标题】:Compiling AVX2 program on Mavericks 【发布时间】:2013-12-24 10:50:38 【问题描述】:

我尝试在我的 Mac OS 10.9 上使用 gcc 版本 4.9.0 20131201 编译一个虚拟 AVX2 程序

//dummy program
#include <immintrin.h> // AVX2
#include <stdio.h>
int main(int argc, char* argv[]) 
   __m256i reg =  _mm256_set1_epi8(1);
   __m256i result = _mm256_max_epu8(reg,reg);
   printf("%d",((int *)&result)[0]);

我用这个命令编译

gcc -mavx -O0 test.C

我得到了这个错误

In function 'int main(int, char**)':
avx2intrin.h:373:1: 
error: inlining failed in call to always_inline 
'__m256i _mm256_max_epu8(__m256i, __m256i)': target specific option mismatch
 _mm256_max_epu8 (__m256i __A, __m256i __B)

_mm256_max_epu8 使用 always_inline 属性。这是问题吗?

如果我用 O3 编译也会遇到问题。

我做错了什么?

【问题讨论】:

gcc 4.9 正在开发中,所以我会向他们提出一个错误 这个问题似乎离题了,因为它是关于预发布软件的,应该会有错误 【参考方案1】:

要使用 AVX2 编译目标,请使用 -mavx2

【讨论】:

【参考方案2】:

我可以用

编译程序

g++ -mavx2 -Wa,-q test.C

在这个thread 中讨论了为什么还需要-Wa,q

【讨论】:

以上是关于在 Mavericks 上编译 AVX2 程序的主要内容,如果未能解决你的问题,请参考以下文章

在没有 AVX 的情况下编译 boost

在没有AVX的情况下编译boost

是否可以在 linux 上编译 VST?

程序在一台机器上编译,但不在另一台机器上编译

在 ubuntu 上编译 rpcgen 程序

如何在 Android TV 上编译驱动程序?