Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Pangea 4 docker build #276

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
c9cc97a
add p4 docker files
AJ0526712 Jul 11, 2024
42b012e
fix spack
Bubusch Jul 18, 2024
ac4671e
use onetech images
Bubusch Jul 25, 2024
bb23d51
rename docker files and add doc
Bubusch Jul 25, 2024
11cc69f
rename pecan base docker file
Bubusch Jul 25, 2024
4c809ba
update doc
Bubusch Jul 25, 2024
37ebcaf
fix cray wrappers
Bubusch Jul 26, 2024
f7ce25a
fix hpcx and mkl
Bubusch Jul 26, 2024
048aa9c
remove extra hpcx env
Bubusch Jul 26, 2024
cac5385
use cray wrapper dir as ARG
Bubusch Jul 26, 2024
037a9c5
fix merge conflict
Bubusch Jul 26, 2024
a56fced
fix blt merge conflict
Bubusch Jul 26, 2024
5995cdc
fix missing runs on in workflow
Bubusch Jul 26, 2024
e684d42
add ninja install for geos
Bubusch Jul 29, 2024
c677276
Merge branch 'master' into feature/bubusch/p4-docker
AJ0526712 Nov 7, 2024
999568a
split p3 vs p4
AJ0526712 Nov 14, 2024
fd35c42
run P4 build on ubuntu latest
Bubusch Nov 14, 2024
daf5cd5
fix tpl docker file tag
Bubusch Nov 14, 2024
2e9e5c1
fix typo in p4 host config
Bubusch Nov 14, 2024
e1ae092
Merge branch 'master' into feature/bubusch/p4-docker
Bubusch Nov 15, 2024
b154d2b
set clang version to 17.0.6
Bubusch Nov 27, 2024
4046a51
no update for clang
Bubusch Nov 27, 2024
4904e2c
dnf update only once
Bubusch Nov 27, 2024
adb3585
try to fix caliper build
Bubusch Nov 27, 2024
e7cd018
copy fix from trilinos PR
Bubusch Dec 4, 2024
220a288
fix local p4 build
Bubusch Dec 6, 2024
a20f291
Merge branch 'master' into feature/bubusch/p4-docker
Bubusch Dec 17, 2024
15cc460
changed modules for pangea-3 configuration
sframba Jan 9, 2025
b5163c8
changed P3 dockerfile
sframba Jan 16, 2025
3a5c1a1
update docker pangea3 with gcc11
Bubusch Jan 22, 2025
f47b085
fix cmake version
Bubusch Jan 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions .github/workflows/docker_build_tpls.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,20 @@ jobs:
DOCKER_REPOSITORY: geosx/rockylinux8-clang17-cuda12.5
TPL_DOCKERFILE: docker/tpl-rockylinux-clang-cuda-12.Dockerfile
RUNS_ON: Runner_4core_16GB
- name: Pangea 3 (AlmaLinux 8.8, gcc 9.4.0, open-mpi 4.1.2, cuda 11.5.0, openblas 0.3.10)
DOCKER_REPOSITORY: geosx/pangea3-almalinux8-gcc9.4-openmpi4.1.2-cuda11.5.0-openblas0.3.18
TPL_DOCKERFILE: docker/TotalEnergies/Pangea3.Dockerfile
HOST_CONFIG: host-configs/TOTAL/pangea3-gcc8.4.1-openmpi-4.1.2.cmake
DOCKER_ROOT_IMAGE: 7g8efcehpff/pangea-almalinux8-gcc9.4-openmpi4.1.2-cuda11.5.0-openblas0.3.18:4
- name: Pangea 3 (AlmaLinux 8.8, gcc 11.4.0, open-mpi 4.1.6, cuda 11.8.0, openblas 0.3.10)
DOCKER_REPOSITORY: geosx/pangea3-almalinux8-gcc11.4.0-openmpi4.1.6-cuda11.8.0-openblas0.3.18
TPL_DOCKERFILE: docker/TotalEnergies/pangea-3/pangea3-tpl.Dockerfile
DOCKER_ROOT_IMAGE: onetechssc/pangea3:almalinux8-gcc11.4.0-openmpi4.1.6-cuda11.8.0-openblas0.3.18_v2.0
HOST_CONFIG: host-configs/TotalEnergies/pangea-3/pangea3-gcc11.4.0-openmpi-4.1.6.cmake
HOST_ARCH: ppc64le
RUNS_ON: streak2
- name: Pangea 4 (redhat 8, gcc 12.1.0, hpcx 2.20.0, mkl 2023.2.0)
DOCKER_REPOSITORY: geosx/pangea4-gcc12.1-hpcxompi2.20.0-onemkl2023.2.0
TPL_DOCKERFILE: docker/TotalEnergies/pangea-4/pangea4-tpl.Dockerfile
DOCKER_ROOT_IMAGE: onetechssc/pangea4:gcc12.1-hpcxompi2.20.0-onemkl2023.2.0_v1.0
HOST_CONFIG: host-configs/TotalEnergies/pangea-4/pangea4-gcc12.1-hpcxompi2.20.0-onemkl2023.2.0.cmake
INSTALL_DIR_ROOT: /workrd/SCR/NUM/GEOS_environment/p4/install/tpl
RUNS_ON: ubuntu-latest

