- Added
adaptfunction, allowing downstream packages to remove explicit dependency onAdaptpackage. PR 104.
- Replaced
MPIFileLoggerwithFileLoggerand added anOnlyRootLoggerlogger 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,
MPIFileLoggerandMPILoggerPR 100.
- Add device-flexible
@assertwas added PR 86.
- Bugfix:
cuda_syncwas missing in the extension and, as a result,ClimaComms.@cuda_syncwas 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.
ClimaCommsdoes no longer try to guess the correct compute device: the default is now CPU. To control which device to use, use theCLIMACOMMS_DEVICEenvironment variable.CUDAandMPIare now extensions inClimaComms. To useCUDA/MPI,CUDA.jl/MPI.jlhave to be loaded. A convenience macroClimaComms.@import_required_backendschecks what device/context could be used and conditionally loadsCUDA.jl/MPI.jl. It is recommended to changetoimport ClimaCommsThis has to be done before callingimport ClimaComms ClimaComms.@import_required_backends
ClimaComms.context().