Skip to content
This repository was archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Updated all of the build scripts and tools to work with Negishi
Browse files Browse the repository at this point in the history
  • Loading branch information
daminton committed Feb 13, 2024
1 parent 5ca62d5 commit 1760b11
Show file tree
Hide file tree
Showing 17 changed files with 144 additions and 82 deletions.
24 changes: 19 additions & 5 deletions buildscripts/_build_getopts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,22 @@ BUILD_DIR=${BUILD_DIR:-"${HOME}/Downloads"}
PREFIX=${PREFIX:-"/usr/local"}
DEPENDENCY_DIR=${DEPENDENCY_DIR:-${BUILD_DIR}}

mkdir -p ${DEPENDENCY_DIR}
mkdir -p ${PREFIX}/lib
mkdir -p ${PREFIX}/include
mkdir -p ${PREFIX}/share
mkdir -p ${PREFIX}/bin

case $OS in
Linux-gnu|Linux-ifx|Linux-ifort)
. ${SCRIPT_DIR}/set_environment_linux.sh
;;
MacOSX)
. ${SCRIPT_DIR}/set_environment_macos.sh
;;

*)
printf "Unknown compiler type: ${OS}\n"
echo "Valid options are Linux-gnu, Linux-ifort, Linux-ifx, or MacOSX"
printf $USTMT
exit 1
;;
esac


mkdir -p ${DEPENDENCY_DIR}
13 changes: 6 additions & 7 deletions buildscripts/build_hdf5.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
# You should have received a copy of the GNU General Public License along with Swiftest.
# If not, see: https://www.gnu.org/licenses.

HDF5_VER="1_14_2"
ZLIB_VER="1.3"
HDF5_VER="1_14_3"
ZLIB_VER="1.3.1"

SCRIPT_DIR=$(realpath $(dirname $0))
set -a
Expand All @@ -27,7 +27,7 @@ printf "*********************************************************\n"
printf "* STARTING DEPENDENCY BUILD *\n"
printf "*********************************************************\n"
printf "Using ${OS} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n"
printf "Installing to ${PREFIX}\n"
printf "Installing to ${HDF5_ROOT}\n"
printf "\n"

printf "*********************************************************\n"
Expand Down Expand Up @@ -60,13 +60,11 @@ printf "CPPFLAGS: ${CPPFLAGS}\n"
printf "CPATH: ${CPATH}\n"
printf "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}\n"
printf "LDFLAGS: ${LDFLAGS}\n"
printf "INSTALL_PREFIX: ${HDF5_ROOT}\n"
printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/hdfsrc

HDF5_ROOT=${PREFIX}
ZLIB_ROOT=${PREFIX}
SZIP_ROOT=${PREFIX}
if [ $OS = "MacOSX" ]; then
ZLIB_LIBRARY="${ZLIB_ROOT}/lib/libz.dylib"
else
Expand All @@ -85,6 +83,7 @@ ARGLIST="-DCMAKE_INSTALL_PREFIX:PATH=${HDF5_ROOT} \
-DHDF5_BUILD_FORTRAN:BOOL=OFF \
-DHDF5_BUILD_EXAMPLES:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DBUILD_STATIC_LIBS:BOOL=OFF \
-DHDF5_BUILD_JAVA:BOOL=OFF"

if [ $OS = "MacOSX" ]; then
Expand All @@ -94,7 +93,7 @@ fi
cmake -B build -C ./config/cmake/cacheinit.cmake -G Ninja ${ARGLIST} .

cmake --build build -j${NPROC} --config Release
if [ -w ${PREFIX} ]; then
if [ -w ${HDF5_ROOT} ]; then
cmake --install build
else
sudo cmake --install build
Expand Down
34 changes: 34 additions & 0 deletions buildscripts/build_negishi.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/zsh -l
# installs an editable (local) package in release mode on Negishi
# This is a convenience script for Kaustub

set -a
SCRIPT_DIR=$(realpath $(dirname $0))
ROOT_DIR=$(realpath ${SCRIPT_DIR}/..)
cd ${ROOT_DIR}
BUILD_TYPE=${1:-"Release"}

