QMCPACK / miniqmc

QMCPACK miniapp: a simplified real space QMC code for algorithm development, performance portability testing, and computer science experiments
Other
26 stars 35 forks source link

Clang7/CUDA 9.2 team_v_serial_t and team_v_parallel_t both evaluate to HostThreadTeamMember when #201

Open PDoakORNL opened 5 years ago

PDoakORNL commented 5 years ago

KOKKOS_ENABLE_CUDA=false KOKKOS_ENABLE_OPENMP=false

causing

[31/54] Building CXX object src/Drivers/CMakeFiles/miniwfs.dir/__/QMCWaveFunctions/SPOSet_builder.cpp.o
FAILED: src/Drivers/CMakeFiles/miniwfs.dir/__/QMCWaveFunctions/SPOSet_builder.cpp.o 
/data/epd/spack/opt/spack/linux-rhel7-x86_64/gcc-7.3.0/llvm-7.0.0-amm2tanx4cbnqcpwd3mnf52fbes3eg7j/bin/clang++  -DADD_ -DH5_USE_16_API -DHAVE_CONFIG_H -DINLINE_ALL=inline -DUSE_REAL_STRUCT_FACTOR -I/scratch/epd/KOKKOS/kokkos/core/src -I/scratch/epd/KOKKOS/kokkos/containers/src -I/scratch/epd/KOKKOS/kokkos/algorithms/src -Ikokkos -I/opt/intel2018/mkl/include -I../src -Isrc -I../external_codes/hana/include -DFUTURE_WAVEFUNCTIONS -Drestrict=__restrict__ -D__forceinline=inline  -g   --std=c++11 -mavx --gcc-toolchain=/usr -std=c++14 -MD -MT src/Drivers/CMakeFiles/miniwfs.dir/__/QMCWaveFunctions/SPOSet_builder.cpp.o -MF src/Drivers/CMakeFiles/miniwfs.dir/__/QMCWaveFunctions/SPOSet_builder.cpp.o.d -o src/Drivers/CMakeFiles/miniwfs.dir/__/QMCWaveFunctions/SPOSet_builder.cpp.o -c ../src/QMCWaveFunctions/SPOSet_builder.cpp
In file included from ../src/QMCWaveFunctions/SPOSet_builder.cpp:14:
../src/QMCWaveFunctions/einspline_spo.hpp:267:8: error: multiple overloads of 'operator()' instantiate to the same signature 'void (const qmcplusplus::einspline_spo<double>::EvaluateVTag &, const qmcplusplus::einspline_spo<double>::team_v_parallel_t &) const' (aka 'void (const qmcplusplus::einspline_spo<double>::EvaluateVTag &, const HostThreadTeamMember<Kokkos::Serial> &) const')
  void operator()(const EvaluateVTag&, const team_v_parallel_t& team) const
       ^
../src/QMCWaveFunctions/SPOSet_builder.cpp:37:26: note: in instantiation of template class 'qmcplusplus::einspline_spo<double>' requested here
    auto* spo_main = new einspline_spo<OHMMS_PRECISION>;
                         ^
../src/QMCWaveFunctions/einspline_spo.hpp:252:8: note: previous declaration is here
  void operator()(const EvaluateVTag&, const team_v_serial_t& team) const
       ^
../src/QMCWaveFunctions/einspline_spo.hpp:360:8: error: multiple overloads of 'operator()' instantiate to the same signature 'void (const qmcplusplus::einspline_spo<double>::EvaluateVGHTag &, const qmcplusplus::einspline_spo<double>::team_vgh_serial_t &) const' (aka 'void (const qmcplusplus::einspline_spo<double>::EvaluateVGHTag &, const HostThreadTeamMember<Kokkos::Serial> &) const')
  void operator()(const EvaluateVGHTag&, const team_vgh_serial_t& team) const
       ^
../src/QMCWaveFunctions/einspline_spo.hpp:344:8: note: previous declaration is here
  void operator()(const EvaluateVGHTag&, const team_vgh_parallel_t& team) const
       ^

Not sure we care but it feels messy.