qmcpack icon indicating copy to clipboard operation
qmcpack copied to clipboard

ppconvert tests started failing with cuda 12.9 docker image

Open correaa opened this issue 2 months ago • 9 comments

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

correaa avatar Oct 26 '25 10:10 correaa

I vaguely remember that ppconvert uses nans internally for logic (e.g., to flag certain conditions). This feature breaks under fast-math.

correaa avatar Oct 27 '25 06:10 correaa

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.

prckent avatar Oct 29 '25 20:10 prckent

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 
``

correaa avatar Oct 30 '25 01:10 correaa

FYI, all works with -DCMAKE_BUILD_TYPE=Debug. So, it can be worked around with compilation flags.

correaa avatar Nov 05 '25 09:11 correaa

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

correaa avatar Nov 05 '25 20:11 correaa

A proper fix will probably be to port/copy the more robust qmcplusplus::isnan into ppconvert.

ye-luo avatar Nov 06 '25 17:11 ye-luo

what is it using now? std::isnan? or silly things like a != a?

correaa avatar Nov 06 '25 20:11 correaa

what is it using now? std::isnan? or silly things like a != 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

ye-luo avatar Nov 06 '25 20:11 ye-luo

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?

correaa avatar Nov 06 '25 22:11 correaa