C++ 当使用固定大小矩阵的“std::vector”时,常青藤桥上的AVX的特征SEG故障

C++ 当使用固定大小矩阵的“std::vector”时,常青藤桥上的AVX的特征SEG故障,c++,vectorization,eigen,eigen3,C++,Vectorization,Eigen,Eigen3,我想知道这是否是一个已知的问题;如果没有,是否有人经历过这种情况,是否有人设法找到了解决办法 我正在使用Eigen 3.3.4和GCC 6.4在Fedora 25上构建一个数值计算代码,核心是i7-3700。我的proc/cpuinfo说我应该有AVX。我尝试了两个版本。构建1: g++ -std=c++14 -O3 -m64 -mavx 并构建2: g++ -std=c++14 -O3 -m64 -msse4.2 构建2运行良好。但是当我尝试构建1时,我在固定大小的平方矩阵的Zero函数以

我想知道这是否是一个已知的问题;如果没有,是否有人经历过这种情况,是否有人设法找到了解决办法

我正在使用Eigen 3.3.4和GCC 6.4在Fedora 25上构建一个数值计算代码,核心是i7-3700。我的proc/cpuinfo说我应该有AVX。我尝试了两个版本。构建1:

g++ -std=c++14 -O3 -m64 -mavx
并构建2:

g++ -std=c++14 -O3 -m64 -msse4.2
构建2运行良好。但是当我尝试构建1时,我在固定大小的平方矩阵的
Zero
函数以及
inverse()
方法中得到了segfaults。如果有人给我指点可能发生的事情,我将不胜感激


编辑:我忘记了一个非常重要的细节:我实际上使用的是固定大小特征矩阵的
std::vector

我使用的是固定大小矩阵的
std::vector
,这一事实是关键。非常感谢您要求提供一个简单的示例@rex。在准备示例时,我发现了以下内容

对于某些较大的输入大小(包含矩阵的
std::vector
),Eigen抛出一个运行时错误,导致我访问了该站点。按照那里的说明解决了这个问题


本质上,
std::vector
及其标准分配器似乎与Eigen对固定大小数组操作矢量化的对齐要求相冲突。使用Eigen提供的
aligned_分配器
解决了这个问题。

听起来像是未定义的行为。你能发一封信吗?