2017-07-09 3 views
2

V141を使用して固有の現在のリリースではファイル「ProductEvaluators.h」の機能をコンパイルする場合、私は内部コンパイラエラーを取得するに。固有の内部コンパイルエラー(V141)

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(); 
} 

を、私も思っていましたどのようなコードがこの種のコンパイラクラッシュを引き起こすのでしょうか?

+1

最適化を行わないとどうなりますか?はいの場合は、コンパイラのバグをMicrosoftに報告してください。 –

+0

Ceresをコンパイルしようとすると、これが起こります。これは、現在、v141では使用できません。 – DrPepperJo

答えて

0

私は複数の機会にMSVCのコンパイラクラッシュを見ました。これまで64ビットのmsvc(とgccやclangなど)はうまく動作していました。

回避策私は、表現をより小さなものに分割し、サブ表現を明示的にEigen :: Matrix <> temporariesに評価することを使用しました。 これらの一時オブジェクトをクラス内に保持し、それらのオブジェクトを再利用するとパフォーマンスコストは最小限に抑えられますが、理想的ではありません。

関連する問題