Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
46dca9b
Create Intel_Parallelworks_CI.yaml
laurenchilutti Oct 4, 2023
efd8d8a
Create daily_cleanup_parallelworks.yaml
laurenchilutti Oct 4, 2023
edc1ac2
Update Intel_Parallelworks_CI.yaml
laurenchilutti Oct 4, 2023
d340201
Update Intel_Parallelworks_CI.yaml
laurenchilutti Apr 22, 2024
d26092f
Update daily_cleanup_parallelworks.yaml
laurenchilutti Apr 22, 2024
ea78a85
Update Intel_Parallelworks_CI.yaml
laurenchilutti Apr 22, 2024
c958689
Update Intel_Parallelworks_CI.yaml
laurenchilutti Apr 24, 2024
ed90515
Add Parallelworks CI scripts to repo
laurenchilutti Apr 24, 2024
8cf9685
Create Intel_Parallelworks_multbuild.yaml
laurenchilutti Apr 24, 2024
0e6f603
update path to external libs
laurenchilutti Apr 24, 2024
97e694e
compile with a matrix of options and cleanup arument parsing
laurenchilutti Apr 24, 2024
8609b67
fix typos in compile.sh
laurenchilutti Apr 24, 2024
5afbd70
fixing arg parsing
laurenchilutti Apr 24, 2024
7b25873
Update CHECKOUT_code
kaiyuan-cheng Feb 6, 2024
9a31076
update Intel_Parallelworks_CI.yaml to allow for up to 17 concurrent c…
laurenchilutti Apr 24, 2024
ed636a0
updating all parallelworks CI files to be bash.
laurenchilutti Apr 24, 2024
f043398
Merge remote-tracking branch 'noaa/main' into AddCI
laurenchilutti Dec 18, 2024
660632e
Merge branch 'main' into AddCI
laurenchilutti Mar 23, 2026
e44e539
Refactor Intel Parallelworks CI workflow
laurenchilutti Mar 23, 2026
49fb7c4
Enhance CHECKOUT_code for 'all' configuration support
laurenchilutti Mar 23, 2026
7bf0ed4
Update Intel_Parallelworks_CI.yaml
laurenchilutti Mar 23, 2026
a92cec7
removed buildfms workflow
laurenchilutti Mar 23, 2026
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
6 changes: 6 additions & 0 deletions .github/.parallelworks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# .parallelworks Directory

The .parallelworks directory stores the CI scripts that reside on Parallelworks
These scripts are executed via the GitHub Actions Workflows in .github/workflows

On Parallelworks these scripts are installed at: /contrib/fv3/SHiELD_build_CI
90 changes: 90 additions & 0 deletions .github/.parallelworks/checkout.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#!/bin/bash -xe

##############################################################################
## User set up variables
## Root directory for CI
dirRoot=/contrib/fv3
## Intel version to be used
intelVersion=2023.2.0
##############################################################################
## HPC-ME container
container=/contrib/containers/noaa-intel-prototype_2023.09.25.sif
container_env_script=/contrib/containers/load_spack_noaa-intel.sh
##############################################################################

#Parse Arguments
branch=main
commit=""
while [[ $# -gt 0 ]]; do
case $1 in
-b|--branch)
branch="$2"
shift # past argument
shift # past value
;;
-h|--hash)
commit="$2"
shift # past argument
shift # past value
;;
*)
echo "unknown argument"
exit 1
;;
esac
done

echo "branch is $branch"
echo "commit is $commit"


## Set up the directories
testDir=${dirRoot}/${intelVersion}/SHiELD_build/${branch}/${commit}
logDir=${testDir}/log
export MODULESHOME=/usr/share/lmod/lmod
#Define External Libs path
export EXTERNAL_LIBS=${dirRoot}/${intelVersion}/SHiELD_build/externallibs
mkdir -p ${EXTERNAL_LIBS}
## create directories
rm -rf ${testDir}
mkdir -p ${logDir}
# salloc commands to start up
#2 tests layout 8,8 (16 nodes)
#2 tests layout 4,8 (8 nodes)
#9 tests layout 4,4 (18 nodes)
#5 tests layout 4,1 (5 nodes)
#17 tests layout 2,2 (17 nodes)
#salloc --partition=p2 -N 64 -J ${branch} sleep 20m &

