1.3 KiB
1.3 KiB
gmgrid: Geometric multigrid on CPU (OpenMP)
Status on 2025-May-14
- The multigrid part is deactivated via
*#undef MGin main.cpp and so only a simple Jacobi iteration is performed as solver. make run- or
main.GCC_ levelswith number oflevelsin [0,7].
Data structures/implementation for GPU
- use data structures from cg_2:Framework for preconditioned solvers on GPU and CPU
- suggested: class vec from vdop_gpu.h
- suggested: class CRS_Matrix_GPU from crsmatrix_gpu.h
- use cuBLAS, cuSPARSE and more libraries whenever possible.
current code structure
- main.cpp
- binaryIO.cpp : reads CRS matrix and vector from files
- vdop.cpp : some basic vector operations on CPU, also in utils.h
- geom.cpp : reads the coarse geometry, performes mesh handling and includes mesh hierarchy
- getmatrix.cpp : compressed row storage matrix and its generation from a 2D mesh
- cuthill_mckee_ordering.cpp : graph reordering to minimize the bandwidth
- jacsolve.cpp : Jacobi solver/smoother for a linear system of equations with CRS matrix; multigrid solver
- elements.cpp : more general elements - experimental. Try with el_main.cpp
- generateCRS.cpp : Reads mesh files and generates files output with stiffness matrix (Laplace) and right hand side.