module purge
module load intel-oneapi-compilers/2023.0.0
module load intel-oneapi-mkl/2023.0.0
module load intel-oneapi-mpi/2021.8.0
source ${INTEL_ONEAPI_COMPILERS_HOME}/setvars.sh > /dev/null 2>&1
module use /depot/daminton/etc/modules
module load use.own
module load conda-env/mintongroup-py3.9.13
module load netcdf-fortran/intel-oneapi/4.6.1
module load shtools/intel-oneapi/4.11.10
cmake -P distclean.cmake
pip install --config-settings=editable.rebuild=true \
--config-settings=build-dir="build/{wheel_tag}" \
--config-settings=cmake.build-type="${BUILD_TYPE}" \
--config-settings=cmake.args="-DUSE_SIMD=ON" \
--config-settings=cmake.args="-DUSE_OPENMP=ON" \
--config-settings=cmake.args="-DCMAKE_Fortran_COMPILER=mpiifort" \
--config-settings=cmake.args="-DCMAKE_Fortran_FLAGS=\"-f90=ifort\"" \
--config-settings=cmake.args="-DMACHINE_CODE_VALUE=\"CORE-AVX-I\" " \
--no-build-isolation \
-ve .


LD_LIBRARY_PATH=$(realpath ${ROOT_DIR}/build/*/bin):$LD_LIBRARY_PATH
9 changes: 4 additions & 5 deletions buildscripts/build_netcdf-c.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ printf "*********************************************************\n"
printf "* STARTING DEPENDENCY BUILD *\n"
printf "*********************************************************\n"
printf "Using ${OS} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n"
printf "Installing to ${PREFIX}\n"
printf "Installing to ${NCDIR}\n"
printf "\n"

NC_VER="4.9.2"
Expand All @@ -48,16 +48,15 @@ printf "CPATH: ${CPATH}\n"
printf "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}\n"
printf "LDFLAGS: ${LDFLAGS}\n"
printf "HDF5_ROOT: ${HDF5_ROOT}\n"
printf "INSTALL_PREFIX: ${NCDIR}\n"
printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/netcdf-c-*
NCDIR="${PREFIX}"
ZLIB_ROOT=${PREFIX}
cmake -B build -S . -G Ninja \
-DCMAKE_BUILD_TYPE:STRING="Release" \
-DHDF5_DIR:PATH=${HDF5_ROOT}/cmake \
-DHDF5_ROOT:PATH=${HDF5_ROOT} \
-DCMAKE_FIND_ROOT_PATH:PATH="${PREFIX}" \
-DCMAKE_FIND_ROOT_PATH:PATH="${NCDIR}" \
-DCMAKE_INSTALL_PREFIX:STRING="${NCDIR}" \
-DENABLE_DAP:BOOL=OFF \
-DENABLE_BYTERANGE:BOOL=OFF \
Expand All @@ -68,7 +67,7 @@ cmake -B build -S . -G Ninja \
-DENABLE_REMOTE_FORTRAN_BOOTSTRAP:BOOL=ON

cmake --build build -j${NPROC}
if [ -w ${PREFIX} ]; then
if [ -w ${NCDIR} ]; then
cmake --install build
else
sudo cmake --install build
Expand Down
5 changes: 2 additions & 3 deletions buildscripts/build_netcdf-fortran.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ printf "*********************************************************\n"
printf "* STARTING DEPENDENCY BUILD *\n"
printf "*********************************************************\n"
printf "Using ${OS} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n"
printf "Installing to ${PREFIX}\n"
printf "Installing to ${NFDIR}\n"
printf "\n"

NF_VER="4.6.1"
Expand All @@ -49,7 +49,6 @@ printf "LDFLAGS: ${LDFLAGS}\n"
printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/netcdf-fortran-*
NFDIR="${PREFIX}"
NCLIBDIR=$(${NCDIR}/bin/nc-config --libdir)
if [ $OS = "MacOSX" ]; then
netCDF_LIBRARIES="${NCLIBDIR}/libnetcdf.dylib"
Expand All @@ -62,7 +61,7 @@ cmake -B build -S . -G Ninja \
-DCMAKE_INSTALL_PREFIX:PATH=${NFDIR} \
-DCMAKE_INSTALL_LIBDIR="lib"
cmake --build build -j${NPROC}
if [ -w ${PREFIX} ]; then
if [ -w ${NFDIR} ]; then
cmake --install build
else
sudo cmake --install build
Expand Down
21 changes: 16 additions & 5 deletions buildscripts/build_shtools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ ARGS=$@
. ${SCRIPT_DIR}/_build_getopts.sh ${ARGS}
. ${SCRIPT_DIR}/set_compilers.sh

SHTOOLS_VER="4.9.1"
SHTOOLS_VER="4.11.10"

printf "*********************************************************\n"
printf "* FETCHING SHTOOLS SOURCE *\n"
Expand All @@ -41,12 +41,23 @@ printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/SHTOOLS*

make F95="${FC}" CXX="${CXX}" F95FLAGS="-fPIC -O3 -std=gnu -ffast-math ${FFLAGS}" fortran
make F95="${FC}" CXX="${CXX}" F95FLAGS="-fPIC -O3 -std=gnu -ffast-math ${FFLAGS}" fortran-mp
case $FC in
*"ifort"*|*"ifx"*)
echo "Using Intel Fortran compiler"
make F95="${FC}" CXX="${CXX}" F95FLAGS="-fPIC -m64 -fpp -free -O3 -Tf" fortran
make F95="${FC}" CXX="${CXX}" F95FLAGS="-fPIC -m64 -fpp -free -O3 -Tf" fortran-mp
;;
*)
echo "Everything else"
make F95="${FC}" CXX="${CXX}" fortran
make F95="${FC}" CXX="${CXX}" fortran-mp
;;
esac

if [ -w ${PREFIX} ]; then
make PREFIX="${PREFIX}" install
make F95="${FC}" PREFIX="${PREFIX}" install
else
sudo make PREFIX="${PREFIX}" install
sudo make F95="${FC}" PREFIX="${PREFIX}" install
fi
cd ..

Expand Down
9 changes: 5 additions & 4 deletions buildscripts/build_zlib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ printf "*********************************************************\n"
printf "* STARTING DEPENDENCY BUILD *\n"
printf "*********************************************************\n"
printf "Using ${OS} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n"
printf "Installing to ${PREFIX}\n"
printf "Installing to ${ZLIB_ROOT}\n"
printf "\n"

ZLIB_VER="1.3"
ZLIB_VER="1.3.1"

printf "*********************************************************\n"
printf "* FETCHING ZLIB SOURCE *\n"
Expand All @@ -46,13 +46,14 @@ printf "CPPFLAGS: ${CPPFLAGS}\n"
printf "CPATH: ${CPATH}\n"
printf "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}\n"
printf "LDFLAGS: ${LDFLAGS}\n"
printf "INSTALL_PREFIX: ${ZLIB_ROOT}\n"
printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/zlib-*
cmake -B build -S . -G Ninja -DCMAKE_INSTALL_PREFIX=${PREFIX}
cmake -B build -S . -G Ninja -DCMAKE_INSTALL_PREFIX=${ZLIB_ROOT}

cmake --build build -j${NPROC}
if [ -w ${PREFIX} ]; then
if [ -w ${ZLIB_ROOT} ]; then
cmake --install build
else
sudo cmake --install build
Expand Down
12 changes: 12 additions & 0 deletions buildscripts/get_platform.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,18 @@ esac

case $OS in
Linux)
# Currently ifx support is not great
# if command -v ifx >/dev/null 2>&1; then
# OS="Linux-ifx"

if command -v ifort >/dev/null 2>&1; then
OS="Linux-ifort"
elif command -v gfortran >/dev/null 2>&1; then
OS="Linux-gnu"
else
echo "No Fortran compiler found on Linux"
exit 1
fi
;;
Darwin)
OS="MacOSX"
Expand Down
29 changes: 17 additions & 12 deletions buildscripts/set_compilers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,37 @@
SCRIPT_DIR=$(realpath $(dirname $0))
ROOT_DIR=$(realpath ${SCRIPT_DIR}/..)
case "$OS" in
Linux|MacOSX|Intel)
Linux-gnu|Linux-ifx|Linux-ifort|MacOSX)
;;
*)
echo "Unknown compiler type: $OS"
echo "Valid options are Intel, Linux, or MacOSX"
echo "Valid options are Linux-gnu, Linux-ifort, Linux-ifx, or MacOSX"
echo $USTMT
exit 1
;;
esac

set -a
case $OS in
Linux)
. ${SCRIPT_DIR}/set_environment_linux.sh
Linux-gnu)
FC=$(command -v gfortran)
CC=$(command -v gcc)
CXX=$(command -v g++)
CPP=$(command -v cpp)
;;
Linux-ifx)
FC=$(command -v ifx)
CC=$(command -v icx)
CXX=$(command -v icpx)
CPP=$(command -v cpp)
;;
Linux-ifort)
FC=$(command -v ifort)
CC=$(command -v icx)
CXX=$(command -v icpx)
CPP=$(command -v cpp)
;;
MacOSX)
. ${SCRIPT_DIR}/set_environment_macos.sh
FC=${HOMEBREW_PREFIX}/bin/gfortran-12
CFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -Wno-deprecated-non-prototype -arch ${ARCH}"
FCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -arch ${ARCH} -fno-underscoring"
Expand All @@ -52,15 +62,10 @@ case $OS in
RANLIB=${COMPILER_PREFIX}/bin/ranlib
LDFLAGS="-Wl,-no_compact_unwind"
;;
Intel)
FC=$(command -v ifx)
CC=$(command -v icx)
CXX=$(command -v icpx)
CPP=$(command -v cpp)
;;

*)
printf "Unknown compiler type: ${OS}\n"
echo "Valid options are Intel, Linux, or MacOSX"
echo "Valid options are Linux-gnu, Linux-ifort, Linux-ifx, or MacOSX"
printf $USTMT
exit 1
;;
Expand Down
15 changes: 9 additions & 6 deletions buildscripts/set_environment_linux.sh
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
#!/bin/bash
# Sets environment flags on Linux
set -a
PREFIX="/usr/local"
NCDIR="${PREFIX}"
NFDIR="${PREFIX}"
PREFIX=${PREFIX:-"/usr/local"}
NCDIR=${NETCDF_HOME:-"${PREFIX}"}
NFDIR=${NETCDF_FORTRAN_HOME:-"${PREFIX}"}
NETCDF_FORTRAN_HOME="${NFDIR}"
NETCDF_FORTRAN_INCLUDE="${NFDIR}/include"
HDF5_ROOT="${PREFIX}"
ZLIB_ROOT=${ZLIB_ROOT:-"${ZLIB_HOME}"}
ZLIB_ROOT=${ZLIB_ROOT:-"${PREFIX}"}
HDF5_ROOT=${HDF5_ROOT:-"${HDF5_HOME}"}
HDF5_ROOT=${HDF5_ROOT:-"${PREFIX}"}
HDF5_LIBDIR="${HDF5_ROOT}/lib"
HDF5_INCLUDE_DIR="${HDF5_ROOT}/include"
HDF5_PLUGIN_PATH="${HDF5_LIBDIR}/plugin"
LD_LIBRARY_PATH="${PREFIX}/lib"
CPATH="${PREFIX}/include:"
LD_LIBRARY_PATH="${PREFIX}/lib:${LD_LIBRARY_PATH}"
CPATH="${PREFIX}/include:${CPATH}"
HDF5_DIR="${HDF5_ROOT}/cmake"
PATH="${HDF5_ROOT}/bin:${PATH}"
CMAKE_INSTALL_LIBDIR="lib"
20 changes: 12 additions & 8 deletions cmake/Modules/FindNETCDF_Fortran.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,18 @@
# Tries to find the cmake config files first. Otherwise, try to find the libraries and headers by hand

IF (NOT netCDF-Fortran_DIR)
IF (CMAKE_SYSTEM_NAME STREQUAL "Windows")
FILE(GLOB LIBDIRS "C:/Program Files*/NC4F")
LIST(SORT LIBDIRS)
LIST(GET LIBDIRS -1 LIBPREFIX)
SET(netCDF-Fortran_DIR "${LIBPREFIX}/lib/cmake/netCDF" CACHE PATH "Location of provided netCDF-FortranConfig.cmake file")
ELSE()
SET(netCDF-Fortran_DIR "/usr/local/lib/cmake/netCDF" CACHE PATH "Location of provided netCDF-FortranConfig.cmake file")
ENDIF ()
IF (DEFINED ENV{NETCDF_FORTRAN_DIR})
SET(netCDF-Fortran_DIR "$ENV{NETCDF_FORTRAN_DIR}" CACHE PATH "Location of provided netCDF-FortranConfig.cmake file")
ELSE()
IF (CMAKE_SYSTEM_NAME STREQUAL "Windows")
FILE(GLOB LIBDIRS "C:/Program Files*/NC4F")
LIST(SORT LIBDIRS)
LIST(GET LIBDIRS -1 LIBPREFIX)
SET(netCDF-Fortran_DIR "${LIBPREFIX}/lib/cmake/netCDF" CACHE PATH "Location of provided netCDF-FortranConfig.cmake file")
ELSE()
SET(netCDF-Fortran_DIR "/usr/local/lib/cmake/netCDF" CACHE PATH "Location of provided netCDF-FortranConfig.cmake file")
ENDIF ()
ENDIF()
ENDIF()

MESSAGE(STATUS "Looking for netCDF-FortranConfig.cmake in ${netCDF-Fortran_DIR}")
Expand Down
Loading

0 comments on commit 1760b11

Please sign in to comment.