## clone code
cd ${testDir}
git clone --recursive https://github.com/NOAA-GFDL/SHiELD_build.git
## Check out the PR
cd ${testDir}/SHiELD_build && git fetch origin ${branch}:toMerge && git merge toMerge

##checkout components
cd ${testDir}/SHiELD_build && ./CHECKOUT_code
#Check if we already have FMS compiled
grep -m 1 "fms_release" ${testDir}/SHiELD_build/CHECKOUT_code > ${logDir}/release.txt
source ${logDir}/release.txt
echo ${fms_release}
echo `cat ${EXTERNAL_LIBS}/FMSversion`
if [[ ${fms_release} != `cat ${EXTERNAL_LIBS}/FMSversion` ]]
then
#remove libFMS if it exists
if [ -d $EXTERNAL_LIBS/libFMS ]
then
rm -rf $EXTERNAL_LIBS/libFMS
fi
if [ -e $EXTERNAL_LIBS/FMSversion ]
then
rm $EXTERNAL_LIBS/FMSversion
fi
echo $fms_release > $EXTERNAL_LIBS/FMSversion
echo $container > $EXTERNAL_LIBS/FMScontainerversion
echo $container_env_script >> $EXTERNAL_LIBS/FMScontainerversion
# Build FMS
cd ${testDir}/SHiELD_build/Build
set -o pipefail
singularity exec -B /contrib ${container} ${container_env_script} "./BUILDlibfms intel"
fi
84 changes: 84 additions & 0 deletions .github/.parallelworks/compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#!/bin/bash -xe

##############################################################################
## User set up variables
## Root directory for CI
dirRoot=/contrib/fv3
## Intel version to be used
intelVersion=2023.2.0
##############################################################################
## HPC-ME container
container=/contrib/containers/noaa-intel-prototype_2023.09.25.sif
container_env_script=/contrib/containers/load_spack_noaa-intel.sh
##############################################################################

#Parse Arguments
branch=main
commit=""
while [[ $# -gt 0 ]]; do
case $1 in
-b|--branch)
branch="$2"
shift # past argument
shift # past value
;;
-h|--hash)
commit="$2"
shift # past argument
shift # past value
;;
-c|--config)
config="$2"
shift # past argument
shift # past value
;;
--hydro)
hydro="$2"
shift # past argument
shift # past value
;;
--bit)
bit="$2"
shift # past argument
shift # past value
;;
-m|--mode)
mode="$2"
shift # past argument
shift # past value
;;
*)
echo "unknown argument"
exit 1
;;
esac
done

if [ -z $mode ] || [ -z $bit ] || [ -z $hydro ] || [ -z $config ]
then
echo "must specify config, hydro, bit, and mode options for compile"
exit 1
fi

echo "branch is $branch"
echo "commit is $commit"
echo "mode is $mode"
echo "bit is $bit"
echo "hydro is $hydro"
echo "config is $config"

if [ $hydro = "sw" ] && [ $config = "shield" ]
then
echo "this combination should not be tested"
else
## Set up the directories
testDir=${dirRoot}/${intelVersion}/SHiELD_build/${branch}/${commit}
logDir=${testDir}/log
# Set up build
cd ${testDir}/SHiELD_build/Build
#Define External Libs path
export EXTERNAL_LIBS=${dirRoot}/${intelVersion}/SHiELD_build/externallibs
# Build SHiELD
set -o pipefail
singularity exec -B /contrib ${container} ${container_env_script} "./COMPILE ${config} ${hydro} ${bit} ${mode} intel clean"
fi
89 changes: 89 additions & 0 deletions .github/.parallelworks/run_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/bin/bash -xe
ulimit -s unlimited
##############################################################################
## User set up veriables
## Root directory for CI
dirRoot=/contrib/fv3
## Intel version to be used
intelVersion=2023.2.0
##############################################################################
## HPC-ME container
container=/contrib/containers/noaa-intel-prototype_2023.09.25.sif
container_env_script=/contrib/containers/load_spack_noaa-intel.sh
##############################################################################

#Parse Arguments
branch=main
commit=""
while [[ $# -gt 0 ]]; do
case $1 in
-b|--branch)
branch="$2"
shift # past argument
shift # past value
;;
-h|--hash)
commit="$2"
shift # past argument
shift # past value
;;
-t|--test)
testname="$2"
shift # past argument
shift # past value
;;
*)
echo "unknown argument"
exit 1
;;
esac
done