steps:
- name: Checkout
Expand Down
3 changes: 1 addition & 2 deletions docker/Stanford/Sherlock.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# This Dockerfile aims at reproducing (some part of) the SHERLOCK environment.
# Please see TotalEnergies/Pangea2.Dockerfile for fully commented version

#
# While loading module ompi4.1.2 on Sherlock, the following are aut-loaded:
# UCX/1.12.1
# LIBFABRIC/1.14.0
Expand Down
58 changes: 0 additions & 58 deletions docker/TotalEnergies/Dockerfile

This file was deleted.

38 changes: 0 additions & 38 deletions docker/TotalEnergies/Pangea3.Dockerfile

This file was deleted.

20 changes: 20 additions & 0 deletions docker/TotalEnergies/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# TotalEnergies Dockerfiles

## Overview

This directory contains several Dockerfiles used for building and deploying the TPLs.
Below is a table summarizing the purpose and key characteristics of each Dockerfile.

| Dockerfile | Description | Base Image | Key Components Installed |
|------------------------------------------|-------------------------------------------------------------------------------|-------------------------------|----------------------------------------------------------------------|
| `pangea3-gcc-openmpi-openblas.Dockerfile`| Builds a toolchain with GCC, OpenMPI, CUDA, and OpenBLAS for GEOS on Pangea 3.| `ppc64le/almalinux:8` | GCC, OpenMPI, CUDA, OpenBLAS, CMake, Python3.8 |
| `pangea3-tpl.Dockerfile` | Builds third-party libraries for GEOS on Pangea 3 environment. | `pangea3-gcc-openmpi-openblas`| GCC, OpenMPI, CUDA, OpenBLAS, CMake, Python3.8, TPLs |
| `pangea4-gcc.Dockerfile` | Builds a toolchain with GCC, CMake and Python on Pangea 4. | `spack/centos-stream` | GCC, CMake, Python3.11, Wget |
| `pangea4-gcc-hpcxompi-onemkl.Dockerfile` | Builds a toolchain with GCC, HPCXOMPI and ONEMKL on Pangea 4. | `pangea4-gcc` | GCC, CMake, Python3.11, Wget, HPCXOMPI, ONEMKL |
| `pangea4-tpl.Dockerfile` | Builds third-party libraries for GEOS on Pangea 4 environment. | `pangea4-gcc-hpcxompi-onemkl` | GCC, CMake, Python3.11, Wget, HPCXOMPI, ONEMKL, ninja, sccache, TPLs |

## DockerHub

