Merge consolidation and transformation
This has merged consolidation and transformation, which freed us from issues limiting the number of cores that could be efficiently selected. Note we still face a context overhead penalty due to the number of ranks interacting with the GPU in order to maximise performance.
There are API changes that will require minor adjustments to the calls in PETSC4FOAM (a couple of lines removed).
AmgXSolver::solve(psi, source, A) -> AmgXSolver::solve(nrows, psi_raw, source_raw, A)
AmgXSolver::setOperator(nrowsLocal, nrowsGlobal, nnz, A, nullptr) -> AmgXSolver::setOperator(nrowsLocal, nrowsGlobal, nnz, A)
Also there will be an additional call to set up the communicator for the system.
AmgXSolver::initialiseMatrixComms(A);
Happy to take guidance on how this should be changed to match your expectations of style etc.