- Bugfix:
cuda_sync
was missing in the extension and, as a result,ClimaComms.@cuda_sync
was not actually synchronizing. We've also removed the abstract fallback, so that we instead method-error if we pass a cuda device when the cuda extension does not exist.
- We added a device-agnostic
allowscalar(f, ::AbstractDevice, args...; kwargs...)
to further assist in making CUDA an extension.
- Macros have been refactored to hopefully fix some code loading issues.
-
ClimaComms
does no longer try to guess the correct compute device: the default is now CPU. To control which device to use, use theCLIMACOMMS_DEVICE
environment variable. -
CUDA
andMPI
are now extensions inClimaComms
. To useCUDA
/MPI
,CUDA.jl
/MPI.jl
have to be loaded. A convenience macroClimaComms.@import_required_backends
checks what device/context could be used and conditionally loadsCUDA.jl
/MPI.jl
. It is recommended to changetoimport ClimaComms
This has to be done before callingimport ClimaComms ClimaComms.@import_required_backends
ClimaComms.context()
.