The Docker images built from the ${cluster}.Dockerfile are available on DockerHub under for:
- pangea3 cluster : [7g8efcehpff/pangea-almalinux8-gcc9.4-openmpi4.1.2-cuda11.5.0-openblas0.3.18](https://hub.docker.com/r/7g8efcehpff/pangea-almalinux8-gcc9.4-openmpi4.1.2-cuda11.5.0-openblas0.3.18), will move to onetechssc/pangea3 once newer version of gcc is available.
- pangea4 cluster : [onetechssc/pangea4](https://hub.docker.com/r/onetechssc/pangea4)
Original file line number Diff line number Diff line change
@@ -1,10 +1,48 @@
# This Dockerfile is used to build a docker image reproducing the Pangea installation over a ppc64le architecture:
# It is not directly callable by the TPL ci but the built image is.

# syntax=docker/dockerfile:1
FROM ppc64le/almalinux:8

# Install other needed packages
#######################################
# Pangea 3 image : gcc - openmpi - openblas
#######################################
#
# Installs :
# - gcc = 11.4.0
# - cmake = 3.27.9
# - openmpi = 4.1.6
# - openblas = 0.3.18
# - cuda = 11.8.0
#
#######################################
#
# Description :
# - this Dockerfile is used to build a docker image reproducing the Pangea-3 installation over a ppc64le architecture:
# - it is not directly callable by the TPL ci but the built image is.
# - the image is based on ppc64le/almalinux:8
# - this image is deployed as onetechssc/pangea3:almalinux8-gcc11.4.0-openmpi4.1.6-cuda11.8.0-openblas0.3.18_v2.0
# - gcc, cmake, openmpi, openblas and cuda are copied from the tarball directory of Pangea 3
#
# Usage :
# build the image:
# - copy the tarball directory from the Pangea 3 repository to the current directory
# - podman build -f pangea3-gcc-openmpi-openblas.Dockerfile -t onetechssc/pangea3:almalinux8-gcc11.4.0-openmpi4.1.6-cuda11.8.0-openblas0.3.18_v2.0 -v /etc/pki/ca-trust/extracted/pem/:/etc/pki/ca-trust/extracted/pem/
# run the image:
# - podman run -it --detach --privileged --name pangea3_gcc_ompi_oblas -v /etc/pki/ca-trust/extracted/pem/:/etc/pki/ca-trust/extracted/pem localhost/onetechssc/pangea3:almalinux8-gcc11.4.0-openmpi4.1.6-cuda11.8.0-openblas0.3.18_v2.0
# - podman exec -it pangea3_gcc_ompi_oblas /bin/bash
# push the image (requires to be part of the onetechssc docker organization):
# - podman login docker.io
# - podman push pangea3:almalinux8-gcc11.4.0-openmpi4.1.6-cuda11.8.0-openblas0.3.18_v2.0 docker://docker.io/onetechssc/pangea3:almalinux8-gcc11.4.0-openmpi4.1.6-cuda11.8.0-openblas0.3.18_v2.0
#
#######################################

FROM ppc64le/almalinux:8 AS pangea3

# ------
# LABELS
LABEL description="Pangea 3 image : gcc - cmake - openmpi - openblas - cuda"
LABEL version="2.0"
LABEL maintainer="TotalEnergies HPC Team"

# ------
# INSTALL BASE PACKAGES
RUN dnf install -y \
# gcc deps \
libmpc-devel.ppc64le glibc-devel \
Expand All @@ -27,31 +65,32 @@ RUN dnf install -y \

## Temporary local variables needed buy several modules
ARG MODULE_PATH="/data_local/sw"

ARG SPACK_PATH="spack/0.17.0/opt/spack/linux-rhel8-power9le"
ARG SPACK_PATH="spack/0.22.1/opt/spack/linux-rhel8-power9le"

ARG COMPILER="gcc"
ARG DEFAULT_COMPILER_VER="8.4.1"
ARG SPACK_COMPILER_VER=$DEFAULT_COMPILER_VER
ARG MODULE_COMPILER_VER="9.4.0"
ARG MODULE_COMPILER_VER="11.4.0"

ARG SPACK_COMPILER=$COMPILER-$SPACK_COMPILER_VER

## liblustre
COPY ./tarball/liblustreapi.so.1 /lib64/

## CMake
# ------
# CMAKE
ADD ./tarball/cmake-*.tgz /

### Environment variables to export
ENV PATH="/data_local/appli_local/MTS/GEOSX/cmake/3.26.4/bin:${PATH}"
ENV PATH="$MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/cmake-3.27.9-yfuovjb3tx73ymsxuw5hoxv3eqdchned/bin:${PATH}"

## gcc
# ------
# GCC
ADD ./tarball/gcc-*.tgz /

### Temporary local variables
ARG GCC_VER=$COMPILER-$MODULE_COMPILER_VER
ARG GCC_DIR="$GCC_VER-xe5cqnyajaqz75up3gflln5zlj2rue5v"
ARG GCC_DIR="$GCC_VER-bbeypfg5smd3pgbsdswprcja7cxdxyqn"

### Environment variables to export
ENV CPATH="$MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/$GCC_DIR/include:${CPATH}" \
Expand All @@ -68,11 +107,12 @@ $MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/$GCC_DIR/lib64:${LD_RUN_PATH}" \
FC=gfortran \
GCC_ROOT=$MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/$GCC_DIR

## ompi
# ------
# OMPI
ADD ./tarball/ompi-*.tgz /

### Temporary local variables
ARG MPI_VER="4.1.2"
ARG MPI_VER="4.1.6"
ARG MPI_DIR="openmpi/$MPI_VER"
ARG MPI_PREFIX="OMPI"

Expand All @@ -92,14 +132,15 @@ ENV CPATH="$MODULE_PATH/$MPI_DIR/env/$SPACK_COMPILER/include:${CPATH}" \
OMPI_MCA_btl_openib_allow_ib="true" \
OMPI_MCA_btl_openib_warn_default_gid_prefix="0"

## Cuda
# ------
# CUDA
ADD ./tarball/cuda-*.tgz /

### Temporary local variables
ARG LIBCUDA_VER=450.156.00

ARG CUDA_VER_MAJ="11"
ARG CUDA_VER_MIN="5"
ARG CUDA_VER_MIN="8"
ARG CUDA_VER_PATCH="0"
ARG CUDA_VER="$CUDA_VER_MAJ.$CUDA_VER_MIN.$CUDA_VER_PATCH"
ARG CUDA_DIR="cuda/$CUDA_VER"
Expand Down Expand Up @@ -128,7 +169,8 @@ $MODULE_PATH/$CUDA_DIR/samples/bin/ppc64le/linux/release:${PATH}" \
CUDA_VERSION="$CUDA_VER_MAJ.$CUDA_VER_MIN" \
NVHPC_CUDA_HOME="$MODULE_PATH/$CUDA_DIR"

## Openblas
# ------
# OPENBLAS
ADD ./tarball/openblas-*.tgz /

### Temporary local variables
Expand All @@ -139,15 +181,16 @@ ARG BLAS_VER_MIN="3"
ARG BLAS_VER_PATCH="18"
ARG BLAS_DISTRIB="openblas"
ARG BLAS_VER="$BLAS_VER_MAJ.$BLAS_VER_MIN.$BLAS_VER_PATCH"
ARG BLAS_DIR="$BLAS_DISTRIB-$BLAS_VER-vk36pzksytuhylqesg4cca7667np5sjp"
ARG BLAS_DIR="$BLAS_DISTRIB-$BLAS_VER-cing5yuan7hsn23qmeemon4zwih3k2hd"

### Environment variables to export
ENV LD_LIBRARY_PATH="$MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/$BLAS_DIR/lib:${LD_LIBRARY_PATH}" \
LIBRARY_PATH="$MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/$BLAS_DIR/lib:${LIBRARY_PATH}" \
PATH="$MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/$BLAS_DIR/bin:${PATH}" \
OPENBLAS_ROOT="$MODULE_PATH/$SPACK_PATH/$SPACK_COMPILER/$BLAS_DIR"

## lsf
# ------
# LSF
ADD ./tarball/lsf-*.tgz /

### Temporary local variables
Expand All @@ -174,7 +217,8 @@ ENV LD_LIBRARY_PATH="$MODULE_PATH/$LSF_DIR/lib:${LD_LIBRARY_PATH}" \
# make -C build-pangea3-gcc8.4.1-openmpi-4.1.2-release -j && \
# cd .. && rm -rf thirdPartyLibs

# Install tools needed by geos ci
# ------
# CI TOOLS
RUN dnf -y --enablerepo=powertools install \
ninja-build \
openssh-clients \
Expand All @@ -183,7 +227,7 @@ RUN dnf -y --enablerepo=powertools install \
libxml2

# build sccache from source as prebuilt binary is not available for current archi / OS couple
RUN dnf makecache --refresh && dnf -y install cargo openssl-devel
RUN dnf clean all && dnf makecache --refresh && dnf -y install cargo openssl-devel
RUN cargo install sccache --locked && mkdir -p /opt/sccache/ && cp -r /root/.cargo/bin /opt/sccache/
RUN dnf remove -y cargo openssl-devel

Expand Down
Loading
Loading