diff --git a/scripts/build_scripts/build_images.sh b/scripts/build_scripts/build_images.sh index acaa7d4..daf45d2 100755 --- a/scripts/build_scripts/build_images.sh +++ b/scripts/build_scripts/build_images.sh @@ -9,11 +9,13 @@ NVHPC_VERSION=23.9-devel-cuda12.2-${OS_BASE} ROOT_VERSION=v6-30-04 FCS_BRANCH=dingpf/packaging + ROOT_DOT_VERSION=${ROOT_VERSION//v/} ROOT_DOT_VERSION=${ROOT_DOT_VERSION//-/.} NVHPC_BASE_IMAGE=nvcr.io/nvidia/nvhpc:${NVHPC_VERSION} CUDA_BASE_IMAGE=docker.io/nvidia/cuda:${CUDA_VERSION} UBUNTU_BASE_IMAGE=docker.io/library/ubuntu:22.04 +ROCM_BASE_IMAGE=rocm/rocm-terminal:6.2.1 #REGISTRY_PROJECT=docker.io/dingpf REGISTRY_PROJECT=registry.nersc.gov/m2845 @@ -138,4 +140,16 @@ echo "INFO - $(date) - Building additional FCS images..." | tee -a ${logfile} build_and_push_fcs_image ${NVHPC_BASE_IMAGE} fcs-stdpar-cuda build_and_push_fcs_image ${CUDA_BASE_IMAGE} fcs-hip-cuda +echo "INFO - $(date) - Building ROCm ROOT image..." | tee -a ${logfile} +rocm_img_tag=$(basename ${ROCM_BASE_IMAGE}) +rocm_img_tag=${rocm_img_tag//:/} +root_rocm_image_tag=${REGISTRY_PROJECT}/root:${ROOT_DOT_VERSION}-${rocm_img_tag} +$CONTAINER_CMD build -f root-rocm.Dockerfile \ + --build-arg=BASE=${ROCM_BASE_IMAGE} \ + --build-arg=ROOT_VERSION=${ROOT_VERSION} \ + -t ${root_rocm_image_tag} . | tee -a ${logfile} + +echo "INFO - $(date) - Building ROCm HIP FCS image..." | tee -a ${logfile} +build_and_push_fcs_image ${ROCM_BASE_IMAGE} fcs-hip-rocm + echo "INFO - $(date) - Script completed successfully!" | tee -a ${logfile} diff --git a/scripts/build_scripts/fcs-hip-rocm.Dockerfile b/scripts/build_scripts/fcs-hip-rocm.Dockerfile new file mode 100644 index 0000000..16992e9 --- /dev/null +++ b/scripts/build_scripts/fcs-hip-rocm.Dockerfile @@ -0,0 +1,50 @@ +ARG BASE=registry.nersc.gov/m2845/root:6.30.04-rocm-terminal6.2.1 +ARG REFRESHED_AT=2024-11-28 +FROM $BASE + +USER root + +ARG DEBIAN_FRONTEND noninteractive +RUN \ + DEBIAN_FRONTEND=${DEBIAN_FRONTEND} \ + apt-get update && \ + DEBIAN_FRONTEND=${DEBIAN_FRONTEND} \ + apt-get upgrade --yes && \ + apt-get install --yes \ + wget && \ + apt-get clean all + +RUN \ + wget https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-linux-x86_64.sh &&\ + chmod +x cmake-3.31.1-linux-x86_64.sh && \ + mkdir -p /opt/cmake && \ + ./cmake-3.31.1-linux-x86_64.sh --prefix=/opt/cmake --skip-license --exclude-subdir && \ + rm -f ./cmake-3.31.1-linux-x86_64.sh + +ENV PATH=/opt/cmake/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/rocm/bin + +ARG WORK_DIR=/hep-mini-apps +ARG FCS_SRC_DIR=$WORK_DIR/FCS-GPU/source +ARG FCS_BUILD_DIR=$WORK_DIR/FCS-GPU/build +ARG FCS_INSTALL_DIR=$WORK_DIR/FCS-GPU/install +ARG FCS_BRANCH=dingpf/packaging +ARG ROOT_INSTALL_DIR=$WORK_DIR/root/install + +RUN \ + cd $ROOT_INSTALL_DIR/bin && \ + . $ROOT_INSTALL_DIR/bin/thisroot.sh && \ + mkdir -p $FCS_BUILD_DIR && \ + mkdir -p $FCS_INSTALL_DIR && \ + git clone https://github.com/hep-cce/FCS-GPU.git -b ${FCS_BRANCH} $FCS_SRC_DIR && \ + cd $FCS_BUILD_DIR && \ + cmake -DCMAKE_INSTALL_PREFIX=$FCS_INSTALL_DIR \ + -DUSE_HIP=on \ + -DCMAKE_CXX_COMPILER=hipcc \ + -DCMAKE_CXX_STANDARD=17 \ + -DCMAKE_CXX_EXTENSIONS=Off \ + -DENABLE_GPU=on \ + $FCS_SRC_DIR/FastCaloSimAnalyzer && \ + make -j 128 install && \ + cd $WORK_DIR && \ + rm -rf $FCS_BUILD_DIR + diff --git a/scripts/build_scripts/root-rocm.Dockerfile b/scripts/build_scripts/root-rocm.Dockerfile new file mode 100644 index 0000000..250493b --- /dev/null +++ b/scripts/build_scripts/root-rocm.Dockerfile @@ -0,0 +1,45 @@ +ARG BASE=rocm/rocm-terminal:6.2.1 +ARG REFRESHED_AT=2024-11-28 +FROM $BASE + +ARG DEBIAN_FRONTEND noninteractive + +USER root +RUN \ + DEBIAN_FRONTEND=${DEBIAN_FRONTEND} \ + apt-get update && \ + DEBIAN_FRONTEND=${DEBIAN_FRONTEND} \ + apt-get upgrade --yes && \ + apt-get install --yes \ + hiprand \ + rocrand && \ + apt-get clean all + +ARG ROOT_VERSION=v6-30-04 +ARG WORK_DIR=/hep-mini-apps +ARG ROOT_SRC_DIR=$WORK_DIR/root/source +ARG ROOT_INSTALL_DIR=$WORK_DIR/root/install +ARG ROOT_BUILD_DIR=$WORK_DIR/build +RUN \ + mkdir -p $ROOT_BUILD_DIR && \ + git clone --branch $ROOT_VERSION --depth=1 https://github.com/root-project/root.git $ROOT_SRC_DIR && \ + mkdir -p $ROOT_INSTALL_DIR && \ + cd $ROOT_BUILD_DIR && \ + cmake -DCMAKE_INSTALL_PREFIX=$ROOT_INSTALL_DIR \ + -DCMAKE_CXX_FLAGS=-std=c++17 \ + -Dx11=OFF -Dtbb=OFF \ + -Dopengl=OFF -Dgviz=OFF \ + -Dimt=OFF -Ddavix=OFF \ + -Dvdt=OFF -Dxrootd=OFF \ + -Dwebgui=OFF -Dsqlite=OFF \ + -Dssl=OFF -Dmysql=OFF \ + -Doracle=OFF -Dpgsql=OFF \ + -Ddavix=OFF -Dgfal=OFF \ + -Dimt=OFF \ + -DCMAKE_CXX_STANDARD=17 \ + -DCMAKE_CXX_EXTENSIONS=Off \ + $ROOT_SRC_DIR && \ + make -j 64 install && \ + rm -rf $ROOT_BUILD_DIR + +CMD ["/usr/bin/bash" "-l"]