- Replaced
MPIFileLogger
withFileLogger
and added anOnlyRootLogger
logger that silences non-root processes PR 104.
-
Support for adapt was added, so that users can convert between CPU and GPU devices, and contexts containing cpu and gpu devices PR 103.
-
New MPI logging tools were added,
MPIFileLogger
andMPILogger
PR 100.
- Add device-flexible
@assert
was added PR 86.
- 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()
.