ValeevGroup / mpqc

The Massively Parallel Quantum Chemistry program, MPQC, computes properties of atoms and molecules from first principles using the time independent Schrödinger equation.
66 stars 24 forks source link

Eigen3 related build failure in compute_k.cc #54

Closed mbanck closed 7 years ago

mbanck commented 7 years ago

Many thanks for 9c3df01f50be9300f0ddd45dedc4b5faf31d7bd6, but I see a build failure in compute_k.cc now:

[ 95%] Building CXX object src/lib/chemistry/qc/scf/CMakeFiles/scf.dir/cadf/compute_k.cc.o
cd "/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/lib/chemistry/qc/scf" && /usr/bin/c++   -DHAVE_CONFIG_H -DMPQC_NEW_FEATURES -DMPQC_R12 -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/lib" -I"/<<PKGBUILDDIR>>/src/lib" -I"/<<PKGBUILDDIR>>/include" -I/usr/include/mpich -I/usr/include/eigen3 -I/usr/include/openbabel-2.0 -I/usr/include/libint2 -I/usr/include/TiledArray/external  -std=c++11 -g -O2 -std=c++11   -o CMakeFiles/scf.dir/cadf/compute_k.cc.o -c "/<<PKGBUILDDIR>>/src/lib/chemistry/qc/scf/cadf/compute_k.cc"
In file included from /usr/include/eigen3/Eigen/Core:414:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /<<PKGBUILDDIR>>/src/lib/util/misc/xmlwriter.h:54,
                 from /<<PKGBUILDDIR>>/src/lib/chemistry/qc/scf/cadf/compute_k.cc:35:
/usr/include/eigen3/Eigen/src/Core/CoreEvaluators.h: In instantiation of 'struct Eigen::internal::evaluator<Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > > >':
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:710:20:   required from 'void Eigen::internal::call_dense_assignment_loop(DstXprType&, const SrcXprType&, const Functor&) [with DstXprType = Eigen::Matrix<double, -1, -1, 1>; SrcXprType = Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >; Functor = Eigen::internal::assign_op<double, double>]'
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:862:31:   required from 'static void Eigen::internal::Assignment<DstXprType, SrcXprType, Functor, Eigen::internal::Dense2Dense, Weak>::run(DstXprType&, const SrcXprType&, const Functor&) [with DstXprType = Eigen::Matrix<double, -1, -1, 1>; SrcXprType = Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >; Functor = Eigen::internal::assign_op<double, double>; Weak = void]'
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:819:49:   required from 'void Eigen::internal::call_assignment_no_alias(Dst&, const Src&, const Func&) [with Dst = Eigen::Matrix<double, -1, -1, 1>; Src = Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >; Func = Eigen::internal::assign_op<double, double>]'
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:721:41:   required from 'Derived& Eigen::PlainObjectBase<Derived>::_set_noalias(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >; Derived = Eigen::Matrix<double, -1, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:805:7:   required from 'void Eigen::PlainObjectBase<Derived>::_init1(const Eigen::DenseBase<ElseDerived>&) [with T = Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >; OtherDerived = Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >; Derived = Eigen::Matrix<double, -1, -1, 1>]'
/usr/include/eigen3/Eigen/src/Core/Matrix.h:296:31:   required from 'Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const T&) [with T = Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >; _Scalar = double; int _Rows = -1; int _Cols = -1; int _Options = 1; int _MaxRows = -1; int _MaxCols = -1]'
/<<PKGBUILDDIR>>/src/lib/chemistry/qc/scf/cadf/compute_k.cc:1516:49:   required from here
/usr/include/eigen3/Eigen/src/Core/CoreEvaluators.h:90:8: error: no type named 'NestedExpression' in 'class Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >'
 struct evaluator : public unary_evaluator<T>
        ^~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/CoreEvaluators.h:92:30: error: no type named 'NestedExpression' in 'class Eigen::NestByValue<Eigen::Map<Eigen::Matrix<double, -1, -1, 1>, 0, Eigen::OuterStride<> > >'
   typedef unary_evaluator<T> Base;
                              ^~~~

The eigen3 package is at 3.3.1, is that too old/too new?

mbanck commented 7 years ago

@evaleev many thanks for the fix, it built fine now: https://buildd.debian.org/status/fetch.php?pkg=mpqc3&arch=amd64&ver=0.0~git20170114-2&stamp=1484906348&raw=0

For the record, when I built it on my personal notebook, I got an ICE in twobody_intermediates_ta.cc:

[ 70%] Building CXX object src/lib/chemistry/qc/mbptr12/CMakeFiles/mbptr12.dir/twobody_intermediates_ta.cc.o
cd "/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/lib/chemistry/qc/mbptr12" && /usr/bin/c++   -DHAVE_CONFIG_H -DMPQC_NEW_FEATURES -DMPQC_R12 -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/lib" -I"/<<PKGBUILDDIR>>/src/lib" -I"/<<PKGBUILDDIR>>/include" -I/usr/include/mpich -I/usr/include/eigen3 -I/usr/include/openbabel-2.0 -I/usr/include/libint2 -I/usr/include/TiledArray/external  -std=c++11 -g -O2 -std=c++11   -o CMakeFiles/mbptr12.dir/twobody_intermediates_ta.cc.o -c "/<<PKGBUILDDIR>>/src/lib/chemistry/qc/mbptr12/twobody_intermediates_ta.cc"
In file included from /<<PKGBUILDDIR>>/src/lib/chemistry/qc/mbptr12/sr_r12intermediates.h:702:0,
                 from /<<PKGBUILDDIR>>/src/lib/chemistry/qc/mbptr12/twobody_intermediates_ta.cc:38:
/<<PKGBUILDDIR>>/src/lib/chemistry/qc/mbptr12/sr_r12intermediates_VXB_diag.h: In member function 'void sc::SingleReference_R12Intermediates<T>::compute_multipole() [with T = double]':
/<<PKGBUILDDIR>>/src/lib/chemistry/qc/mbptr12/sr_r12intermediates_VXB_diag.h:4163:8: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without
   void SingleReference_R12Intermediates<T>::compute_multipole() {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c++: internal compiler error: Killed (program cc1plus)

Maybe that was due to not enough RAM or such, as it builds fine on the Debian autobuilder.