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

Version 1.5.0 #78

Merged
merged 205 commits into from
Mar 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
205 commits
Select commit Hold shift + click to select a range
78f0805
cloudsc builds and runs with new field_module, gives correct results
awnawab Oct 19, 2022
9f27525
Standalone FIELD_API repo added to bundle
awnawab Oct 24, 2022
86fde0a
Made field_api build optional
awnawab Dec 8, 2022
1a4f976
Removing commented out code
awnawab Jan 24, 2023
5ba6dbf
Updated description of field_api in README
awnawab Jan 25, 2023
209f437
Remove redundant FIELD_API option from bundle
awnawab Feb 23, 2023
426fa57
Remove redundant -Mcuda link options
awnawab Mar 1, 2023
bb45cd1
Remove obsolete architectures, add march=znver2 option to gnu compila…
piotrows Mar 14, 2023
fd76949
add Atlas data structures to be used in a separate exe: cloudsc-fortr…
sbrdar Mar 15, 2023
49d7222
Removal of Volta from Readme, deleting volta benchmark arch file
piotrows Mar 15, 2023
b5b86c7
Merge pull request #45 from ecmwf-ifs/napz-zenver2-gnu
mlange05 Mar 15, 2023
3cd90da
manual OpenACC k-caching variant
MichaelSt98 Mar 17, 2023
21bdd3a
updated GitHub actions, targets to be verified and run
MichaelSt98 Mar 17, 2023
5eefb42
CMake improvements to address PR review
awnawab Mar 21, 2023
9432125
Updated field_api variant README with CUDA heapsize info
awnawab Mar 21, 2023
476a2af
Added CUDA heapsize env var to field_api variant test
awnawab Mar 21, 2023
7844498
Removed field_api variant from github actions verify-targets
awnawab Mar 21, 2023
ebe8a21
Merge pull request #25 from awnawab/naan_field_api
mlange05 Mar 21, 2023
1fb9973
Merge pull request #46 from ecmwf-ifs/nams_naml_openacc_k_caching
mlange05 Mar 22, 2023
9da2060
PyIface - Fortran-Python bridging with CMake compilation (#38)
piotrows Apr 17, 2023
2a050c6
Adapt to GT4Py Cartesian.
stubbiali Apr 24, 2023
1a09b7d
Improve user control of floating point precision.
stubbiali Apr 24, 2023
2cba075
Fix print statement.
stubbiali Apr 24, 2023
71b6918
Merge pull request #50 from stubbiali/gt4py-cartesian
mlange05 Apr 25, 2023
1c1046d
Python: Remove restrictive pre-commit hooks
mlange05 Feb 4, 2023
a412e6e
Python-f2py: Add secondary package cloudscf2py to Python package
mlange05 Feb 8, 2023
2b73d70
Python-f2py: Add draft driver with Loki-generation capabilities
mlange05 Feb 8, 2023
9d460a0
Python: Add output validation for Loki-generated pure-Python driver
mlange05 Feb 22, 2023
adca039
Python: Switch to pyproject.toml install configuration
mlange05 Apr 28, 2023
e66602c
CLOUDSC-Python: Add bundle and CMake install options for cloudscf2py
mlange05 May 2, 2023
06748f3
CLOUDSC-Python: Add new cloudsc_f2py.py runner to CI pipeline
mlange05 May 2, 2023
d943e7f
using Atlas block view on FieldSet
sbrdar May 8, 2023
9d2c328
Python-f2py: Small fixes to CI runner and CMake setup
mlange05 May 9, 2023
a2545c7
Python-f2py: Remove defunct --nthreads runner options
mlange05 May 9, 2023
d24f63f
FieldSet is not thread-safe -> unpack fields prior the cloudsc loop (…
sbrdar May 9, 2023
a024861
Python-f2py: Add expand_field routine to enable ngptot > klon
mlange05 May 10, 2023
2cefedc
Python-f2py: Fix CI builder setup for new python variant (again)
mlange05 May 11, 2023
72a5f02
Python-f2py: More CI config fixes
mlange05 May 11, 2023
547c258
Merge pull request #51 from ecmwf-ifs/naml-python-cloudsc
reuterbal May 11, 2023
a868e37
Python-gt4py: Removing GT4Py-based implementation of CLOUDSC
mlange05 May 12, 2023
64c3f8a
use FieldSet instead of array of Field, this time in a thread same ma…
sbrdar May 15, 2023
af70722
Merge pull request #52 from ecmwf-ifs/naml-remove-gt4py
reuterbal May 16, 2023
f9a1657
switch to index to acces a field from a FieldSet rather than using st…
sbrdar May 21, 2023
e5c9200
Add a loki-idem-stack target
reuterbal Mar 20, 2023
f1a0c0d
Add stack targets to Github actions
reuterbal Apr 14, 2023
e19bc3b
Add Cray Pointer flags to compile options
reuterbal Apr 14, 2023
0d67cc0
Merge pull request #49 from ecmwf-ifs/nabr-scc-stack
reuterbal May 30, 2023
fa4941a
merge from develop
sbrdar May 31, 2023
624b3b9
Enable gvmode on NVHPC
reuterbal Jun 12, 2023
475b43a
Add nvidia/22.11 arch files for hpc2020
reuterbal Jun 12, 2023
a08120c
Change -Mcuda to -cuda and link common lib using -cuda
reuterbal Jul 10, 2023
a4b562f
Merge pull request #55 from ecmwf-ifs/nabr-gvmode
mlange05 Jul 13, 2023
783fe1e
Remove CMP0077 policy (use CACHE variables instead)
reuterbal Jul 11, 2023
3c6d73a
Version guard the OpenACC hackery
reuterbal Jul 11, 2023
d286df1
Add NVHPC 23.5 to Github actions
reuterbal Jul 11, 2023
a35fb90
Free runner disk space for NVHPC
reuterbal Jul 11, 2023
e7408e8
Choose pgf90 for HDF5 build
reuterbal Jul 11, 2023
17cdd05
Increase stack size on Github runner
reuterbal Jul 17, 2023
852c087
Source env.sh before running
reuterbal Jul 17, 2023
6e73072
Fix wrong binary name in test
reuterbal Jul 18, 2023
37ae673
Disable atlas tests if executable is not built
reuterbal Jul 18, 2023
2458992
Check if MPI was already initialized
reuterbal Jul 18, 2023
c41a0c4
Add eckit, fckit, atlas as optional bundle dependencies
reuterbal Jul 18, 2023
95aaef3
Add Atlas variant to Github actions
reuterbal Jul 18, 2023
5960989
Allow for Atlas binaries in Github CI
reuterbal Jul 18, 2023
8620e5e
Reduce NPROMA for idem-stack target
reuterbal Jul 18, 2023
89cd907
Use CTest to run targets
reuterbal Jul 20, 2023
b64b6fa
Remove redundant run-targets script
reuterbal Jul 24, 2023
df29dc8
Reduce CI matrix explosion slightly
reuterbal Jul 24, 2023
766b0eb
Add arch files for Leonardo
reuterbal Aug 4, 2023
c4206f2
Merge pull request #56 from ecmwf-ifs/nabr-nvidia-ci
mlange05 Aug 9, 2023
f9ddbd7
Merge pull request #58 from ecmwf-ifs/nabr-leonardo-arch
mlange05 Aug 9, 2023
dbaa293
debug leftover (tnx Balthasar)
sbrdar Aug 17, 2023
b23deb3
Atlas lets the dwarf do the mpi initialisation
sbrdar Aug 22, 2023
698bdd2
update authors
sbrdar Aug 23, 2023
3b31fdf
take newest developments from Atlas
sbrdar Aug 23, 2023
1a06752
bug fix in Atlas structured when the data array in the first block is…
sbrdar Aug 23, 2023
24b9132
bug fix the parallel setup with Atlas structure: 1) number of point p…
sbrdar Aug 23, 2023
b39e918
NGPTOT is controlled by Atlas (tnx Willem)
sbrdar Aug 23, 2023
7ede61b
Merge branch 'develop' into nab_atlas_structures
sbrdar Aug 23, 2023
20b25e1
Remove conflict with CUDA option of eckit
reuterbal Aug 25, 2023
c4b6c9a
Restore Github workflow after merge
reuterbal Aug 25, 2023
1de5e78
Trim down target verification
reuterbal Aug 25, 2023
3ef7b5a
Manual (or rather semi-automatically generated) HIP versions of cloud…
MichaelSt98 Aug 31, 2023
7c397fe
Change in load state in order to allow correct validation for nproma …
MichaelSt98 Sep 4, 2023
019d02a
using two MultiField-s to group variables under one block; still rely…
sbrdar Sep 12, 2023
31cbe4d
working out numbering for input variables in multifield
sbrdar Sep 12, 2023
ee340be
using Field lookup be idx (more performance) whilst using MultiField
sbrdar Sep 12, 2023
961bef8
clean up memory leaks of Atlas (with Willem)
sbrdar Sep 14, 2023
dc9b919
add Atlas tracing (with Willem)
sbrdar Sep 14, 2023
4349235
ensure OMP stays activates after Atlas and its dependencies
sbrdar Sep 14, 2023
acc7299
cleanup
sbrdar Sep 14, 2023
4b1ab64
make compile with Atlas
sbrdar Sep 21, 2023
0b8e593
Increase output verbosity in Actions to debug OpenMP
reuterbal Sep 22, 2023
27771ef
Disable atlas for single-precision builds
reuterbal Sep 22, 2023
0e6568c
Enable OpenMP by default and add bundle option to switch off
reuterbal Sep 22, 2023
484d58c
Remove prec_flag from verify-targets.sh
reuterbal Sep 22, 2023
74a3848
Rename to cloudsc-c-cuda to avoid ecbuild option name clash
reuterbal Sep 22, 2023
6d86b95
Use latest releases for ecbuild/eckit/fckit/atlas
reuterbal Sep 22, 2023
6527bab
Fix CUDA options in bundle
reuterbal Sep 22, 2023
6780b0e
Fix compilation with atlas 0.34.0
wdeconinck Sep 22, 2023
32be522
Use project-specific CUDA option
reuterbal Sep 22, 2023
692a98c
Remove obsolete CMake workaround
reuterbal Sep 22, 2023
9931f88
Fix binary names for CUDA variants in verify-targets.sh
reuterbal Sep 25, 2023
bba1dc3
Fix NVHPC builds
reuterbal Sep 25, 2023
83785c7
make serialbox work in the Atlas implementation
sbrdar Sep 26, 2023
261a577
support single precision in expand_atlas_mod
sbrdar Sep 26, 2023
ebe5902
add single precision tests for Atlas
sbrdar Sep 26, 2023
74c753b
fixed for single precision in Atlas structures
sbrdar Sep 26, 2023
4f56faa
fixed for single precision in Atlas structures
sbrdar Sep 26, 2023
ea6d374
support single precision in expand_atlas_mod
sbrdar Sep 26, 2023
3199964
make atlas batching with MultiField work for SerialBox
sbrdar Sep 26, 2023
69501b7
ensure correct datatype in MultiField for the single precision
sbrdar Sep 26, 2023
71f6b32
Disable MPI autodiscovery for NVHPC@Github runners
reuterbal Sep 27, 2023
ee502b5
another attempt at fixing SerialBox for Atlas structure
sbrdar Sep 27, 2023
0051b48
fix SerialBox with Atlas implementation - SBox does not like too many…
sbrdar Sep 27, 2023
d61e252
Disable MPI with NVHPC on Github (became default ON due to Atlas defa…
reuterbal Sep 27, 2023
f453604
Test different CUDA runtime export
reuterbal Sep 28, 2023
dab193c
Do not fail on free-disk-space
reuterbal Sep 28, 2023
d6a8d5e
Do not run GPU/CUDA variants in CI
reuterbal Sep 29, 2023
3eeb926
Loki: Update to pure list-based routine/dimension config entries
mlange05 Nov 20, 2023
cbef64e
Loki: Add custom transformation configs for SCC-CUF components
mlange05 Nov 20, 2023
fe77fb6
Experimenting with NVHPC build configuration
reuterbal Oct 4, 2023
0a8f41c
Merge pull request #54 from ecmwf-ifs/nab_atlas_structures
reuterbal Dec 4, 2023
e3b8876
improving cmake usage for HIP version, minor changes and refactoring
MichaelSt98 Dec 4, 2023
7a617c7
removing multi-threaded HIP test and adding relevant HIP ctests for a…
MichaelSt98 Dec 5, 2023
22fc989
Merge pull request #59 from ecmwf-ifs/nams_lumi_hip
reuterbal Dec 5, 2023
cef2017
Enabling usage of HDF5 for C-style variants (in addition to serialbox…
MichaelSt98 Dec 5, 2023
ff83239
add arch files for Lumi cray GPU cce 16.0.1
MichaelSt98 Dec 11, 2023
25bb527
adding col/s as metric for HIP variants
MichaelSt98 Dec 12, 2023
a471d1c
Introducing SYCL implementations/variants (SCC, SCC-HOIST, SCC-K-CACH…
MichaelSt98 Dec 12, 2023
3d1a5f4
Merge pull request #61 from ecmwf-ifs/naml-loki-config-update
reuterbal Dec 19, 2023
6986911
Fixed description and added SYCL to CMakeLists.txt
MichaelSt98 Jan 15, 2024
6321262
Updating/fixing lumi cray-gpu arch/toolchain file for cce 16
MichaelSt98 Jan 16, 2024
b62101c
adding col/s as metric for CUDA variants
MichaelSt98 Jan 16, 2024
50bcf3f
fix load_state for SYCL variant(s)
MichaelSt98 Jan 17, 2024
e615fdf
remove unused 'out_stream' from SYCL variants (which improves the per…
MichaelSt98 Jan 17, 2024
82df8d3
add missing copyright header cloudsc_sycl/load_state.cpp
MichaelSt98 Jan 17, 2024
aa802cc
add missing copyright header cloudsc_hip/load_state.cpp
MichaelSt98 Jan 17, 2024
d51c83e
fix arch/env file for pragma-based offload and usage without serialbo…
MichaelSt98 Jan 18, 2024
3c5776f
update arch/eurohpc/lumi/cray-gpu/16.0.1/env.sh
MichaelSt98 Jan 18, 2024
22a11a8
SYCL: Add SYCL env/toolchain for custom DPCPP install with CUDA
mlange05 Jan 18, 2024
54f7eea
Merge pull request #63 from ecmwf-ifs/nams_paper
reuterbal Jan 18, 2024
0196a0a
SYCL: Add a quick README entry for the SCYL-specific env on AC
mlange05 Jan 18, 2024
140c815
Merge branch 'develop' into nab_atlas_MultiField
sbrdar Jan 22, 2024
7f901fd
use correct Atlas branch for MultiField
sbrdar Jan 23, 2024
bf6495f
NPROMA is not called from FunctionSpace anymore, use %SHAPE(1) instead
sbrdar Jan 23, 2024
5bbd42e
the correct Atlas branch
sbrdar Jan 23, 2024
ac90e14
SYCL: Drop unnecessary optimisation flags
mlange05 Jan 24, 2024
ed0ced0
Merge pull request #68 from ecmwf-ifs/naml_nams_sycl
mlange05 Jan 24, 2024
734b7ce
SYCL CMake integration changes
MichaelSt98 Jan 24, 2024
62dd862
Remove redundant flags in intel-sycl toolchain
MichaelSt98 Jan 30, 2024
b6be083
remove irrelevant ECBUILD intel-sycl flags/switches
MichaelSt98 Jan 30, 2024
04ed5bf
Remove irrelevant ECBUILD LINKER flags
MichaelSt98 Jan 30, 2024
3deee2c
Loki F2C transpilation, use 'loki_transform' instead of 'loki_transfo…
MichaelSt98 Jan 31, 2024
bca971f
Regression tested without packed storage on new FIELD_API
awnawab Sep 6, 2023
395793a
Switched to FIELD_XX_PTR containers for RDONLY and RWONLY fields
awnawab Sep 12, 2023
ae1b903
FIELD_API fixes for single-precision
awnawab Nov 23, 2023
ec8145b
Re-enabled CLOUDSC_PACKED_STORAGE option
awnawab Sep 13, 2023
28ea447
Update README with link to open-source FIELD_API
awnawab Feb 2, 2024
b14db4e
Set ENABLE_SINGLE_PRECISION=OFF as a global option
awnawab Feb 5, 2024
39d26be
Don't use FCKIT provided fypp to build FIELD_API
awnawab Feb 5, 2024
9516da3
Use -acc=gpu to build offloaded variants in CI
awnawab Feb 5, 2024
d66b5f5
Don't test CUDA variants built with nvhpc in CI
awnawab Feb 5, 2024
78f8a49
Merge pull request #64 from ecmwf-ifs/nams_sycl
reuterbal Feb 7, 2024
995cadb
beautifying: fix alignment of the printed table for CUDA variants
MichaelSt98 Feb 7, 2024
75b3911
Merge pull request #67 from ecmwf-ifs/nams_cuda_update
reuterbal Feb 7, 2024
6961e75
Merge pull request #70 from ecmwf-ifs/naan-update-field_api
reuterbal Feb 7, 2024
b42c36f
1) docu on CLOUDSC_ATLAS_MULTIFIELD; 2) code cleanup (tnx Balthasar)
sbrdar Feb 7, 2024
60825ea
Merge pull request #60 from ecmwf-ifs/nab_atlas_MultiField
reuterbal Feb 7, 2024
26af1da
Merge pull request #69 from ecmwf-ifs/nams_f2c_via_convert
reuterbal Feb 9, 2024
2959ac7
Fixing CMake integration for HDF5 for C variant
MichaelSt98 Feb 9, 2024
cb7ddd9
Always include C variant in 'expected_targets', since this variant do…
MichaelSt98 Feb 9, 2024
84b8fe4
C variant load_state via HDF5: removed some leftover commented code l…
MichaelSt98 Feb 9, 2024
4bbe68e
Merge pull request #62 from ecmwf-ifs/nams_hdf5_c
reuterbal Feb 9, 2024
ef723a4
Remove stack_mod
reuterbal Jan 31, 2024
0efd082
Replace deprecated loki_transform_convert macro and add config for ne…
reuterbal Jan 31, 2024
4beb57d
Remove xmod generation mechanism
reuterbal Feb 7, 2024
270417b
Update yoecldp.xmod
reuterbal Feb 13, 2024
fabd845
Build CUDA variants with HDF5 (in addition to Serialbox)
MichaelSt98 Feb 13, 2024
f729c65
CUDA load and validate: use index arithmetic instead of pointer hack
MichaelSt98 Feb 13, 2024
f675436
Build SYCL variants with HDF5 (in addition to Serialbox)
MichaelSt98 Feb 13, 2024
ef04bd2
Build HIP variants with HDF5 (in addition to Serialbox)
MichaelSt98 Feb 13, 2024
f5abe8a
CUDA validate: remove unused local variables
MichaelSt98 Feb 13, 2024
e7e614c
Provide consistent CPP definition to loki_transform
reuterbal Feb 19, 2024
4b1a186
Specify HIP arch for LUMI toolchains
reuterbal Feb 20, 2024
d95b193
Inspect hdf5 module instead of loading it to overcome Cray module non…
reuterbal Feb 20, 2024
1528699
Fix OpenMP on Cray 14.0.2 in LUMI
reuterbal Feb 20, 2024
99bb032
Merge pull request #72 from ecmwf-ifs/nams_low_level_gpu_hdf5_arch-fi…
MichaelSt98 Feb 20, 2024
dcaeba1
Merge pull request #71 from ecmwf-ifs/nams_low_level_gpu_hdf5
reuterbal Feb 21, 2024
1f1d221
Overwrite frontend for header modules
reuterbal Feb 28, 2024
f05ceac
Add semantic for negative thread count
antoine-morvan Mar 19, 2024
c79a56c
(Doc) Update readme
antoine-morvan Mar 19, 2024
cb45ce8
Loki: Adjust CUDA-speific loki config file to Loki v0.2.0
mlange05 Mar 21, 2024
b4102ed
Fix support for OpenMP-less build
antoine-morvan Mar 21, 2024
0776f88
Merge pull request #75 from ecmwf-ifs/naml-nabr-fixes-for-the-new-sch…
reuterbal Mar 21, 2024
4e8ada0
Merge pull request #73 from antoine-morvan/am/omp_num_thread_update
reuterbal Mar 21, 2024
1577e2d
Merge pull request #74 from ecmwf-ifs/nabr-fixes-for-the-new-scheduler
reuterbal Mar 22, 2024
1feb230
Update Version of actions to remove node.js warnings
reuterbal Mar 22, 2024
33dac54
Remove ctest log archiving as artifact
reuterbal Mar 22, 2024
1c8db6c
Merge pull request #76 from ecmwf-ifs/nabr-update-actions
reuterbal Mar 22, 2024
4ccf5d3
Update loki version to 0.2.0 and field_api to 0.3.0
reuterbal Mar 22, 2024
e87bc97
Merge pull request #77 from ecmwf-ifs/nabr-version-bump
reuterbal Mar 22, 2024
f485cb0
Add new authors
reuterbal Mar 22, 2024
b2b2a88
Update version to 1.5.0
reuterbal Mar 22, 2024
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
Binary file removed .github/scripts/.verify-targets.sh.swp
Binary file not shown.
3 changes: 2 additions & 1 deletion .github/scripts/bootstrap-nvhpc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
set -euo pipefail
set -x

nvhpc_version=21.9
# Set nvhpc version to default value if unset
: "${nvhpc_version:=21.9}"

# Use Atlas' nvhpc installation script
wget https://raw.githubusercontent.com/ecmwf/atlas/develop/tools/install-nvhpc.sh
Expand Down
54 changes: 0 additions & 54 deletions .github/scripts/run-targets.sh

This file was deleted.

58 changes: 27 additions & 31 deletions .github/scripts/verify-targets.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,49 +8,57 @@ exit_code=0
# Build the list of targets
#

targets=(dwarf-P-cloudMicrophysics-IFSScheme dwarf-cloudsc-fortran)
targets=(dwarf-P-cloudMicrophysics-IFSScheme dwarf-cloudsc-fortran dwarf-cloudsc-c)

if [[ "$io_library_flag" == "--with-serialbox" ]]
if [[ "$build_flags" == *"--with-gpu"* ]]
then
targets+=(dwarf-cloudsc-c)
fi

if [[ "$gpu_flag" == "--with-gpu" ]]
then
targets+=(dwarf-cloudsc-gpu-scc dwarf-cloudsc-gpu-scc-hoist dwarf-cloudsc-gpu-omp-scc-hoist)
if [[ "$claw_flag" == "--with-claw" ]]
targets+=(dwarf-cloudsc-gpu-scc dwarf-cloudsc-gpu-scc-hoist dwarf-cloudsc-gpu-scc-k-caching)
targets+=(dwarf-cloudsc-gpu-omp-scc-hoist)
if [[ "$build_flags" == *"--with-claw"* ]]
then
targets+=(dwarf-cloudsc-gpu-claw)
fi
if [[ "$cuda_flag" == "--with-cuda" ]]
if [[ "$build_flags" == *"--with-cuda"* ]]
then
targets+=(dwarf-cloudsc-gpu-scc-cuf dwarf-cloudsc-gpu-scc-cuf-k-caching)
targets+=(dwarf-cloudsc-gpu-scc-field)
fi
if [[ "$cuda_flag" == "--with-cuda" && "$io_library_flag" == "--with-serialbox" ]]
then
targets+=(dwarf-cloudsc-cuda dwarf-cloudsc-cuda-hoist dwarf-cloudsc-cuda-k-caching)
targets+=(dwarf-cloudsc-c-cuda dwarf-cloudsc-c-cuda-hoist dwarf-cloudsc-c-cuda-k-caching)
fi
fi

if [[ "$loki_flag" == "--with-loki" ]]
if [[ "$build_flags" == *"--with-loki"* ]]
then
targets+=(dwarf-cloudsc-loki-idem dwarf-cloudsc-loki-sca)
targets+=(dwarf-cloudsc-loki-scc dwarf-cloudsc-loki-scc-hoist)
if [[ "$prec_flag" != "--single-precision" ]]
targets+=(dwarf-cloudsc-loki-idem-stack dwarf-cloudsc-loki-scc-stack)
if [[ "$build_flags" != *"--single-precision"* ]]
then
targets+=(dwarf-cloudsc-loki-c)
fi
if [[ "$claw_flag" == "--with-claw" ]]
if [[ "$build_flags" == *"--with-claw"* ]]
then
targets+=(dwarf-cloudsc-loki-claw-cpu dwarf-cloudsc-loki-claw-gpu)
fi
if [[ "$cuda_flag" == "--with-cuda" ]]
if [[ "$build_flags" == *"--with-cuda"* ]]
then
targets+=(dwarf-cloudsc-loki-scc-cuf-hoist dwarf-cloudsc-loki-scc-cuf-parametrise)
fi
fi

if [[ "$build_flags" == *"--with-atlas"* ]]
then
targets+=(dwarf-cloudsc-fortran-atlas)
fi

if [[ "$build_flags" == *"--cloudsc-fortran-pyiface=ON"* ]]
then
targets+=(cloudsc_pyiface.py)
fi

if [[ "$build_flags" == *"--cloudsc-python-f2py=ON"* ]]
then
targets+=(cloudsc_f2py.py)
fi

#
# Verify each target exists
#
Expand All @@ -65,16 +73,4 @@ do
fi
done

#
# Check there aren't any other binaries
#

if [[ ${#targets[@]} -lt $(ls build/bin | wc -l) ]]
then
exit_code=1
echo "::error::Additional targets found in build/bin"
echo "::error::Expected targets: ${targets[@]}"
echo "::error::Found targets: $(ls -1 build/bin | tr '\n' ' ')"
fi

exit $exit_code
134 changes: 91 additions & 43 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on:
jobs:
# This workflow contains a single job called "build"
build:
name: Test on ${{ matrix.arch }} ${{ matrix.io_library_flag }} ${{ matrix.mpi_flag }} ${{ matrix.prec_flag }} ${{ matrix.gpu_flag }} ${{ matrix.loki_flag }} ${{ matrix.claw_flag }}
name: ${{ matrix.arch }} ${{ matrix.io_library_flag }} ${{ matrix.build_flags }}

# The type of runner that the job will run on
runs-on: ubuntu-20.04
Expand All @@ -27,44 +27,75 @@ jobs:

matrix:

arch:
- github/ubuntu/gnu/9.4.0
arch: ['gnu/9.4.0'] # Default arch on Github is GNU 9.4.0 for now

io_library_flag: ['', '--with-serialbox'] # Switch between Serialbox and HDF5

mpi_flag: ['', '--with-mpi'] # Enable MPI-parallel build
build_flags:
- '' # Plain build without any options
- '--with-gpu --with-loki --with-atlas' # Enable Loki, Atlas, and GPU variants
- '--with-gpu --with-loki --with-atlas --with-mpi' # Enable Loki, Atlas, and GPU variants with MPI
- '--single-precision --with-gpu --with-loki --with-atlas --with-mpi' # Enable Loki, and GPU variants with MPI in a single-precision build

prec_flag: ['', '--single-precision'] # Switch single/double precision
pyiface_flag: [''] # Enable the pyiface variant

gpu_flag: ['', '--with-gpu'] # GPU-variants enabled
python_f2py_flag: [''] # Enable the f2py variant

cuda_flag: [''] # Enable CUDA variants

loki_flag: ['', '--with-loki'] # Loki source-to-source translation enabled

claw_flag: [''] # Flag to enable CLAW-generated variants
ctest_exclude_pattern: ['-scc-hoist-'] # Regex to disable CTest tests

include:
# Add pyiface build configuration for double precision, non-MPI, HDF5 only
- arch: gnu/9.4.0
io_library_flag: ''
build_flags: '--cloudsc-fortran-pyiface=ON --cloudsc-python-f2py=ON'

# Add nvhpc build configurations with serialbox and HDF5
- arch: github/ubuntu/nvhpc/21.9
- arch: nvhpc/21.9
nvhpc_version: 21.9
io_library_flag: ''
build_flags: '--with-gpu --with-loki --cmake="ENABLE_ACC=OFF"'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-cuda-' # GPU variants don't work on CPU runners, loki-c variant causes SIGFPE
- arch: nvhpc/21.9
nvhpc_version: 21.9
io_library_flag: ''
mpi_flag: ''
prec_flag: ''
gpu_flag: '--with-gpu'
cuda_flag: '--with-cuda'
loki_flag: '--with-loki'
- arch: github/ubuntu/nvhpc/21.9
build_flags: '--with-gpu --with-loki --with-cuda'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-cuda-' # GPU variants don't work on CPU runners, loki-c variant causes SIGFPE
- arch: nvhpc/21.9
nvhpc_version: 21.9
io_library_flag: ''
build_flags: '--single-precision --with-gpu --with-loki --with-cuda --with-atlas'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-cuda' # GPU variants don't work on CPU runners, loki-c variant causes SIGFPE
- arch: nvhpc/21.9
nvhpc_version: 21.9
io_library_flag: '--with-serialbox'
mpi_flag: ''
prec_flag: ''
gpu_flag: '--with-gpu'
cuda_flag: '--with-cuda'
loki_flag: '--with-loki'
build_flags: '--with-gpu --with-loki --with-cuda --with-atlas'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-cuda' # GPU variants don't work on CPU runners, loki-c variant causes SIGFPE

- arch: nvhpc/23.5
nvhpc_version: 23.5
io_library_flag: ''
build_flags: '--with-gpu --with-loki --cmake="ENABLE_ACC=OFF"'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-loki-sca|-cuda-' # GPU variants don't work on CPU runners, loki-c and loki-sca variant causes SIGFPE
- arch: nvhpc/23.5
nvhpc_version: 23.5
io_library_flag: ''
build_flags: '--with-gpu --with-loki --with-cuda'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-loki-sca|-cuda-' # GPU variants don't work on CPU runners, loki-c and loki-sca variant causes SIGFPE
- arch: nvhpc/23.5
nvhpc_version: 23.5
io_library_flag: ''
build_flags: '--single-precision --with-gpu --with-loki --with-cuda --with-atlas'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-loki-sca|-cuda' # GPU variants don't work on CPU runners, loki-c and loki-sca variant causes SIGFPE
- arch: nvhpc/23.5
nvhpc_version: 23.5
io_library_flag: '--with-serialbox'
build_flags: '--with-gpu --with-loki --with-cuda --with-atlas'
ctest_exclude_pattern: '-gpu-|-scc-|-loki-c|-loki-sca|-cuda' # GPU variants don't work on CPU runners, loki-c and loki-sca variant causes SIGFPE

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- uses: actions/checkout@v4

# Installs required packages
- name: Package installation
Expand All @@ -73,12 +104,33 @@ jobs:

# Install MPI
- name: Install MPI via Apt
if: contains( matrix.mpi_flag, 'with-mpi' )
if: contains( matrix.build_flags, 'with-mpi' )
run: sudo apt-get install libopenmpi-dev

# Free up disk space for nvhpc
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
if: contains( matrix.arch, 'nvhpc' )
continue-on-error: true
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false

# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true

# Install Compiler
- name: Install nvhpc
if: contains( matrix.arch, 'nvhpc' )
env:
nvhpc_version: ${{ matrix.nvhpc_version }}
run: .github/scripts/bootstrap-nvhpc.sh

# Install HDF5
Expand All @@ -88,7 +140,9 @@ jobs:

- name: Install HDF5 from source
if: contains( matrix.arch, 'nvhpc' ) && ! contains( matrix.io_library_flag, 'with-serialbox' )
run: source arch/${{ matrix.arch }}/env.sh && .github/scripts/install-hdf5.sh
run: |
source arch/github/ubuntu/${{ matrix.arch }}/env.sh
FC=pgf90 .github/scripts/install-hdf5.sh

# Install Boost
- name: Install Boost libraries
Expand All @@ -102,27 +156,21 @@ jobs:
# Build the targets
- name: Bundle build
run: |
./cloudsc-bundle build --retry-verbose \
--arch=arch/${{ matrix.arch }} ${{ matrix.prec_flag }} \
${{ matrix.mpi_flag }} ${{ matrix.io_library_flag }} ${{ matrix.gpu_flag }} \
${{ matrix.claw_flag}} ${{ matrix.loki_flag }} ${{ matrix.cuda_flag }}
./cloudsc-bundle build --verbose --retry-verbose \
--arch=arch/github/ubuntu/${{ matrix.arch }} \
${{ matrix.io_library_flag }} ${{ matrix.build_flags }}

# Verify targets exist
- name: Verify targets
env:
io_library_flag: ${{ matrix.io_library_flag }}
prec_flag: ${{ matrix.prec_flag }}
gpu_flag: ${{ matrix.gpu_flag }}
cuda_flag: ${{ matrix.cuda_flag }}
loki_flag: ${{ matrix.loki_flag }}
claw_flag: ${{ matrix.claw_flag }}
build_flags: ${{ matrix.build_flags }}
run: .github/scripts/verify-targets.sh

# Run double-precision targets
# (Mind the exclusions inside the script!)
- name: Run targets
env:
mpi_flag: ${{ matrix.mpi_flag }}
arch: ${{ matrix.arch }}
if: ${{ matrix.prec_flag == '' }}
run: .github/scripts/run-targets.sh
# Run ctest
- name: Run CTest
if: ${{ !( contains(matrix.build_flags, '--single-precision') || (contains(matrix.build_flags, '--with-cuda') && contains(matrix.arch, 'nvhpc')) ) }}
working-directory: ./build
run: |
source env.sh
ctest -O ctest.log --output-on-failure -E "${{ matrix.ctest_exclude_pattern }}"
3 changes: 3 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

- M. Ahlgrimm (ECMWF)
- P. Bechtold (ECMWF)
- S. Brdar (ECMWF)
- W. Deconinck (ECMWF)
- R. Forbes (ECMWF)
- C. Jakob (ECMWF)
Expand All @@ -12,7 +13,9 @@
- L. Lucido (Atos)
- O. Marsden (ECMWF)
- G. Mengaldo (ECMWF)
- A. Morvan (Atos)
- G. Mozdzynski (ECMWF)
- A. Nawab (ECMWF)
- Z. Piotrowski (ECMWF)
- B. Reuter (ECMWF)
- D. Salmond (ECMWF)
Expand Down
Loading