CalculiX-solver trace of pthread version

The following figure shows a trace of the pthread version of the CalculiX-solver kernel. It solves a non-symmetric linear system using GMRES. This version of the kernel represents the original behavior found in the CalculiX application.

calculix-solver-trace-pattern-pthread
ScoreP trace of the CalculiX-solver kernel (pthread version).

The different subroutines of the GMRES solver are highlighted by different colors:

  • matvec (orange)
  • dorth (pink)
  • dlrcal (green)
  • msolve (yellow)
  • daxpy (dark blue)
  • dcopy (light blue)
  • dpigmr (red)

The size of the Krylov subspace for GMRES is 10. After a sequence of 10 matvec and dorth the GMRES procedure gets restarted. The calls to dpigmr mark the end of such a sequence as the minimal residual vector in the Krylov subspace is computed at this point.

Furthermore, the associated pattern “Load imbalance due to computational complexity unknown a priori” can be recognized in this trace. Each thread solves an independent system using GMRES. While the solution converges after 31 or 32 iterations for most of the threads, there is one thread that requires 46 iterations until convergence. This leads to a load imbalance as all the other are idling in this time.

The load-balance efficiency for this version is 66%.