trilinos / Trilinos

Primary repository for the Trilinos Project
https://trilinos.org/
Other
1.19k stars 565 forks source link

Amesos2-compilation combined with MUMPS fails #1616

Closed anates closed 7 years ago

anates commented 7 years ago

Compiling Amesos2 together with MUMPS fails with error messages:

In file included from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS.hpp:49:0, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Factory.hpp:123, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory_def.hpp:52, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory.hpp:49, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_registerLinearSolverFactory.cpp:45: ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp: In constructor 'Amesos2::MUMPS< , >::MUMPS(Teuchos::RCP, Teuchos::RCP, Teuchos::RCP)': ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp:81:7: error: class 'Amesos2::MUMPS< , >' does not have any field named 'iscontiguous' , iscontiguous(true) ^~~~~~ ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp: In member function 'int Amesos2::MUMPS< , >::solve_impl(Teuchos::Ptr<Amesos2::MultiVecAdapter >, Teuchos::Ptr<const Amesos2::MultiVecAdapter >) const': ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp:249:10: error: 'iscontiguous' was not declared in this scope if ( iscontiguous == true ) { ^~~~~~ ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp:281:10: error: 'iscontiguous' was not declared in this scope if ( iscontiguous == true ) { ^~~~~~ ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp: In member function 'void Amesos2::MUMPS< , >::setParameters_impl(const Teuchos::RCP&)': ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp:355:7: error: 'iscontiguous' was not declared in this scope iscontiguous = parameterList->get("IsContiguous"); ^~~~~~ ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp: In member function 'bool Amesos2::MUMPS< , >::loadA_impl(Amesos2::EPhase)': ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp:414:14: error: 'iscontiguous' was not declared in this scope if ( iscontiguous == true ) { ^~~~~~ In file included from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_ArrayRCP.hpp:50:0, from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_ArrayView.hpp:47, from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_GlobalMPISession.hpp:52, from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_FancyOStream.hpp:46, from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_Describable.hpp:46, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Solver_decl.hpp:55, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Solver.hpp:47, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Factory.hpp:87, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory_def.hpp:52, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory.hpp:49, from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_registerLinearSolverFactory.cpp:45: ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_as.hpp: In instantiation of 'TypeTo Teuchos::as(const TypeFrom&) [with TypeTo = Amesos2::MUMPST::mumps_double_complex; TypeFrom = std::complex]': ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MultiVecAdapter_def.hpp:133:31: required from 'static void Amesos2::Util::diff_type_get_copy<MV, S>::apply(const Teuchos::Ptr&, const Teuchos::ArrayView&, const size_t&, Teuchos::Ptr<const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> >, Amesos2::EDistribution) [with MV = Amesos2::MultiVecAdapter<Tpetra::MultiVector<std::complex, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode > >; S = Amesos2::MUMPST::mumps_double_complex; size_t = long unsigned int; typename MV::node_t = Kokkos::Compat::KokkosDeviceWrapperNode; typename MV::global_ordinal_t = long long int; typename MV::local_ordinal_t = int]' ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MultiVecAdapter_def.hpp:154:49: required from 'static void Amesos2::Util::get_1d_copy_helper<MV, S>::do_get(const Teuchos::Ptr&, const Teuchos::ArrayView&, size_t, Teuchos::Ptr<const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> >, Amesos2::EDistribution) [with MV = Amesos2::MultiVecAdapter<Tpetra::MultiVector<std::complex, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode > >; S = Amesos2::MUMPST::mumps_double_complex; size_t = long unsigned int; typename MV::node_t = Kokkos::Compat::KokkosDeviceWrapperNode; typename MV::global_ordinal_t = long long int; typename MV::local_ordinal_t = int]' ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MultiVecAdapter_def.hpp:181:14: required from 'static void Amesos2::Util::get_1d_copy_helper<MV, S>::do_get(const Teuchos::Ptr&, const Teuchos::ArrayView&, size_t, Amesos2::EDistribution, typename MV::global_ordinal_t) [with MV = Amesos2::MultiVecAdapter<Tpetra::MultiVector<std::complex, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode > >; S = Amesos2::MUMPST::mumps_double_complex; size_t = long unsigned int; typename MV::global_ordinal_t = long long int]' ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_def.hpp:251:26: required from 'int Amesos2::MUMPS< , >::solve_impl(Teuchos::Ptr<Amesos2::MultiVecAdapter >, Teuchos::Ptr<const Amesos2::MultiVecAdapter >) const [with Matrix = Tpetra::CrsMatrix<std::complex, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode, false>; Vector = Tpetra::MultiVector<std::complex, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode >]' ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_SolverCore_def.hpp:211:3: required from 'void Amesos2::SolverCore<ConcreteSolver, Matrix, Vector>::solve(Teuchos::Ptr, Teuchos::Ptr) const [with ConcreteSolver = Amesos2::MUMPS; Matrix = Tpetra::CrsMatrix<std::complex, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode, false>; Vector = Tpetra::MultiVector<std::complex, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode >]' ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_registerLinearSolverFactory.cpp:102:1: required from here ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_as.hpp:2857:61: error: ambiguous template instantiation for 'class Teuchos::ValueTypeConversionTraits<Amesos2::MUMPST::mumps_double_complex, std::complex >' return ValueTypeConversionTraits<TypeTo,TypeFrom>::convert(t);


In file included from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Umfpack_FunctionMap.hpp:52:0,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Umfpack_decl.hpp:49,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Umfpack.hpp:47,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Factory.hpp:108,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory_def.hpp:52,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory.hpp:49,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_registerLinearSolverFactory.cpp:45:
~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Umfpack_TypeMap.hpp:98:7: note: candidates are: template<class TypeTo> class Teuchos::ValueTypeConversionTraits<TypeTo, std::complex<double> > [with TypeTo = Amesos2::MUMPST::mumps_double_complex]
 class ValueTypeConversionTraits<TypeTo, std::complex<double>>
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_FunctionMap.hpp:60:0,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_decl.hpp:57,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS.hpp:47,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Factory.hpp:123,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory_def.hpp:52,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory.hpp:49,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_registerLinearSolverFactory.cpp:45:
~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_MUMPS_TypeMap.hpp:195:9: note:                 template<class TypeFrom> class Teuchos::ValueTypeConversionTraits<Amesos2::MUMPST::mumps_double_complex, TypeFrom> [with TypeFrom = std::complex<double>]
   class ValueTypeConversionTraits<Amesos2::MUMPST::ZMUMPS_COMPLEX , TypeFrom >
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_ArrayRCP.hpp:50:0,
                 from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_ArrayView.hpp:47,
                 from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_GlobalMPISession.hpp:52,
                 from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_FancyOStream.hpp:46,
                 from ~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_Describable.hpp:46,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Solver_decl.hpp:55,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Solver.hpp:47,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Factory.hpp:87,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory_def.hpp:52,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_LinearSolverFactory.hpp:49,
                 from ~/Downloads/Trilinos-master/packages/amesos2/src/Amesos2_Details_registerLinearSolverFactory.cpp:45:
~/Downloads/Trilinos-master/packages/teuchos/core/src/Teuchos_as.hpp:2857:61: error: incomplete type 'Teuchos::ValueTypeConversionTraits<Amesos2::MUMPST::mumps_double_complex, std::complex<double> >' used in nested name specifier
   return ValueTypeConversionTraits<TypeTo,TypeFrom>::convert(t);

Is there a fix I can apply?

mhoemmen commented 7 years ago

@trilinos/amesos2

ndellingwood commented 7 years ago

@anates I just pushed a fix that should work, can you try building again and let me know if this fixed the issue for you?

ndellingwood commented 7 years ago

@anates The fix is in the develop branch of Trilinos by the way (I didn't say that in previous message).

ndellingwood commented 7 years ago

This should be fixed with commit 9b150bc2afa84211a206dbc10229f24e6aeb23a0 in the develop branch. Closing the issue, please reopen if necessary.