Backend Agnostic
Effortlessly execute your code on CPUs and GPUs with KernelAbstractions.jl.
A backend-agnostic toolkit for finite difference computations with task-based distributed memory parallelisation.
Chmy.jl (pronounce tsh-mee) is a backend-agnostic toolkit for finite difference computations on multi-dimensional computational staggered grids. Chmy.jl features task-based distributed memory parallelisation capabilities and provides a comprehensive framework for handling complex computational tasks on structured grids, leveraging both single and multi-device architectures. It seamlessly integrates with Julia's powerful parallel and concurrent programming capabilities, making it suitable for a wide range of scientific and engineering applications.
To install Chmy.jl, one can simply add it using the Julia package manager by running the following command in the Julia REPL:
julia> using Pkg
julia> Pkg.add("Chmy")
After the package is installed, one can load the package by using:
julia> using Chmy
If you want to use the latest unreleased version of Chmy.jl, you can run the following command:
julia> using Pkg
julia> Pkg.add(url="https://github.com/PTsolvers/Chmy.jl")
using Chmy
using KernelAbstractions
backend = CPU()
arch = Arch(backend)
using Chmy
using KernelAbstractions
using CUDA
backend = CUDABackend()
arch = Arch(backend)
using Chmy
using KernelAbstractions
using AMDGPU
backend = ROCBackend()
arch = Arch(backend)
using Chmy
using KernelAbstractions
using Metal
backend = MetalBackend()
arch = Arch(backend)
The development of this package is supported by the GPU4GEO and ∂GPU4GEO PASC projects. More information about the GPU4GEO project can be found on the GPU4GEO website.