ifpack2: build error with scalar=FLOAT and COMPLEX_DOUBLE enabled
Created by: ajpowel
@trilinos/ifpack2
Current Behavior
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_Vector_SIMD_Arith.hpp:619:5: note: template argument deduction/substitution failed:
In file included from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_Gemm_Serial_Internal.hpp:12:0,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_Gemm_Serial_Impl.hpp:8,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_BlockTriDiContainer_def.hpp:57,
from /scratch/ajpowel/code_032119/packages/ifpack2/src/Ifpack2_BlockTriDiContainer.hpp:2,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_ContainerFactory_def.hpp:51,
from /scratch/ajpowel/code_032119/packages/ifpack2/src/Ifpack2_ContainerFactory.hpp:2,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_BlockRelaxation_decl.hpp:52,
from /scratch/ajpowel/code_032119/packages/ifpack2/src/Ifpack2_BlockRelaxation.hpp:1,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_Details_OneLevelFactory_def.hpp:54,
from /scratch/ajpowel/code_032119/packages/ifpack2/src/Ifpack2_Details_OneLevelFactory.hpp:2,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_Details_Factory_def.hpp:46,
from /scratch/ajpowel/code_032119/packages/ifpack2/src/Ifpack2_Details_Factory.hpp:2,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_Factory_decl.hpp:48,
from /scratch/ajpowel/code_032119/packages/ifpack2/src/Ifpack2_Factory.hpp:1,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_Details_LinearSolverFactory_def.hpp:54,
from /scratch/ajpowel/code_032119/packages/ifpack2/src/Ifpack2_Details_LinearSolverFactory.hpp:2,
from /scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_Details_registerLinearSolverFactory.cpp:45:
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_InnerGemmFixC_Serial_Impl.hpp:1101:67: note: mismatched types 'Kokkos::complex<RealType1>' and 'double'
C[0*_cs0+0*_cs1] += alpha * c_00; C[0*_cs0+1*_cs1] += alpha * c_01;
~~~~~~^~~~~~
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_InnerGemmFixC_Serial_Impl.hpp: In instantiation of 'int KokkosBatched::Experimental::InnerGemmFixC<mb, nb>::serial_invoke(ScalarType, const ValueType*, const ValueType*, int, ValueType*) [with ScalarType = double; ValueType = KokkosBatched::Experimental::Vector<KokkosBatched::Experimental::SIMD<float>, 16>; int mb = 1; int nb = 1]':
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_InnerGemmFixC_Serial_Impl.hpp:1285:80: required from 'int KokkosBatched::Experimental::InnerGemmFixC<mb, nb>::serial_invoke(ScalarType, const ValueType*, const ValueType*, int, int, int, ValueType*) [with ScalarType = double; ValueType = KokkosBatched::Experimental::Vector<KokkosBatched::Experimental::SIMD<float>, 16>; int mb = 2; int nb = 2]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_InnerGemmFixC_Serial_Impl.hpp:1259:71: required from 'int KokkosBatched::Experimental::InnerGemmFixC<mb, nb>::serial_invoke(ScalarType, const ValueType*, const ValueType*, int, int, int, ValueType*) [with ScalarType = double; ValueType = KokkosBatched::Experimental::Vector<KokkosBatched::Experimental::SIMD<float>, 16>; int mb = 3; int nb = 3]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_InnerGemmFixC_Serial_Impl.hpp:1230:71: required from 'int KokkosBatched::Experimental::InnerGemmFixC<mb, nb>::serial_invoke(ScalarType, const ValueType*, const ValueType*, int, int, int, ValueType*) [with ScalarType = double; ValueType = KokkosBatched::Experimental::Vector<KokkosBatched::Experimental::SIMD<float>, 16>; int mb = 4; int nb = 4]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_Gemm_Team_Internal.hpp:139:13: required from 'KokkosBatched::Experimental::TeamGemmInternal<ArgAlgo>::invoke(const MemberType&, int, int, int, ScalarType, const ValueType*, int, int, const ValueType*, int, int, ScalarType, ValueType*, int, int) [with MemberType = MemberType; ScalarType = ScalarType; ValueType = ValueType; ArgAlgo = KokkosBatched::Experimental::Algo::Level3::Blocked]::<lambda(int, int, int, const ValueType*, const ValueType*, ValueType*)>::<lambda(const int&)> [with MemberType = Kokkos::Impl::HostThreadTeamMember<Kokkos::Serial>; ScalarType = double; ValueType = KokkosBatched::Experimental::Vector<KokkosBatched::Experimental::SIMD<float>, 16>]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_Gemm_Team_Internal.hpp:144:44: required from 'struct KokkosBatched::Experimental::TeamGemmInternal<ArgAlgo>::invoke(const MemberType&, int, int, int, ScalarType, const ValueType*, int, int, const ValueType*, int, int, ScalarType, ValueType*, int, int) [with MemberType = MemberType; ScalarType = ScalarType; ValueType = ValueType; ArgAlgo = KokkosBatched::Experimental::Algo::Level3::Blocked]::<lambda(int, int, int, const ValueType*, const ValueType*, ValueType*)> [with MemberType = Kokkos::Impl::HostThreadTeamMember<Kokkos::Serial>; ScalarType = double; ValueType = KokkosBatched::Experimental::Vector<KokkosBatched::Experimental::SIMD<float>, 16>]::<lambda(const int&)>'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_Gemm_Team_Internal.hpp:130:11: [ skipping 12 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_Parallel.hpp:191:4: required from 'void Kokkos::parallel_for(const ExecPolicy&, const FunctorType&, const string&, typename Kokkos::Impl::enable_if<Kokkos::is_execution_policy<ExecPolicy>::value>::type*) [with ExecPolicy = Kokkos::TeamPolicy<Kokkos::Serial, Ifpack2::BlockTriDiContainerDetails::ExtractAndFactorizeTridiags<Tpetra::RowMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> > >::ExtractAndFactorizeTag>; FunctorType = Ifpack2::BlockTriDiContainerDetails::ExtractAndFactorizeTridiags<Tpetra::RowMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> > >; std::__cxx11::string = std::__cxx11::basic_string<char>; typename Kokkos::Impl::enable_if<Kokkos::is_execution_policy<ExecPolicy>::value>::type = void]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_Parallel.hpp:244:25: required from 'void Kokkos::parallel_for(const string&, const ExecPolicy&, const FunctorType&) [with ExecPolicy = Kokkos::TeamPolicy<Kokkos::Serial, Ifpack2::BlockTriDiContainerDetails::ExtractAndFactorizeTridiags<Tpetra::RowMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> > >::ExtractAndFactorizeTag>; FunctorType = Ifpack2::BlockTriDiContainerDetails::ExtractAndFactorizeTridiags<Tpetra::RowMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> > >; std::__cxx11::string = std::__cxx11::basic_string<char>]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_BlockTriDiContainer_impl.hpp:1826:29: required from 'void Ifpack2::BlockTriDiContainerDetails::ExtractAndFactorizeTridiags<MatrixType>::run() [with MatrixType = Tpetra::RowMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_BlockTriDiContainer_impl.hpp:1849:7: required from 'void Ifpack2::BlockTriDiContainerDetails::performNumericPhase(const Teuchos::RCP<const typename Ifpack2::BlockTriDiContainerDetails::ImplType<MatrixType>::tpetra_block_crs_matrix_type>&, const Ifpack2::BlockTriDiContainerDetails::PartInterface<MatrixType>&, Ifpack2::BlockTriDiContainerDetails::BlockTridiags<MatrixType>&, typename Ifpack2::BlockTriDiContainerDetails::ImplType<MatrixType>::magnitude_type) [with MatrixType = Tpetra::RowMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >; typename Ifpack2::BlockTriDiContainerDetails::ImplType<MatrixType>::tpetra_block_crs_matrix_type = Tpetra::Experimental::BlockCrsMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >; typename Ifpack2::BlockTriDiContainerDetails::ImplType<MatrixType>::magnitude_type = float]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_BlockTriDiContainer_def.hpp:235:9: required from 'void Ifpack2::BlockTriDiContainer<MatrixType, Ifpack2::BlockTriDiContainerDetails::ImplSimdTag>::compute() [with MatrixType = Tpetra::RowMatrix<float, int, long long int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >]'
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/ifpack2/src/Ifpack2_Details_registerLinearSolverFactory.cpp:76:1: required from here
/scratch/ajpowel/code_032119/TPLs_src/Trilinos/packages/kokkos-kernels/src/batched/KokkosBatched_InnerGemmFixC_Serial_Impl.hpp:1139:33: error: no match for 'operator*' (operand types are 'const double' and 'KokkosBatched::Experimental::Vector<KokkosBatched::Experimental::SIMD<float>, 16>')
C[0*_cs0+0*_cs1] += alpha * c_00;
~~~~~~^~~~~~
Steps to Reproduce
-
Comment out line 986 of $PROJECT/packages/tpetra/CMakeLists.txt (suppressing fail message to prevent possible Thyra build failure)
-
Configure Trilinos packages:
cmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpifort -DTrilinos_ENABLE_Tpetra=ON -DTrilinos_ENABLE_COMPLEX_DOUBLE=ON -DTrilinos_ENABLE_FLOAT=ON -DTrilinos_ENABLE_Teuchos=ON -DTrilinos_ENABLE_Teko=ON /scratch/ajpowel/code_032119/TPLs_src/Trilinos
- Attempt to build ifpack2:
cd $PROJECT/packages/ifpack2
make -j 64