if [ -z $testname ]
then
echo "must specify a test name with -t"
exit 1
fi

echo "branch is $branch"
echo "commit is $commit"
echo "test is $testname"

## Set up the directories
MODULESHOME=/usr/share/lmod/lmod
testDir=${dirRoot}/${intelVersion}/SHiELD_build/${branch}/${commit}
logDir=${testDir}/log
baselineDir=${dirRoot}/baselines/intel/${intelVersion}

## Run the CI Test
# Define the builddir testscriptdir and rundir
# Set the BUILDDIR for the test script to use
export BUILDDIR="${testDir}/SHiELD_build"
testscriptDir=${BUILDDIR}/RTS/CI
runDir=${BUILDDIR}/CI/BATCH-CI

# Run CI test scripts
cd ${testscriptDir}
set -o pipefail
# Execute the test piping output to log file
./${testname} " --partition=p2 --mpi=pmi2 --job-name=${commit}_${testname} singularity exec -B /contrib ${container} ${container_env_script}" |& tee ${logDir}/run_${testname}.log

## Compare Restarts to Baseline
#The following tests are not expectred to have run-to-run reproducibility:
#d96_2k.solo.bubble
#d96_2k.solo.bubble.n0
#d96_2k.solo.bubble.nhK
if [[ ${testname} == "d96_2k.solo.bubble" || ${testname} == "d96_2k.solo.bubble.n0" || ${testname} == "d96_2k.solo.bubble.nhK" ]]
then
echo "${testname} is not expected to reproduce so answers were not compared"
else
source $MODULESHOME/init/sh
export MODULEPATH=/mnt/shared/manual_modules:/usr/share/modulefiles/Linux:/usr/share/modulefiles/Core:/usr/share/lmod/lmod/modulefiles/Core:/apps/modules/modulefiles:/apps/modules/modulefamilies/intel
module load intel/2022.1.2
module load netcdf
module load nccmp
for resFile in `ls ${baselineDir}/${testname}`
do
nccmp -d ${baselineDir}/${testname}/${resFile} ${runDir}/${testname}/RESTART/${resFile}
done
fi
42 changes: 42 additions & 0 deletions .github/workflows/Intel_Parallelworks_CI.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Build SHiELD

on:
pull_request:
branches:
- main

#this should cancel in progress ci runs for the same PR
#(e.g. a second commit on the same PR comes in while CI is still running)
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
checkout:
if: github.repository == 'NOAA-GFDL/SHiELD_build'
runs-on: [self-hosted]
name: Checkout SHiELD and Build FMS
steps:
- run: /contrib/fv3/SHiELD_build_CI/checkout_fms.sh -b $GITHUB_REF -h $GITHUB_SHA
build:
if: github.repository == 'NOAA-GFDL/SHiELD_build'
runs-on: [self-hosted]
name: SOLO SHiELD build
needs: [checkout]
strategy:
fail-fast: true
max-parallel: 4
matrix:
runscript: [/contrib/fv3/SHiELD_build_CI/compile.sh]
config: [shield, solo, shiemom, shiemom_lm4]
hydro: [nh]
bit: [32bit]
mode: [repro]
steps:
- env:
RUNSCRIPT: ${{ matrix.runscript }}
CONFIG: ${{ matrix.config }}
HYDRO: ${{ matrix.hydro }}
BIT: ${{ matrix.bit }}
MODE: ${{ matrix.mode }}
run: $RUNSCRIPT -b $GITHUB_REF -h $GITHUB_SHA -c $CONFIG --hydro $HYDRO --bit $BIT -m $MODE
32 changes: 0 additions & 32 deletions .github/workflows/buildFMS.yaml

This file was deleted.

17 changes: 17 additions & 0 deletions .github/workflows/daily_cleanup_parallelworks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Old Build Cleanup

# This GitHub Action Workflow is runing on the devcimultiintel cluster
# This will delete all build directories older than 30 days
# Build directories are on the cloud at /contrib/fv3/2023.2.0

on:
schedule:
# run daily at midnight
- cron: '0 0 * * *'

jobs:
delete:
runs-on: [shieldbuild]
name: Delete Builds
steps:
- run: find /contrib/fv3/2023.2.0/SHiELD_build/refs/pull -maxdepth 1 -mindepth 1 -mtime +30 -type d -print -delete
Loading
Loading