gpt4 book ai didi

c++ - Eigen (v141) 中的内部编译器错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:43:15 33 4
gpt4 key购买 nike

在当前版本的 Eigen 中使用 v141 编译文件“ProductEvaluators.h”中的函数时,出现内部编译器错误。

fatal error C1001: An internal error has occurred in the compiler.

该函数如下所示,我将编译器崩溃中的错误缩小到最后一行中的“.sum()”:

EIGEN_DEVICE_FUNC const CoeffReturnType coeff(Index index) const
{
const Index row = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime==1) ? 0 : index;
const Index col = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime==1) ? index : 0;
return (m_lhs.row(row).transpose().cwiseProduct( m_rhs.col(col) )).sum();
}

虽然修复这个特定错误当然很有趣,但我也想知道,什么样的代码通常会引发这种编译器崩溃?

最佳答案

我曾多次看到 MSVC 的编译器崩溃。到目前为止,它一直是 32 位编译器,而 64 位 msvc(以及 gcc 或 clang 就此而言)运行良好。

我使用的解决方法是将表达式拆分为更小的表达式,显式地将子表达式计算为 Eigen::Matrix<> 临时变量。将这些临时对象保留在一个类中,并重新使用这些对象可以最大限度地降低性能成本,但事实并非如此。

关于c++ - Eigen (v141) 中的内部编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45001879/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com