ppconvert tests started failing with cuda 12.9 docker image
Describe the bug
ppconvert tests started failing. I know ppconvert is not a GPU code, but this is the set up in which I see the bug. It could be that the fix to https://github.com/QMCPACK/qmcpack/pull/3307, https://github.com/QMCPACK/qmcpack/issues/3303 is not enough.
[32;1m$ OMPI_ALLOW_RUN_AS_ROOT=1 OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 ctest -R ppconvert --output-on-failure[0;m
Test project /builds/correaa/boost-multi/qmcpack/build
Start 65: build_output_ppconvert_exists
1/3 Test #65: build_output_ppconvert_exists .... Passed 0.00 sec
Start 66: ppconvert_runs
2/3 Test #66: ppconvert_runs ................... Passed 1.19 sec
Start 67: ppconvert_o_diff
3/3 Test #67: ppconvert_o_diff .................***Failed 0.13 sec
----------------
##6701 #:1 <== -nan
##6701 #:1 ==> -4.63469388240121e-20
@ @@
##6701 #:2 <== -nan
##6701 #:2 ==> 1.06342318361146e-03
@ @@
##6701 #:3 <== -nan
##6701 #:3 ==> 2.12686003182093e-03
@ @@
----------------
##6702 #:1 <== -nan
##6702 #:1 ==> 3.19032420922778e-03
@ @@
##6702 #:2 <== -nan
##6702 #:2 ==> 4.25382938043140e-03
@ @@
##6702 #:3 <== -nan
To Reproduce Steps to reproduce the behavior:
All the steps are summarized here: https://gitlab.com/correaa/boost-multi/-/jobs/11854946333
git clone --depth 1 https://github.com/QMCPACK/qmcpack.git
cd qmcpack
cd build/
CUDACXX=/usr/local/cuda/bin/nvcc cmake .. -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DBUILD_AFQMC=1 -DQMC_CXX_STANDARD=17 -DQMC_GPU=cuda -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc -DCMAKE_CUDA_HOST_COMPILER=g++ -DCMAKE_CXX_FLAGS="-Wno-deprecated -Wno-deprecated-declarations" -DCMAKE_CUDA_ARCHITECTURES=native
nvcc --version
CUDACXX=nvcc cmake .. -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DBUILD_AFQMC=1 -DQMC_CXX_STANDARD=17 -DQMC_GPU=cuda -DCMAKE_CUDA_COMPILER=nvcc -DCMAKE_CUDA_HOST_COMPILER=g++ -DCMAKE_CXX_FLAGS="-Wno-deprecated -Wno-deprecated-declarations" -DCMAKE_CUDA_ARCHITECTURES=native
make -j 4 ppconvert afqmc test_afqmc_matrix test_afqmc_numerics test_afqmc_slaterdeterminantoperations test_afqmc_walkers test_afqmc_hamiltonians test_afqmc_hamiltonian_operations test_afqmc_phmsd test_afqmc_wfn_factory test_afqmc_prop_factory test_afqmc_estimators qmc-afqmc-performance
ctest -R ppconvert --output-on-failure
Expected behavior
ppconvert test should pass
System:
- system name: docker ubuntu 24.04, nvcc 12.9, g++ 13.3.0
Additional context
- I remember there was some controversial use of nan in ppconvert: https://github.com/QMCPACK/qmcpack/pull/3307
- Could not reproduce locally with
$ g++ --version
g++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
correaa@proart-linux:~/qmcpack/build$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Fri_Jan__6_16:45:21_PST_2023
Cuda compilation tools, release 12.0, V12.0.140
Build cuda_12.0.r12.0/compiler.32267302_0
I vaguely remember that ppconvert uses nans internally for logic (e.g., to flag certain conditions). This feature breaks under fast-math.
Well, this is weird. Can you confirm if any of the compiler options were subtly changed?/What exactly changed with ""use"" of CUDA >=12.9? While the proper solution here is to fix ppconvert's underlying bad design and programming, hopefully we can find a workaround.
According to the same log, all the compilations related to ppconvert options include the -fno-fast-math, which was the previous patch.
It is hard to believe that nvcc has to do with this, it is more likely that in this docker image the (cpu) compiler itself changed. The only special thing about this is that this is GCC 13.3.0 and that it is a "native" compilation.
grep ppconvert a.txt | grep cxx | grep fast
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/GKIntegration.cc.o -MF CMakeFiles/common.dir/GKIntegration.cc.o.d -o CMakeFiles/common.dir/GKIntegration.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/GKIntegration.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/CoulombPot.cc.o -MF CMakeFiles/common.dir/CoulombPot.cc.o.d -o CMakeFiles/common.dir/CoulombPot.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/CoulombPot.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/NLPP.cc.o -MF CMakeFiles/common.dir/NLPP.cc.o.d -o CMakeFiles/common.dir/NLPP.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/NLPP.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/DFTAtom.cc.o -MF CMakeFiles/common.dir/DFTAtom.cc.o.d -o CMakeFiles/common.dir/DFTAtom.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/DFTAtom.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/ScreenedPot.cc.o -MF CMakeFiles/common.dir/ScreenedPot.cc.o.d -o CMakeFiles/common.dir/ScreenedPot.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/ScreenedPot.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/Fitting.cc.o -MF CMakeFiles/common.dir/Fitting.cc.o.d -o CMakeFiles/common.dir/Fitting.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/Fitting.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/RadialWF.cc.o -MF CMakeFiles/common.dir/RadialWF.cc.o.d -o CMakeFiles/common.dir/RadialWF.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/RadialWF.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/SplinePot.cc.o -MF CMakeFiles/common.dir/SplinePot.cc.o.d -o CMakeFiles/common.dir/SplinePot.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/SplinePot.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/CubicSplineCommon.cc.o -MF CMakeFiles/common.dir/CubicSplineCommon.cc.o.d -o CMakeFiles/common.dir/CubicSplineCommon.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/CubicSplineCommon.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/GeneralPot.cc.o -MF CMakeFiles/common.dir/GeneralPot.cc.o.d -o CMakeFiles/common.dir/GeneralPot.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/GeneralPot.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/Potential.cc.o -MF CMakeFiles/common.dir/Potential.cc.o.d -o CMakeFiles/common.dir/Potential.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/Potential.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/IO.cc.o -MF CMakeFiles/common.dir/IO.cc.o.d -o CMakeFiles/common.dir/IO.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/IO.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/MatrixOps.cc.o -MF CMakeFiles/common.dir/MatrixOps.cc.o.d -o CMakeFiles/common.dir/MatrixOps.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/MatrixOps.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/Grid.cc.o -MF CMakeFiles/common.dir/Grid.cc.o.d -o CMakeFiles/common.dir/Grid.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/Grid.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/PotentialBase.cc.o -MF CMakeFiles/common.dir/PotentialBase.cc.o.d -o CMakeFiles/common.dir/PotentialBase.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/PotentialBase.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/IOASCII.cc.o -MF CMakeFiles/common.dir/IOASCII.cc.o.d -o CMakeFiles/common.dir/IOASCII.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/IOASCII.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src/common && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/common/CMakeFiles/common.dir/Functionals.cc.o -MF CMakeFiles/common.dir/Functionals.cc.o.d -o CMakeFiles/common.dir/Functionals.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/common/Functionals.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/CMakeFiles/ppconvert.dir/XMLWriterClass2.cc.o -MF CMakeFiles/ppconvert.dir/XMLWriterClass2.cc.o.d -o CMakeFiles/ppconvert.dir/XMLWriterClass2.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/XMLWriterClass2.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/CMakeFiles/ppconvert.dir/CubicSpline.cc.o -MF CMakeFiles/ppconvert.dir/CubicSpline.cc.o.d -o CMakeFiles/ppconvert.dir/CubicSpline.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/CubicSpline.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/CMakeFiles/ppconvert.dir/ParseCommand.cc.o -MF CMakeFiles/ppconvert.dir/ParseCommand.cc.o.d -o CMakeFiles/ppconvert.dir/ParseCommand.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/ParseCommand.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/CMakeFiles/ppconvert.dir/NLPPClass.cc.o -MF CMakeFiles/ppconvert.dir/NLPPClass.cc.o.d -o CMakeFiles/ppconvert.dir/NLPPClass.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/NLPPClass.cc
cd /builds/correaa/boost-multi/qmcpack/build/src/QMCTools/ppconvert/src && /usr/bin/mpicxx -DADD_ -DHAVE_CONFIG_H -Drestrict=__restrict__ -I/builds/correaa/boost-multi/qmcpack/build/src -I/builds/correaa/boost-multi/qmcpack/src -I/builds/correaa/boost-multi/qmcpack/external_codes/boost_multi/multi/include -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 -std=c++17 -MD -MT src/QMCTools/ppconvert/src/CMakeFiles/ppconvert.dir/ParserClass.cc.o -MF CMakeFiles/ppconvert.dir/ParserClass.cc.o.d -o CMakeFiles/ppconvert.dir/ParserClass.cc.o -c /builds/correaa/boost-multi/qmcpack/src/QMCTools/ppconvert/src/ParserClass.cc
/usr/bin/mpicxx -Wno-deprecated -Wno-deprecated-declarations -fopenmp -foffload=disable -finline-limit=1000 -fstrict-aliasing -funroll-all-loops -Wno-deprecated -Wvla -Wcomment -Wmisleading-indentation -Wmaybe-uninitialized -Wuninitialized -Wreorder -Wno-unknown-pragmas -Wno-sign-compare -Wsuggest-override -fno-fast-math -march=native -O3 CMakeFiles/ppconvert.dir/CubicSpline.cc.o CMakeFiles/ppconvert.dir/ParseCommand.cc.o CMakeFiles/ppconvert.dir/XMLWriterClass2.cc.o CMakeFiles/ppconvert.dir/NLPPClass.cc.o CMakeFiles/ppconvert.dir/ParserClass.cc.o -o ../../../../bin/ppconvert -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/13: -lrt common/libcommon.a ../../../Platforms/CPU/libplatform_cpu_LA.a /usr/lib/x86_64-linux-gnu/liblapack.so /usr/lib/x86_64-linux-gnu/libblas.so ../../../Platforms/CPU/libplatform_cpu_runtime.a -lrt
``
FYI, all works with -DCMAKE_BUILD_TYPE=Debug. So, it can be worked around with compilation flags.
The original test was with a cmake without CMAKE_BUILD_TYPE, so let me clarify that I can repeat this problem with -DCMAKE_BUILD_TYPE=Release https://gitlab.com/correaa/boost-multi/-/jobs/11986737277
A proper fix will probably be to port/copy the more robust qmcplusplus::isnan into ppconvert.
what is it using now? std::isnan? or silly things like a != a?
what is it using now?
std::isnan? or silly things likea != a?
std::isnan won't work.
Use the latter
https://github.com/QMCPACK/qmcpack/blob/b6d307410fd2c39da5d15c68969ee90c2c002d62/src/Platforms/CPU/math.cpp#L18
with special treatment at compilation
https://github.com/QMCPACK/qmcpack/blob/b6d307410fd2c39da5d15c68969ee90c2c002d62/src/Platforms/CPU/CMakeLists.txt#L14
ok, yes.
wouldn't the flags trick be disabling fast math for all qmcpack codes?
Having said that, it is possible that cmake is generating the fast-math internally in some other way, e.g. Ofast? so it breaks for some newer version of cmake or gcc?