E3SM-Project / Omega

Next generation ocean model within E3SM
https://docs.e3sm.org/Omega/omega
Other
4 stars 5 forks source link

Build Errors on Perlmutter-GPU with nividiagpu for LoggingTest.cpp #143

Closed brian-oneill closed 1 month ago

brian-oneill commented 1 month ago

Looks like changes from #136 are causing compilation errors for nvidiagpu on pm-gpu. Haven't noticed issues on other platforms

brian-oneill commented 1 month ago
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/fmt/bundled/core.h(1727): error: static assertion failed with "Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt"
          detected during:
            instantiation of "auto fmt::v8::detail::make_arg<IS_PACKED,Context,<unnamed>,T,<unnamed>>(T &&)->fmt::v8::detail::value<Context> [with IS_PACKED=true, Context=fmt::v8::format_context, <unnamed>=fmt::v8::detail::type::custom_type, T=OMEGA::HostArray1DReal &, <unnamed>=0]" 
(1856): here
            instantiation of "fmt::v8::format_arg_store<Context, Args...>::format_arg_store(T &&...) [with Context=fmt::v8::format_context, Args=<OMEGA::HostArray1DReal>, T=<OMEGA::HostArray1DReal &>]" 
(1872): here
            instantiation of "auto fmt::v8::make_format_args(Args &&...)->fmt::v8::format_arg_store<Context, fmt::v8::remove_cvref_t<Args>...> [with Context=fmt::v8::format_context, Args=<OMEGA::HostArray1DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(370): here
            instantiation of "void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args &&...) [with Args=<OMEGA::HostArray1DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(90): here
            instantiation of "void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray1DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(96): here
            instantiation of "void spdlog::logger::log(spdlog::level::level_enum, spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray1DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(158): here
            instantiation of "void spdlog::logger::info(spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray1DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/spdlog.h(157): here
            instantiation of "void spdlog::info(spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray1DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/components/omega/test/infra/LoggingTest.cpp(150): here

/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/fmt/bundled/core.h(1727): error: static assertion failed with "Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt"
          detected during:
            instantiation of "auto fmt::v8::detail::make_arg<IS_PACKED,Context,<unnamed>,T,<unnamed>>(T &&)->fmt::v8::detail::value<Context> [with IS_PACKED=true, Context=fmt::v8::format_context, <unnamed>=fmt::v8::detail::type::custom_type, T=OMEGA::HostArray2DReal &, <unnamed>=0]" 
(1856): here
            instantiation of "fmt::v8::format_arg_store<Context, Args...>::format_arg_store(T &&...) [with Context=fmt::v8::format_context, Args=<OMEGA::HostArray2DReal>, T=<OMEGA::HostArray2DReal &>]" 
(1872): here
            instantiation of "auto fmt::v8::make_format_args(Args &&...)->fmt::v8::format_arg_store<Context, fmt::v8::remove_cvref_t<Args>...> [with Context=fmt::v8::format_context, Args=<OMEGA::HostArray2DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(370): here
            instantiation of "void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args &&...) [with Args=<OMEGA::HostArray2DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(90): here
            instantiation of "void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray2DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(96): here
            instantiation of "void spdlog::logger::log(spdlog::level::level_enum, spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray2DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/logger.h(158): here
            instantiation of "void spdlog::logger::info(spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray2DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/externals/ekat/extern/spdlog/include/spdlog/spdlog.h(157): here
            instantiation of "void spdlog::info(spdlog::format_string_t<Args...>, Args &&...) [with Args=<OMEGA::HostArray2DReal &>]" 
/global/homes/b/boneill/proj_space/ykimFork/Omega/components/omega/test/infra/LoggingTest.cpp(172): here

2 errors detected in the compilation of "/global/homes/b/boneill/proj_space/ykimFork/Omega/components/omega/test/infra/LoggingTest.cpp".
make[2]: *** [test/CMakeFiles/testLogging.exe.dir/build.make:76: test/CMakeFiles/testLogging.exe.dir/infra/LoggingTest.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1850: test/CMakeFiles/testLogging.exe.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
grnydawn commented 1 month ago

@brian-oneill , thanks for letting me know. I will try it on pm-gpu.

mwarusz commented 1 month ago

I ran into the same issue on frontier using the crayomegagpu compiler.

mark-petersen commented 1 month ago

I also get this compile error with cray gpu on frontier. I'm not sure if this is the same error cited above, which is on LoggingTest.cpp. This stops at testDataTypes.exe:

...
[ 84%] Linking C executable testHalo.exe
[ 84%] Built target testHalo.exe
31 warnings generated when compiling for host.
[ 84%] Linking C executable testDataTypes.exe
[ 84%] Built target testDataTypes.exe
make: *** [Makefile:146: all] Error 2
compile instructions

``` CODE_DIR=omega-develop RUNDIR=241001_omega_gpu_dev mkdir /lustre/orion/cli115/scratch/mpetersen/runs/$RUNDIR cd !$ cd /ccs/home/mpetersen/repos/E3SM/${CODE_DIR} git submodule update --init --recursive externals/YAKL externals/ekat externals/scorpio cime cd /lustre/orion/cli115/scratch/mpetersen/runs/$RUNDIR module load cmake rm -rf build mkdir build cd build export PARMETIS_ROOT=/ccs/proj/cli115/software/polaris/frontier/spack/dev_polaris_0_4_0_crayclanggpu_mpich/var/spack/environments/dev_polaris_0_4_0_crayclanggpu_mpich/.spack-env/view cmake \ -DOMEGA_CIME_COMPILER=crayomegagpu \ -DOMEGA_BUILD_TYPE=Release \ -DOMEGA_CIME_MACHINE=frontier \ -DOMEGA_PARMETIS_ROOT=${PARMETIS_ROOT}\ -DOMEGA_BUILD_TEST=ON \ -Wno-dev \ -Wno-deprecated \ -S /ccs/home/mpetersen/repos/E3SM/${CODE_DIR}/components/omega -B . ./omega_build.sh # linking: cd test ln -isf ~/meshes/omega/O*nc . cp /ccs/home/mpetersen/repos/E3SM/${CODE_DIR}/components/omega/configs/Default.yml omega.yml salloc -A cli115 -J inter -t 2:00:00 -q debug -N 1 -p batch RUNDIR=241001_omega_gpu_dev cd /lustre/orion/cli115/scratch/mpetersen/runs/$RUNDIR/build ./omega_ctest.sh ```

grnydawn commented 1 month ago

Thanks, everyone, for reporting this issue. I was too naive in skipping tests on some machines/compilers. I have just created a new PR (https://github.com/E3SM-Project/Omega/pull/144) and hope this fixes the issue.

philipwjones commented 1 month ago

Fixed by #144