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 master (git branch) if you want to explore this feature.
- Installation of PETSc with threads
Quick summary of usage in petsc-master:
- 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 Developers site