首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVX512和MSVC预处理符号

AVX512和MSVC预处理符号
EN

Stack Overflow用户
提问于 2019-02-14 17:16:12
回答 1查看 857关注 0票数 2

根据这个链接,AVX512 ( MSVC 2017 )没有预定义的预处理器符号。

我正试图在(你猜到的)窗口上建立一个使用本机库的雷暴系统。本征和雷声on都使用cmake和depinding的编译器预存符号,特征用avx512指令编译或不编译。

使用/arch:AVX512似乎不会在MSVC中触发任何错误,但不会定义特征所需的__AVX512F__符号。我还试图在cmake参数中包括-D__AVX512F__=ON,但仍然没有成功。

由于AVX512没有预定义的预定义处理器符号,是否有任何方法强制Eigen使用avx512进行编译?

更新

根据chtz的评论,我已经签出了Eigen的默认分支,并使用arch: are 512重新编译了具有这个cmake参数(可能不需要所有这些参数)的thundersvm:

代码语言:javascript
复制
-DUSE_CUDA=OFF -DUSE_EIGEN=ON -DBUILD_SHARED_LIBS=OFF -DEIGEN_ENABLE_AVX512=ON -D__AVX512F__=ON -DEIGEN_VECTORIZE_AVX512=ON -DEIGEN_VECTORIZE_AVX2=ON -DEIGEN_VECTORIZE_AVX=ON -DEIGEN_VECTORIZE_FMA=ON

比较英特尔的SDE -mix工具在补丁之前和之后的指令组合,我可以清楚地看到使用了AVX指令(SDE抱怨它在运行skl时不识别指令vbroadcastss zmm0, xmm0,但是对skx很好)。问题是MSVC使用的是AVX的标量版本,运行时没有任何改进(总指令的数量也是相同的),这与此帖子类似。

我是否需要定义其他标志,以便MSVC生成非标量指令?(我想我也会给gcc一次机会)

EN

回答 1

Stack Overflow用户

发布于 2020-10-06 11:25:00

MSVC对AVX-512的支持很差,对不同的子集没有区别.没有安全的方法可以在MSVC上生成AVX512F代码而不可能编写AVX512DQ指令。

最好的AVX-512编译器是gcc和clang。如果您喜欢IDE,可以使用的Clang插件。gcc和clang编译器具有预处理符号,如__AVX512F____AVX512VL__等。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54695779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档