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

New Atlas-based variant using BlockStructured FunctionSpace #54

Merged
merged 47 commits into from
Dec 4, 2023
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
fd76949
add Atlas data structures to be used in a separate exe: cloudsc-fortr…
sbrdar Mar 15, 2023
d943e7f
using Atlas block view on FieldSet
sbrdar May 8, 2023
d24f63f
FieldSet is not thread-safe -> unpack fields prior the cloudsc loop (…
sbrdar May 9, 2023
64c3f8a
use FieldSet instead of array of Field, this time in a thread same ma…
sbrdar May 15, 2023
f9a1657
switch to index to acces a field from a FieldSet rather than using st…
sbrdar May 21, 2023
fa4941a
merge from develop
sbrdar May 31, 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
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
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
71f6b32
Disable MPI autodiscovery for NVHPC@Github runners
reuterbal 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
fe77fb6
Experimenting with NVHPC build configuration
reuterbal Oct 4, 2023
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
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ ecbuild_add_option( FEATURE FIELD_API
DEFAULT ON )

ecbuild_find_package( NAME loki )
ecbuild_find_package( NAME atlas )
wdeconinck marked this conversation as resolved.
Show resolved Hide resolved

# Add option for single-precision builds
ecbuild_add_option( FEATURE SINGLE_PRECISION
Expand Down
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
add_subdirectory(prototype1)
add_subdirectory(common)
add_subdirectory(cloudsc_fortran)
add_subdirectory(cloudsc_fortran_atlas)
add_subdirectory(cloudsc_pyiface)
add_subdirectory(cloudsc_python)
add_subdirectory(cloudsc_c)
Expand Down
77 changes: 77 additions & 0 deletions src/cloudsc_fortran_atlas/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# (C) Copyright 1988- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.

# Define this dwarf variant as an ECBuild feature
ecbuild_add_option( FEATURE CLOUDSC_FORTRAN_ATLAS
DESCRIPTION "Build the Fortran version CLOUDSC using Atlas and Serialbox" DEFAULT ON
CONDITION atlas_FOUND AND (Serialbox_FOUND OR HDF5_FOUND)
)

if( HAVE_CLOUDSC_FORTRAN_ATLAS )
ecbuild_add_executable(
TARGET dwarf-cloudsc-fortran-atlas
SOURCES
cloudsc_global_atlas_state_mod.F90
expand_atlas_mod.F90
validate_atlas_mod.F90
cloudsc_driver_mod.F90
cloudsc.F90
dwarf_cloudsc_atlas.F90
LIBS
cloudsc-common-lib
atlas_f
DEFINITIONS ${CLOUDSC_DEFINITIONS}
)
endif()
sbrdar marked this conversation as resolved.
Show resolved Hide resolved

# Create symlink for the input data
if( HAVE_SERIALBOX )
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
reuterbal marked this conversation as resolved.
Show resolved Hide resolved
${CMAKE_CURRENT_SOURCE_DIR}/../../data ${CMAKE_CURRENT_BINARY_DIR}/../../../data )
endif()

if( HAVE_HDF5 )
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
${CMAKE_CURRENT_SOURCE_DIR}/../../config-files/input.h5 ${CMAKE_CURRENT_BINARY_DIR}/../../../input.h5 )
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
${CMAKE_CURRENT_SOURCE_DIR}/../../config-files/reference.h5 ${CMAKE_CURRENT_BINARY_DIR}/../../../reference.h5 )
endif()

ecbuild_add_test(
TARGET dwarf-cloudsc-fortran-atlas-serial
COMMAND bin/dwarf-cloudsc-atlas-fortran
reuterbal marked this conversation as resolved.
Show resolved Hide resolved
ARGS 1 100 16
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../../..
OMP 1
)
ecbuild_add_test(
TARGET dwarf-cloudsc-fortran-atlas-omp
COMMAND bin/dwarf-cloudsc-fortran-atlas
ARGS 4 100 16
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../../..
OMP 4
CONDITION HAVE_OMP
)
ecbuild_add_test(
TARGET dwarf-cloudsc-fortran-atlas-mpi
COMMAND bin/dwarf-cloudsc-fortran-atlas
ARGS 1 100 16
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../../..
MPI 2
OMP 1
CONDITION HAVE_MPI
)
ecbuild_add_test(
TARGET dwarf-cloudsc-fortran-mpi-atlas-omp
COMMAND bin/dwarf-cloudsc-fortran-atlas
ARGS 4 100 16
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../../..
MPI 2
OMP 4
CONDITION HAVE_OMP AND HAVE_MPI
)
Loading