我试图让艾根使用VisualStudio2019中的一些代码使用VisualStudio2015构建工具。
我要确认的是,艾根正在探测并实现其矢量化。
根据本征常见问题的说法,特征“如果检测到支持的SIMD指令集和支持的编译器,将自动启用其矢量化”。
我在项目->属性->配置属性->C/C++->优化中打开了“最大化速度”标志(/O2)
此外,根据本征常见问题,为了检查是否使用向量化,“首先可以检查本征向量化是否启用:然后定义EIGEN_VECTORIZE预处理器符号。”
如果我查看Project->Properties->Configuration >C/C++->预处理器,我没有看到EIGEN_VECTORIZE列出。
这是否意味着它没有被定义?如何检查这个预处理符号?
发布于 2019-11-13 05:22:38
不是定义EIGEN_VECTORIZE,而是在Eigen/Core文件中定义它。基本上,代码的内容如下:
#ifndef EIGEN_DONT_VECTORIZE
#define EIGEN_VECTORIZE
#define EIGEN_VECTORIZE_SSE
#define EIGEN_VECTORIZE_SSE2并继续检查是否正在使用每个指令集,如果使用,则定义EIGEN_VECTORIZE_YYY (其中YYY是指令集)。需要注意的一点是,MSVC没有大于2的SSE定义,如果要使用这些指令,就必须明确定义EIGEN_VECTORIZE_SSE3、EIGEN_VECTORIZE_SSSE3、EIGEN_VECTORIZE_SSE4_1、EIGEN_VECTORIZE_SSE4_2。我也不确定它是否定义了__FMA__,所以如果启用EIGEN_VECTORIZE_FMA,您可能想要定义AVX2。
https://stackoverflow.com/questions/58826250
复制相似问题