mirror of https://github.com/QMCPACK/qmcpack.git
93 lines
2.4 KiB
Bash
Executable File
93 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# This recipe is intended for ALCF Polaris https://www.alcf.anl.gov/polaris
|
|
# It builds all the varaints of QMCPACK in the current directory
|
|
# last revision: Jan 13th 2025
|
|
#
|
|
# How to invoke this script?
|
|
# build_alcf_polaris_Clang.sh # build all the variants assuming the current directory is the source directory.
|
|
# build_alcf_polaris_Clang.sh <source_dir> # build all the variants with a given source directory <source_dir>
|
|
# build_alcf_polaris_Clang.sh <source_dir> <install_dir> # build all the variants with a given source directory <source_dir> and install to <install_dir>
|
|
|
|
module use /soft/modulefiles
|
|
module load spack-pe-base cmake
|
|
module load mpiwrappers/cray-mpich-llvm llvm/release-18.1.6
|
|
module load cudatoolkit-standalone/12.3.2
|
|
module load craype-x86-milan cray-fftw cray-hdf5-parallel
|
|
|
|
export BOOST_ROOT=/soft/applications/qmcpack/boost_1_86_0
|
|
export CMAKE_PREFIX_PATH=/soft/libraries/openblas/0.3.20-omp:$CMAKE_PREFIX_PATH
|
|
|
|
module list 2>&1 | tee module_list.txt
|
|
|
|
echo "**********************************"
|
|
echo '$ clang -v'
|
|
clang -v
|
|
echo "**********************************"
|
|
|
|
TYPE=Release
|
|
Machine=polaris
|
|
Compiler=Clang18
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
source_folder=`pwd`
|
|
elif [[ $# -eq 1 ]]; then
|
|
source_folder=$1
|
|
else
|
|
source_folder=$1
|
|
install_folder=$2
|
|
fi
|
|
|
|
if [[ -f $source_folder/CMakeLists.txt ]]; then
|
|
echo Using QMCPACK source directory $source_folder
|
|
else
|
|
echo "Source directory $source_folder doesn't contain CMakeLists.txt. Pass QMCPACK source directory as the first argument."
|
|
exit
|
|
fi
|
|
|
|
for name in gpu_real_MP gpu_real gpu_cplx_MP gpu_cplx \
|
|
cpu_real_MP cpu_real cpu_cplx_MP cpu_cplx
|
|
do
|
|
|
|
CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=$TYPE"
|
|
|
|
if [[ $name == *"cplx"* ]]; then
|
|
CMAKE_FLAGS="$CMAKE_FLAGS -DQMC_COMPLEX=ON"
|
|
fi
|
|
|
|
if [[ $name == *"_MP"* ]]; then
|
|
CMAKE_FLAGS="$CMAKE_FLAGS -DQMC_MIXED_PRECISION=ON"
|
|
fi
|
|
|
|
if [[ $name == *"gpu"* ]]; then
|
|
CMAKE_FLAGS="$CMAKE_FLAGS -DQMC_GPU_ARCHS=sm_80"
|
|
fi
|
|
|
|
folder=build_${Machine}_${Compiler}_${name}
|
|
|
|
if [[ -v install_folder ]]; then
|
|
CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=$install_folder/$folder"
|
|
fi
|
|
|
|
echo "**********************************"
|
|
echo "$folder"
|
|
echo "$CMAKE_FLAGS"
|
|
echo "**********************************"
|
|
|
|
mkdir $folder
|
|
cd $folder
|
|
|
|
if [ ! -f CMakeCache.txt ] ; then
|
|
cmake $CMAKE_FLAGS -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx $source_folder
|
|
fi
|
|
|
|
if [[ -v install_folder ]]; then
|
|
make -j16 install && chmod -R -w $install_folder/$folder
|
|
else
|
|
make -j16
|
|
fi
|
|
|
|
cd ..
|
|
|
|
echo
|
|
done
|