MSVC 2017是否支持自动CPU调度?

时间:2018-04-15 21:30:08

标签: visual-c++ compiler-optimization cpu-architecture avx auto-vectorization

我在一些网站上读到,当使用SSE2架构并检测AVX支持运行时,MSVC实际上可以发出AVX指令。这是真的吗?

我测试了各种循环,肯定会受益于AVX / AVX2支持,但是当在调试器中运行时,我找不到任何AVX指令。

当/ arch:使用AVX时,它会发出AVX指令,但它当然会在不支持它(测试)的CPU上崩溃,所以也没有运行时检测。我可以使用AVX内在函数,它会成功地从它们创建AVX指令。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我已经联系过VC ++团队,答案是" no"。在问题的评论中链接的错误报告只显示正常的错误,而不是自动调度代码生成器中的错误。

因此,如果指定了/ arch:SSE2(默认情况下),VC ++只能自动发送到SSE4。这是目前支持的唯一自动调度形式。换句话说,VC ++无法自动调度到AVX / AVX2。