diff --git a/.github/workflows/compilation.yml b/.github/workflows/compilation.yml index 8b3dafbcc5..5d21dfca60 100644 --- a/.github/workflows/compilation.yml +++ b/.github/workflows/compilation.yml @@ -51,10 +51,14 @@ on: push env: - CUDA_VERSION: 12.3.0 + CUDA_VERSION: 12.3.1 GFORTRAN_VERSION: 13.2.0 - NVFORTRAN_VERSION: 23.9 - PYTHON_VERSION: 3.12.0 + HDF5_VERSION: 1.14.3 + NETCDF_C_VERSION: 4.9.2 + NETCDF_FORTRAN_VERSION: 4.6.1 + NVFORTRAN_VERSION: 23.11 + OPENMPI_VERSION: 5.0.0 + PYTHON_VERSION: 3.12.1 jobs: run_if_on_mirror: @@ -85,38 +89,44 @@ jobs: - name: Unit tests with compilation - gfortran run: | . .runner_venv/bin/activate - module load gcc/${GFORTRAN_VERSION} openmpi netcdf_fortran + module load gcc/${GFORTRAN_VERSION} openmpi/${OPENMPI_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} pytest -n 4 --f90=gfortran --f90flags="-ffree-line-length-none" --compile --compileopencl src/psyclone/tests - name: Unit tests with compilation - nvfortran run: | . .runner_venv/bin/activate - module load nvidia-hpcsdk/${NVFORTRAN_VERSION} netcdf_fortran + module load nvidia-hpcsdk/${NVFORTRAN_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} pytest -n 4 --f90=nvfortran --compile --compileopencl src/psyclone/tests - name: Examples with compilation - gfortran run: | . .runner_venv/bin/activate make -C examples allclean # Although we're using gfortran, we link with CUDA's OpenCL library - module load gcc/${GFORTRAN_VERSION} openmpi netcdf_fortran + module load gcc/${GFORTRAN_VERSION} openmpi/${OPENMPI_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} module load cuda/${CUDA_VERSION} F90=gfortran make -C examples compile - name: Tutorials with compilation - gfortran run: | . .runner_venv/bin/activate make -C tutorial/practicals allclean - module load gcc/${GFORTRAN_VERSION} openmpi netcdf_fortran + module load gcc/${GFORTRAN_VERSION} openmpi/${OPENMPI_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} make -C tutorial/practicals compile - name: Examples with compilation - nvfortran run: | . .runner_venv/bin/activate make -C examples allclean - module load nvidia-hpcsdk/${NVFORTRAN_VERSION} netcdf_fortran + module load nvidia-hpcsdk/${NVFORTRAN_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} F90=nvfortran F90FLAGS="-acc -Minfo=all" make -C examples compile - name: Tutorials with compilation - nvfortran run: | . .runner_venv/bin/activate make -C tutorial/practicals allclean - module load nvidia-hpcsdk/${NVFORTRAN_VERSION} netcdf_fortran + module load nvidia-hpcsdk/${NVFORTRAN_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} # TODO #2251. Cannot build the LFRic practicals with nvfortran 23.5-23.9 # because the compilation of nan_test.f90 gives an ICE. F90=nvfortran F90FLAGS="-acc -Minfo=all" make -C tutorial/practicals/nemo compile diff --git a/.github/workflows/lfric_test.yml b/.github/workflows/lfric_test.yml index f53df9c2b5..f8c478eb64 100644 --- a/.github/workflows/lfric_test.yml +++ b/.github/workflows/lfric_test.yml @@ -47,7 +47,7 @@ jobs: runs-on: self-hosted env: LFRIC_REV: 45376 - PYTHON_VERSION: 3.12.0 + PYTHON_VERSION: 3.12.1 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/nemo_tests.yml b/.github/workflows/nemo_tests.yml index 7357fa317e..39c994c85b 100644 --- a/.github/workflows/nemo_tests.yml +++ b/.github/workflows/nemo_tests.yml @@ -46,9 +46,13 @@ jobs: if: ${{ github.repository == 'stfc/PSyclone-mirror' }} runs-on: self-hosted env: + HDF5_VERSION: 1.14.3 + NETCDF_C_VERSION: 4.9.2 + NETCDF_FORTRAN_VERSION: 4.6.1 NVFORTRAN_VERSION: 23.7 - PERL_VERSION: 5.38.0 - PYTHON_VERSION: 3.12.0 + ONEAPI_VERSION: 2024.0.0 + PERL_VERSION: 5.38.2 + PYTHON_VERSION: 3.12.1 steps: - uses: actions/checkout@v3 @@ -84,7 +88,8 @@ jobs: export NEMO_DIR=${HOME}/NEMO cd $PSYCLONE_NEMO_DIR make -j 4 passthrough - module load nvidia-hpcsdk/${NVFORTRAN_VERSION} netcdf_fortran + module load nvidia-hpcsdk/${NVFORTRAN_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} module load perl/${PERL_VERSION} make -j 4 compile-passthrough @@ -96,7 +101,8 @@ jobs: export NEMO_DIR=${HOME}/NEMO cd $PSYCLONE_NEMO_DIR make -j 4 openmp_gpu - module load nvidia-hpcsdk/${NVFORTRAN_VERSION} netcdf_fortran + module load nvidia-hpcsdk/${NVFORTRAN_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} module load perl/${PERL_VERSION} make -j 4 compile-openmp_gpu export NV_ACC_POOL_THRESHOLD=75 @@ -125,7 +131,8 @@ jobs: export NEMO_DIR=${HOME}/NEMO cd $PSYCLONE_NEMO_DIR make -j 4 openacc_kernels - module load nvidia-hpcsdk/${NVFORTRAN_VERSION} netcdf_fortran + module load nvidia-hpcsdk/${NVFORTRAN_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} module load perl/${PERL_VERSION} COMPILER_ARCH=linux_nvidia_acc_gpu make -j 4 compile-openacc_kernels export NV_ACC_POOL_THRESHOLD=75 @@ -155,7 +162,8 @@ jobs: export NEMO_DIR=${HOME}/NEMO cd $PSYCLONE_NEMO_DIR make -j 4 openacc_loops - module load nvidia-hpcsdk/${NVFORTRAN_VERSION} netcdf_fortran + module load nvidia-hpcsdk/${NVFORTRAN_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} module load perl/${PERL_VERSION} COMPILER_ARCH=linux_nvidia_acc_gpu make -j 4 compile-openacc_loops export NV_ACC_POOL_THRESHOLD=75 @@ -183,8 +191,8 @@ jobs: - name: NEMO ECMWF OpenMP for CPU run: | . .runner_venv/bin/activate - module rm nvidia-hpcsdk - module load intel/oneapi compiler mpi + module load oneapi/${ONEAPI_VERSION} + module load hdf5/${HDF5_VERSION} netcdf_c/${NETCDF_C_VERSION} netcdf_fortran/${NETCDF_FORTRAN_VERSION} module load perl/${PERL_VERSION} export PSYCLONE_NEMO_DIR=${GITHUB_WORKSPACE}/examples/nemo/scripts export NEMO_DIR=${HOME}/NEMOGCM_V40 @@ -196,9 +204,6 @@ jobs: export MPI_INC_DIR=${I_MPI_ROOT}/include cd $PSYCLONE_NEMO_DIR make -j 4 openmp_cpu - export LD_LIBRARY_PATH=/home/ssiso/ecmwf_nemo/ESiWACE2/scripts/dev/netcdf-c-4.9.0/lib/:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH=/home/ssiso/ecmwf_nemo/ESiWACE2/scripts/dev/netcdf-fortran-4.5.4/lib:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH=/home/ssiso/ecmwf_nemo/ESiWACE2/scripts/dev/hdf5-1.12.2/lib/:$LD_LIBRARY_PATH make -j 4 compile-openmp_cpu export OMP_NUM_THREADS=4 make run-openmp_cpu |& tee output.txt