首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确认艾根正在视觉工作室中支持矢量化?如何检查是否定义了EIGEN_VECTORIZE预处理符号?

如何确认艾根正在视觉工作室中支持矢量化?如何检查是否定义了EIGEN_VECTORIZE预处理符号?
EN

Stack Overflow用户
提问于 2019-11-12 20:33:17
回答 1查看 728关注 0票数 0

我试图让艾根使用VisualStudio2019中的一些代码使用VisualStudio2015构建工具。

我要确认的是,艾根正在探测并实现其矢量化。

根据本征常见问题的说法,特征“如果检测到支持的SIMD指令集和支持的编译器,将自动启用其矢量化”。

我在项目->属性->配置属性->C/C++->优化中打开了“最大化速度”标志(/O2)

此外,根据本征常见问题,为了检查是否使用向量化,“首先可以检查本征向量化是否启用:然后定义EIGEN_VECTORIZE预处理器符号。”

如果我查看Project->Properties->Configuration >C/C++->预处理器,我没有看到EIGEN_VECTORIZE列出。

这是否意味着它没有被定义?如何检查这个预处理符号?

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 05:22:38

不是定义EIGEN_VECTORIZE,而是在Eigen/Core文件中定义它。基本上,代码的内容如下:

代码语言:javascript
复制
#ifndef EIGEN_DONT_VECTORIZE
    #define EIGEN_VECTORIZE
    #define EIGEN_VECTORIZE_SSE
    #define EIGEN_VECTORIZE_SSE2

并继续检查是否正在使用每个指令集,如果使用,则定义EIGEN_VECTORIZE_YYY (其中YYY是指令集)。需要注意的一点是,MSVC没有大于2的SSE定义,如果要使用这些指令,就必须明确定义EIGEN_VECTORIZE_SSE3EIGEN_VECTORIZE_SSSE3EIGEN_VECTORIZE_SSE4_1EIGEN_VECTORIZE_SSE4_2。我也不确定它是否定义了__FMA__,所以如果启用EIGEN_VECTORIZE_FMA,您可能想要定义AVX2。

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

https://stackoverflow.com/questions/58826250

复制
相关文章

相似问题

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