我正在尝试编译一个程序,该程序使用来自相当新的 Intel Haswell 处理器的 AVX2 指令。
我检查过我正在使用的 Macbook Pro 有一个 Crystalwell 处理器,它应该有这样的 AVX2 扩展:
sysctl -n machdep.cpu.brand_string
Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
我的目的是使用 Ubuntu 15.10 64 位版本的 VirtualBox 映像编译此类程序,该映像具有最新版本的 gcc:
gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
当我检查 VirtualBox 机器中的扩展时,我没有看到列出的 avx2:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
stepping : 1
cpu MHz : 2494.226
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm
bugs :
bogomips : 4988.45
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
有任何想法吗?
我也在问自己同样的问题。我不久前通读了 VirtualBox 文档的主要部分,并记得 SSE4.1/SSE4.2 有很好的文档记录,但 AVX2 没有,尽管预计自VirtualBox 5.0 Beta 3以来它会暴露给来宾。
以下是 14.04 主机上 /proc/cpuinfo 的标志:
在 VirtualBox 5.0.14 托管的虚拟机上
我搜索了 Internet 并下载了源代码,这使我找到了这张票据,其中frank(我假设是 Frank Mehnert)解释了如何禁用 AVX 并且这张票据在变更日志中注明是从 5.0.2 开始暂时禁用 AVX2 直通的原因。所以有理由禁用它,你应该小心。
我跑了
VBoxManage setextradata "$vm_name" VBoxInternal/CPUM/IsaExts/AVX2 1
,启动了我的 VM 并启用了 AVX2:要检查我在 VM 中运行了 x265:
我环顾四周是否可以启用其他功能,
grep -r -i "search_term" .
在源代码中确实为搜索词pIsaExts
、pExtFeatureLeaf
、和提供了一些结果pFeatures
,但是添加键要么没有效果,要么 VM 拒绝启动。说到这里,要查看您设置的所有额外键,请运行:pCurLeaf
pCpumCfg
并删除一个键只需运行与设置键相同的命令但没有值,例如:
阅读和理解项目的源代码组织而不是仅仅浏览源代码会更好。