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.