g ++:没有AVX这样的指令 [英] g++: No Such Instruction with AVX

查看:336
本文介绍了g ++:没有AVX这样的指令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我编写一个程序时,我正在使用C ++编写程序(用于最新的Macbook pro,当然这支持AVX指令集),我得到了以下错误。我正在使用从Macports获得的最新版g ++。你有什么想法,我可以做什么来修复错误,而不会限制指令集可用于编译器?是否有任何特别的包,我应该尝试更新?

  g ++  -  mp-4.7 -std = c ++ 11  - Wall -Ofast -march = native -fno-rtti src / raw_to_json.cpp -o bin / raw_to_json.bin 
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1831:no such instruction:`` vpxor%xmm0,%xmm0,%xmm0'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1847:no such instruction:`vmovdqa%xmm0,96(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1848:no such instruction:`vmovdqa%xmm0,112(%rsp)'
/ var / folders / 83 / tjczqmxn1y9166m642_rxdlw0000gn / T // cc0hIx0w.s:1849:no such instruction:`vmovdqa%xmm0,128(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1850:no such instruction:`vmovdqa% xmm0,144(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1851:no such instruction:`vmovdqa%xmm0,160(%rsp)'

感谢您的帮助!

解决方案

修正了Conrado PLG回答他自己的问题的答案此处。总之,我必须做到以下几点:


  1. 移动或以其他方式摆脱旧的,位于 / opt / local / bin /../ local / libexec / as / x86_64 / as

  2. 复制脚本Vincent Habchi,找到此处,至 / opt / local / bin /../local/libexec/as/ x86_64 / as

  3. sudo chmod + x

请注意,由于调用汇编器需要通过shell脚本第一。


When I compiled a program I was writing in C++ (for the latest Macbook pro, which of course supports the AVX instruction set), I got the following errors. I am using the latest release of g++ obtained from Macports. Do you have any ideas as to what I can do to fix the error without restricting the instruction sets available to the compiler? Is there any package in particular that I should try to update?

g++-mp-4.7 -std=c++11 -Wall -Ofast -march=native -fno-rtti src/raw_to_json.cpp -o bin/raw_to_json.bin
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1831:no such instruction: `vpxor %xmm0, %xmm0,%xmm0'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1847:no such instruction: `vmovdqa %xmm0, 96(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1848:no such instruction: `vmovdqa %xmm0, 112(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1849:no such instruction: `vmovdqa %xmm0, 128(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1850:no such instruction: `vmovdqa %xmm0, 144(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1851:no such instruction: `vmovdqa %xmm0, 160(%rsp)'

Thanks for the help!

解决方案

Fixed thanks to Conrado PLG's answer to his own question here. In short, I had to do the following:

  1. Move or otherwise get rid of the old as, found at /opt/local/bin/../local/libexec/as/x86_64/as.
  2. Copy the script by Vincent Habchi, found here, to /opt/local/bin/../local/libexec/as/x86_64/as.
  3. sudo chmod +x the script.

Note that there may some performance degradation, due to the fact that calling the assembler requires going through a shell script first.

这篇关于g ++:没有AVX这样的指令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