如何确认Eigen在Visual Studio中启用矢量化?如何查看是否已定义EIGEN_VECTORIZE预处理器符号?

我试图让Eigen使用Visual Studios 2015生成工具在Visual Studios 2019中使用某些代码。

我想确认Eigen正在检测并启用其矢量化。

根据Eigen FAQ,Eigen“如果检测到受支持的SIMD指令集和受支持的编译器,将自动启用其矢量化”。

我在 Project-> Properties-> Configuration Properties-> C / C ++-> Optimization

中启用了“ Maximize Speed”标志(/ O2)。

还根据Eigen常见问题解答,为了检查是否正在使用矢量化,“首先,您可以检查是否已启用Eigen矢量化:然后定义EIGEN_VECTORIZE预处理器符号。”

如果我查看 Project-> Properties-> Configuration Properties-> C / C ++-> Preprocessor ,则看不到EIGEN_VECTORIZE。

这是否意味着未定义?如何检查此预处理器符号?

afang2468 回答:如何确认Eigen在Visual Studio中启用矢量化?如何查看是否已定义EIGEN_VECTORIZE预处理器符号?

您没有定义def removeEven(listIn): return [v for index,val in enumerate(listIn) if index % 2 == 0] ,而是在EIGEN_VECTORIZE文件中定义了它。基本上,代码为:

Eigen/Core

并继续检查是否正在使用每个指令集,以及是否正在定义#ifndef EIGEN_DONT_VECTORIZE #define EIGEN_VECTORIZE #define EIGEN_VECTORIZE_SSE #define EIGEN_VECTORIZE_SSE2 (其中EIGEN_VECTORIZE_YYY是指令集)。要注意的一件事是,MSVC的SSE定义不大于2。如果要使用这些说明,则必须显式定义YYYEIGEN_VECTORIZE_SSE3EIGEN_VECTORIZE_SSSE3EIGEN_VECTORIZE_SSE4_1。我不确定是否也定义了EIGEN_VECTORIZE_SSE4_2,因此如果启用AVX2,您可能想定义__FMA__

本文链接:https://www.f2er.com/3114462.html

大家都在问