NERSC Perlmutter Compilation Error
kirstynvalles02 opened this issue · 2 comments
I was following these instructions for installing WarpX on Perlmutter:
https://warpx.readthedocs.io/en/latest/install/hpc/perlmutter.html
any help appreciated. Below is the SLURM file to the compilation and the error output.
#!/bin/bash
#SBATCH --qos=regular
#SBATCH -t 03:00:00
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=16
#SBATCH --constraint=cpu
#SBATCH -o WarpXinstall.o%j
#SBATCH -e WarpXinstall.e%j
source $HOME/perlmutter_gpu_warpx.profile
cd $HOME/src/warpx
rm -rf build_pm_gpu
cmake -S . -B build_pm_gpu -DWarpX_COMPUTE=CUDA -DWarpX_FFT=ON -DWarpX_HEFFTE=ON -DWarpX_QED_TABLE_GEN=ON -DWarpX_DIMS="1;2;RZ;3"
cmake --build build_pm_gpu -j 16
#cmake -d -j(16)
openPMD build configuration:
library Version: 0.15.2
openPMD Standard: 1.1.0
C++ Compiler: GNU 12.3.0 CrayPrgEnv
/opt/cray/pe/craype/2.7.30/bin/CC
Installation: OFF
Build Type: Release
Library: static
CLI Tools: OFF
Examples: OFF
Testing: OFF
Invasive Tests: OFF
Internal VERIFY: ON
Build Options:
MPI: ON
HDF5: ON
ADIOS1: OFF
ADIOS2: ON
PYTHON: OFF
CUDA_EXAMPLES: OFF
WarpX build configuration:
Version: 24.05 (24.05-21-g67419c6ad3ed)
C++ Compiler: GNU 12.3.0 CrayPrgEnv
/opt/cray/pe/craype/2.7.30/bin/CC
Installation prefix: /usr/local
bin: bin
lib: lib64
include: include
cmake: lib64/cmake/WarpX
Build type: Release
Build options:
APP: ON
ASCENT: OFF
COMPUTE: CUDA
DIMS: 1;2;RZ;3
Embedded Boundary: OFF
IPO/LTO: OFF
LIB: ON (static)
MPI: ON
PARTICLE PRECISION: DOUBLE
PRECISION: DOUBLE
FFT Solvers: ON
PYTHON: OFF
OPENPMD: ON
QED: ON
QED table generation: ON
QED tools: OFF
SENSEI: OFF
CMake Warning:
Manually-specified variables were not used by the project:
WarpX_HEFFTE
/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/AmrCore/AMReX_InterpFaceRegister.cpp(96): warning #177-D: function "amrex::<unnamed>::IFRTag::box" was declared but never referenced
Box box() const noexcept { return Box(mask); }
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/global/homes/c/cvalles/src/warpx/Source/ablastr/fields/PoissonSolver.H(149): warning #811-D: const variable "info" requires an initializer -- class "amrex::LPInfo" has no user-provided default constructor
const amrex::LPInfo info;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/global/homes/c/cvalles/src/warpx/Source/ablastr/fields/PoissonSolver.H(149): warning #811-D: const variable "info" requires an initializer -- class "amrex::LPInfo" has no user-provided default constructor
const amrex::LPInfo info;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/usr/include/c++/12/bits/unique_ptr.h(1065): error: no instance of constructor "blas::Queue::Queue" matches the argument list
argument types are: (const int, int)
{ return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
^
detected during instantiation of "std::__detail::__unique_ptr_t<_Tp> std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=blas::Queue, _Args=<const int &, int>]" at line 39 of /global/homes/c/cvalles/src/warpx/Source/FieldSolver/SpectralSolver/SpectralHankelTransform/HankelTransform.cpp
1 error detected in the compilation of "/global/homes/c/cvalles/src/warpx/Source/FieldSolver/SpectralSolver/SpectralHankelTransform/HankelTransform.cpp".
gmake[2]: *** [CMakeFiles/lib_rz.dir/build.make:1448: CMakeFiles/lib_rz.dir/Source/FieldSolver/SpectralSolver/SpectralHankelTransform/HankelTransform.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:1500: CMakeFiles/lib_rz.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
/global/homes/c/cvalles/src/warpx/Source/Particles/PhysicalParticleContainer.cpp(705): warning #811-D: const variable "attr_int" requires an initializer -- class "amrex::Vector<amrex::Vector<int, std::allocator<int>>, std::allocator<amrex::Vector<int, std::allocator<int>>>>" has no user-provided default constructor
const amrex::Vector<amrex::Vector<int>> attr_int;
^
/global/homes/c/cvalles/src/warpx/Source/Particles/LaserParticleContainer.cpp(549): warning #811-D: const variable "attr_int" requires an initializer -- class "amrex::Vector<amrex::Vector<int, std::allocator<int>>, std::allocator<amrex::Vector<int, std::allocator<int>>>>" has no user-provided default constructor
const amrex::Vector<amrex::Vector<int>> attr_int;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
/global/homes/c/cvalles/src/warpx/Source/Particles/LaserParticleContainer.cpp(549): warning #811-D: const variable "attr_int" requires an initializer -- class "amrex::Vector<amrex::Vector<int, std::allocator<int>>, std::allocator<amrex::Vector<int, std::allocator<int>>>>" has no user-provided default constructor
const amrex::Vector<amrex::Vector<int>> attr_int;
^
Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"
gmake: *** [Makefile:136: all] Error 2
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
-- Cray Programming Environment 2.7.30 C
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/cray/pe/craype/2.7.30/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Cray Programming Environment 2.7.30 CXX
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/cray/pe/craype/2.7.30/bin/CC - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found CCache: /usr/bin/ccache
-- Downloading AMReX ...
-- AMReX repository: https://github.com/AMReX-Codes/amrex.git (28b010126a1b39297d8a496ba81f171d8563953b)
-- The CUDA compiler identification is NVIDIA 12.2.91
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Check for working CUDA compiler: /opt/nvidia/hpc_sdk/Linux_x86_64/23.9/cuda/12.2/bin/nvcc - skipped
-- Detecting CUDA compile features
-- Detecting CUDA compile features - done
-- CMake version: 3.24.3
-- AMReX installation directory: /usr/local
-- Build type set by user to 'Release'.
-- Building AMReX with AMReX_SPACEDIM = 1;2;3
-- Configuring AMReX with the following options enabled:
-- AMReX_PRECISION = DOUBLE
-- AMReX_GPU_BACKEND = CUDA
-- AMReX_GPU_MAX_THREADS = 256
-- AMReX_MPI
-- AMReX_MPI_THREAD_MULTIPLE
-- AMReX_LINEAR_SOLVERS
-- AMReX_PARTICLES
-- AMReX_PARTICLES_PRECISION = DOUBLE
-- AMReX_PIC
-- AMReX_INLINE_LIMIT = 43210
-- AMReX_TINY_PROFILE
-- Enabled CUDA options:
-- AMReX_CUDA_FASTMATH
-- AMReX_CUDA_MAXREGCOUNT = 255
-- AMReX_CUDA_WARN_CAPTURE_THIS
-- AMReX_CUDA_SHOW_LINENUMBERS
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found MPI_C: /opt/cray/pe/craype/2.7.30/bin/cc (found version "3.1")
-- Found MPI_CXX: /opt/cray/pe/craype/2.7.30/bin/CC (found version "3.1")
-- Found MPI: TRUE (found version "3.1") found components: C CXX
-- Found CUDAToolkit: /opt/nvidia/hpc_sdk/Linux_x86_64/23.9/cuda/12.2/include (found version "12.2.91")
-- AMReX configuration summary:
-- Build type = Release
-- Install directory = /usr/local
-- C++ compiler = /opt/cray/pe/craype/2.7.30/bin/CC
-- CUDA compiler = /opt/nvidia/hpc_sdk/Linux_x86_64/23.9/cuda/12.2/bin/nvcc
-- C++ defines = -DAMREX_SPACEDIM=3
-- C++ flags = -O3 -DNDEBUG -march=znver3 -finline-limit=43210
-- CUDA flags = -O3 -DNDEBUG --expt-relaxed-constexpr --expt-extended-lambda -Xcudafe --diag_suppress=esa_on_defaulted_function_ignored -Xcudafe --diag_suppress=implicit_return_from_non_void_function -maxrregcount=255 -Xcudafe --display_error_number --Wext-lambda-captures-this --use_fast_math --generate-line-info
-- C++ include paths = -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/Base -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/Base/Parser -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/Boundary -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/AmrCore -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/LinearSolvers -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/LinearSolvers/MLMG -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/LinearSolvers/OpenBC -I/global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedamrex-src/Src/Particle -I/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/cuda/12.2/include -I/opt/nvidia/hpc_sdk/Linux_x86_64/23.9/math_libs/include
-- Link line =
-- AMReX: Using version '24.05' (24.05-32-g28b010126a1b)
-- Downloading PICSAR ...
-- PICSAR repository: https://github.com/ECP-WarpX/picsar.git (aa54e985398c1d575abc7e6737cdbc660a13765f)
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5") found components: CXX
-- Found OpenMP_C: -fopenmp (found version "4.5")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found Boost: /global/common/software/spackecp/perlmutter/e4s-23.05/default/spack/opt/spack/linux-sles15-zen3/gcc-11.2.0/boost-1.82.0-ow5r5qrgslcwu33grygouajmuluzuzv3/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found suitable version "1.82.0", minimum required is "1.66.0")
-- Downloading openPMD-api ...
-- openPMD-api repository: https://github.com/openPMD/openPMD-api.git (0.15.2)
-- Found MPI: TRUE (found version "3.1") found components: CXX
-- Using the single-header code from /global/homes/c/cvalles/src/warpx/build_pm_gpu/_deps/fetchedopenpmd-src/share/openPMD/thirdParty/json/single_include/
-- nlohmann-json: Using INTERNAL version '3.9.1'
-- toml11: Using INTERNAL version '3.7.1'
-- Found HDF5: Included by compiler wrappers (found version "1.12.2") found components: C
-- Found MPI: TRUE (found version "3.1")
-- Found ADIOS2: /global/cfs/cdirs/mp217/cvalles/sw/perlmutter/gpu/adios2-2.8.3/lib64/cmake/adios2/adios2-config.cmake (found suitable version "2.8.3", minimum required is "2.7.0") found components: C CXX MPI
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found Git: /usr/bin/git (found version "2.35.3")
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /global/homes/c/cvalles/src/warpx/build_pm_gpu
[ 0%] Building CXX object CMakeFiles/buildInfoapp_3d.dir/app_3d/AMReX_buildInfo.cpp.o
[ 0%] Building CXX object CMakeFiles/buildInfoapp_rz.dir/app_rz/AMReX_buildInfo.cpp.o
[ 1%] Building CXX object _deps/fetchedopenpmd-build/CMakeFiles/openPMD.dir/src/Datatype.cpp.o
[ 1%] Building CXX object _deps/fetchedopenpmd-build/CMakeFiles/openPMD.dir/src/Iteration.cpp.o
...
[ 94%] Building CUDA object CMakeFiles/lib_2d.dir/Source/Utils/WarpXVersion.cpp.o
[ 94%] Building CUDA object CMakeFiles/lib_2d.dir/Source/Utils/Logo/GetLogo.cpp.o
[ 94%] Building CUDA object CMakeFiles/lib_2d.dir/Source/Utils/Parser/IntervalsParser.cpp.o
[ 94%] Building CUDA object CMakeFiles/lib_2d.dir/Source/Utils/Parser/ParserUtils.cpp.o
[ 94%] Built target lib_1d
[ 94%] Linking CXX static library lib/libwarpx.2d.MPI.CUDA.DP.PDP.OPMD.PSATD.QED.GENQEDTABLES.a
[ 94%] Built target lib_2d
Thanks for reporting! I updated the script in #4986 , which probably caused this.
The warning
CMake Warning:
Manually-specified variables were not used by the project:WarpX_HEFFTE
will vanish if you update to the latest development
of WarpX.
The error
/usr/include/c++/12/bits/unique_ptr.h(1065): error: no instance of constructor "blas::Queue::Queue" matches the argument list
argument types are: (const int, int)
{ return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
^
detected during instantiation of "std::__detail::__unique_ptr_t<_Tp> std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=blas::Queue, _Args=<const int &, int>]" at line 39 of /global/homes/c/cvalles/src/warpx/Source/FieldSolver/SpectralSolver/SpectralHankelTransform/HankelTransform.cpp
I have to validate if it also appears on the latest development
, maybe WarpX needs an update for the latest BLAS++ APIs... 👍
Hi @kirstynvalles02, yes this is a breaking change from the latest BLAS++ release and we pushed a fix to #5012 for your consideration.