在 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 程序的主要内容,如果未能解决你的问题,请参考以下文章