Skip to content

Chmy.jl DocsFinite differences and staggered grids on CPUs and GPUs

A backend-agnostic toolkit for finite difference computations with task-based distributed memory parallelisation.

Chmy.jl

What is Chmy.jl?

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.

How to Install Chmy.jl?

To install Chmy.jl, one can simply add it using the Julia package manager by running the following command in the Julia REPL:

julia
julia> using Pkg

julia> Pkg.add("Chmy")

After the package is installed, one can load the package by using:

julia
julia> using Chmy

If you want to use the latest unreleased version of Chmy.jl, you can run the following command:

julia
julia> using Pkg

julia> Pkg.add(url="https://github.com/PTsolvers/Chmy.jl")

Select an Accelerator Backend

julia
using Chmy
using KernelAbstractions

backend = CPU()
arch = Arch(backend)
julia
using Chmy
using KernelAbstractions
using CUDA
backend = CUDABackend()
arch = Arch(backend)
julia
using Chmy
using KernelAbstractions
using AMDGPU
backend = ROCBackend()
arch = Arch(backend)
julia
using Chmy
using KernelAbstractions
using Metal
backend = MetalBackend()
arch = Arch(backend)

Funding

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.