The algorithm is a (relatively) simple Jacobi solver for the Poisson equation,
over the domain
Discretising over a regular, rectangular grid with constant grid spacing
where
where
I want to be able to answer the general questions:
- What performance do I give up by using a higher level language than C?
- How easy is it to optimise modern languages like Python, Julia and Zig?
- What cost do "zero-cost" abstractions really have in C++?
General questions about scientific programs:
- Should I compile my constants into the code or pass them as data?
- Is it worth testing using just 32-bit floats?
- Is it worth experimenting with
-ffast-math
?
Along with questions specific to grid-based codes:
- What effect does using ghost points have on performance?
- Should I use static or dynamic arrays?
- Are built-in array structures just as performant as raw c-like arrays?
- C
- C++
- OpenMP
- OpenACC
- CUDA
- Python
- CuPy
- DaCe
- Jax
- Jax + JMP
- Numba GPU
- Numba CPU
- Julia
- Julia GPU
- Julia ParallelStencils.jl
- Fortran
- Rust
- Zig
- WebGPU
- WebGL