Repo for the NCI-NVIDIA hackaton on June 2023.
The objective is to implement sum-factorization techniques for GPU architectures, within the Gridap.jl ecosystem.
Sum-factorization takes advantage of the tensorial nature of Finite-Element(FE) shape-functions and quadratures to reduce the number of operations required to evaluate FE integrals, by formulating the integrals as a series of successive tensor contractions with dense small matrices.
This allows for fast and computationally-intensive matrix-free implementations of FE methods. These implementations compete with the traditional sparse matrix-vector product methods, which have traditionally been memory-bound. The advantages of sum-factorization techniques become very noticeable for high-order FE schemes.
Compile the profiles by running from the project directory the following command
julia --project=. profiling/profile.jl
Visualize the profiles by interactively running profiling/viz_profile.jl
. You can choose between flamegraph vizualisation or PProf.
Run the benchmarks by running from the project directory the following command
julia --project=. -O3 --check-bounds=no profiling/benchmark.jl
or from GADI submit the job benchmark.sh
.
The results will get stored in data/benchmarks
, and can be visualized with the script profiling/viz_benchmark.jl
.