PETSc algebraic solvers can now use pthreads on Vec and Mat operations. This sometimes provides an alternative to the all MPI approach.
We recommend working with petsc-dev if you want to explore this feature.
- Installation of PETSc with threads
Quick summary of usage in petsc-dev:
- Threads can be used via native pthread lockfree implementation or OpenMP.
The three important run-time options for using threads are:
- -threadcomm_nthreads <nthreads>: Sets the number of threads
- -threadcomm_affinities <list_of_affinities>: Sets the core affinities of threads
- -threadcomm_type <nothread,pthread,openmp>: Threading model (OpenMP, pthread, nothread)
- Run with -help to see the avialable options with threads.
- A few tutorial examples are located at $PETSC_DIR/src/sys/threadcomm/examples/tutorials
- We could use your help in further developing PETSc with threads; see petsc-dev