我想知道这是否是一个已知问题;如果没有,有没有人经历过这个,有没有人设法找到修复?
我在Core i7-3700上的Fedora 25上使用GCC 6.4使用Eigen 3.3.4构建数值计算代码。我的proc / cpuinfo说我应该有AVX。我试过两个版本。构建1:
g++ -std=c++14 -O3 -m64 -mavx
并构建2:
g++ -std=c++14 -O3 -m64 -msse4.2
Build 2运行正常。但是当我尝试构建1时,我在Zero
函数中获得了方形固定大小矩阵以及inverse()
方法中的段错误。我会对可能发生的事情表示赞赏。
std::vector
固定大小的特征矩阵。
答案 0 :(得分:1)
我使用std::vector
固定大小的矩阵这一事实是关键。非常感谢请求最小的例子@rex。在准备示例时,我发现了以下内容。
对于某些大输入大小(包含矩阵的std::vector
),Eigen会引发运行时错误,这导致我this站点。按照说明修复了问题。
基本上,std::vector
及其标准分配器似乎与固定大小数组操作的矢量化的Eigen对齐要求相混淆。使用Eigen提供的aligned_allocator
解决了这个问题。