-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
When can we expect the tutorials - I'd like to follow along with a CFD implementation #634
Comments
Hello @klausbu, thank you for your interest in Ginkgo.
If I missed something or have more questions, feel free to ask. |
About other matrix operations needed:
This is the entire calculation to scale the residual which is used for the overall management of the convergence of a simulation: For matrix Ax = b, residual is defined as res = b - Ax double x_average = reduction(x)/x_size create a vector v_x_average with all values set to x_average vector wA = Ax vector pA = Ax_average double normFactor = reduction(ABS(wA - pA) + ABS(b - pA)) + SMALL where SMALL is a very small value to avoid divisions by 0 The scaled residual is then: double scaled_residual = reduction(ABS(b - wA))/normFactor |
We are currently working on a
This type of reduction can currently be implemented with
We do have SpMV multiplication with each matrix format we have ( Currently, you would need to write the filling of the If you want, I can write an example-code that does what you want, and you can use that as a starting point. |
In general, we are currently discussing on how to improve our tutorials and wiki-page, so newcomers have an easy to follow path learning about the Ginkgo interface and capabilities. |
@thomas: Maybe just list the available matrix solvers, LA functions and work in progress (WIP) features somewhere. The main obstacle is usually to provide/load the raw data (matrix in COO or CSR format, vectors and process(or) boundaries) efficiently, so some practical example would be helpful. I assume here a MPI based multi GPU implementation. For a CFD implementation (using Ginkgo as external matrix solver library for a "deep" on GPU implementation i.e. flow + matrix solver), the following features would be great (MPI parallelism, PCG with parallel on GPU IC (multi coloured or tiled approach compatible with a scotch domain decomposition), an AMG solver and preconditioner, for some industries an orthomin solver, all for pressure / symmetric matrices. For asymmetric matrices (velocity etc.) PBiCGStab or better PBiCGStab(L) as the latter version tends to converge even smoother would be great (IDR, GMRES, PBiCG etc. are usually less stable and less smooth so one can loose the last bid of lift and drag calculation accuracy). |
@klausbu All currently usable solvers can be found here: https://ginkgo-project.github.io/ginkgo/doc/develop/group__solvers.html We do not have a MPI implementation of Ginkgo, we focus on node level parallelism (using the CPU and GPU efficiently). For feature requests, I will create an Issue, so we can keep track of it. |
Please add multi-GPU support to the feature request too. In my experience, OpenMP/shared memory implementations on the CPU are a lot slower than MPI/distributed memory implementations but you're the experts, high node level performance with multiple GPUs is what I am looking for. |
I just added that (Issue #639). @tcojean is actually currently exploring this possibility. However, it is possible that it does not improve performance over a single GPU because pretty much all of our operations are memory-bound. Copying data from one to the other GPU has significantly less bandwidth than the memory bandwidth in one GPU, so getting good performance from it is not trivial. |
That's why distributed memory implementations using MPI or GASPI are commonly used, as a single GPU is just not powerful enough and doesn't offer sufficient memory to solve real-world-problems, not to mention when using mixed precision iterative refinement. |
Hello,
I am interested in the "Tutorial: Building a Poisson Solver" tutorial and I'd like to follow along with an implementation in a CFD code.
The following aspects would be of particular importance:
klausbu
The text was updated successfully, but these errors were encountered: