Skip to content

GPU Support

IncompressibleNavierStokes supports various array types. The desired backend only has to be passed to the Setup function:

julia
using CUDA
setup = Setup(; kwargs..., backend = CUDABackend())

All operators have been made are backend agnostic by using KernelAbstractions.jl. Even if a GPU is not available, the operators are multithreaded if Julia is started with multiple threads (e.g. julia -t 4)

  • This has been tested with CUDA compatible GPUs.

  • This has not been tested with other GPU interfaces, such as

    If they start supporting sparse matrices and fast Fourier transforms they could also be used.

psolver_direct on CUDA

To use a specialized linear solver for CUDA, make sure to install and using CUDA.jl and CUDSS.jl. Then psolver_direct will automatically use the CUDSS solver.