Skip to content

Banded matrices + FFTs + GPUs for time-stepping in Julia #15

@dlfivefifty

Description

@dlfivefifty

Your name, department, and University

Sheehan Olver, Maths, Imperial

Name(s) and department(s) of anyone else relevant to this project

No response

Please write a brief description of the application area of project

Many differential equations any other problems in applied mathematics can be recast as banded matrices, with the Heat equation being the simplest example. Going beyond this, in ultrasound there is a need to model nonlocal equations (since tissue has memory) which requires the use of the FFT. This project will result in tested examples showing very fast simulations on the GPU for both classical time-evolution PDEs and Fractional Differential Equations.

Please describe the project.

The first part of the project is to make sure that banded matrices can be realised on the GPU by supporting GPU matrix backends (cf Cuda.jl and Metal.jl) in the Julia package BandedMatrices.jl. In theory, this should "just work" but in practice there will need to be thorough testing and bug fixes. If successful the project will produce well-tested examples of time-evolution PDEs for say the Heat equation and its nonlinear analogues.

The second part of the project is to support spectral methods by combining GPU support for FFTs with banded matrices on the GPU. If successful, this will allow for nonlocal equations involving the Fractional Laplacian, which come up in ultrasound.

Ideally the project will support both NVidia (via Cuda.jl) and Apple (via Metal.jl).

There is scope for future work here in higher-dimensional PDEs and inverse problems by combining with automatic differentiation.

What will be the outputs of this project?

The project will contribute examples to existing open-source packages like BandedMatrices.jl, and will also involve code contribution.

Which programming language(s) will this project use?

Julia

Links to any relevant existing software repositories, etc.

https://github.com/JuliaLinearAlgebra/BandedMatrices.jl
https://github.com/JuliaGPU/Metal.jl
https://github.com/JuliaGPU/CUDA.jl

Links to any relevant papers, blog posts, etc.

https://approximatelyfunctioning.blogspot.com/2018/12/banded-matrices-and-ordinary.html
https://arxiv.org/abs/2408.02541
https://www.cambridge.org/core/journals/acta-numerica/article/abs/fast-algorithms-using-orthogonal-polynomials/4FAD8C7C28EC20EE7583465C1A89AA3D

Make project public

  • I understand that this project proposal will be public

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions