From 550cf314942d10ee165c10c015de5a43159eb031 Mon Sep 17 00:00:00 2001 From: Simone Bna <s.bn@cineca.it> Date: Thu, 19 Nov 2020 20:00:56 +0100 Subject: [PATCH] ENH: modified some APIs in AmgXSolver --- src/AmgXSolver.H | 47 +++++++++++++++++++++++++++++++++++------------ src/AmgXSolver.cu | 23 +++++++++++++++-------- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/AmgXSolver.H b/src/AmgXSolver.H index bd6b69c..43ecb92 100644 --- a/src/AmgXSolver.H +++ b/src/AmgXSolver.H @@ -97,8 +97,12 @@ class AmgXSolver * \param modeStr [in] A string; target mode of AmgX (e.g., dDDI). * \param cfgFile [in] A string; the path to AmgX configuration file. */ - AmgXSolver(const MPI_Comm &comm, - const std::string &modeStr, const std::string &cfgFile); + AmgXSolver + ( + const MPI_Comm &comm, + const std::string &modeStr, + const std::string &cfgFile + ); /** \brief Destructor. */ ~AmgXSolver(); @@ -111,8 +115,12 @@ class AmgXSolver * * \return PetscErrorCode. */ - PetscErrorCode initialize(const MPI_Comm &comm, - const std::string &modeStr, const std::string &cfgFile); + PetscErrorCode initialize + ( + const MPI_Comm &comm, + const std::string &modeStr, + const std::string &cfgFile + ); /** \brief Finalize this instance. * @@ -140,14 +148,16 @@ class AmgXSolver * * \return PetscErrorCode. */ - PetscErrorCode setA( - const PetscInt nGlobalRows, + PetscErrorCode setOperator + ( const PetscInt nLocalRows, + const PetscInt nGlobalRows, const PetscInt nLocalNz, const PetscInt* rowOffsets, const PetscInt* colIndicesGlobal, const PetscScalar* values, - const PetscInt* partData); + const PetscInt* partData + ); /** \brief Re-sets up an existing AmgX matrix. * @@ -160,10 +170,12 @@ class AmgXSolver * * \return PetscErrorCode. */ - PetscErrorCode updateA( + PetscErrorCode updateOperator + ( const PetscInt nLocalRows, const PetscInt nLocalNz, - const PetscScalar* values); + const PetscScalar* values + ); /** \brief Solve the linear system. * @@ -180,7 +192,11 @@ class AmgXSolver * * \return PetscErrorCode. */ - PetscErrorCode solve(Vec &p, Vec &b, const int nRows); + PetscErrorCode solve + ( + Vec &p, + Vec &b + ); /** \brief Get the number of iterations of the last solving. * @@ -188,7 +204,10 @@ class AmgXSolver * * \return PetscErrorCode. */ - PetscErrorCode getIters(int &iter); + PetscErrorCode getIters + ( + int &iter + ); /** \brief Get the residual at a specific iteration during the last solving. * @@ -197,7 +216,11 @@ class AmgXSolver * * \return PetscErrorCode. */ - PetscErrorCode getResidual(const int &iter, double &res); + PetscErrorCode getResidual + ( + const int &iter, + double &res + ); private: diff --git a/src/AmgXSolver.cu b/src/AmgXSolver.cu index c92ee06..99717df 100644 --- a/src/AmgXSolver.cu +++ b/src/AmgXSolver.cu @@ -214,15 +214,17 @@ PetscErrorCode AmgXSolver::finalize() } -/* \implements AmgXSolver::setA */ -PetscErrorCode AmgXSolver::setA( - const PetscInt nGlobalRows, +/* \implements AmgXSolver::setOperator */ +PetscErrorCode AmgXSolver::setOperator +( const PetscInt nLocalRows, + const PetscInt nGlobalRows, const PetscInt nLocalNz, const PetscInt* rowOffsets, const PetscInt* colIndicesGlobal, const PetscScalar* values, - const PetscInt* partData) + const PetscInt* partData +) { PetscFunctionBeginUser; @@ -268,11 +270,13 @@ PetscErrorCode AmgXSolver::setA( } -/* \implements AmgXSolver::updateA */ -PetscErrorCode AmgXSolver::updateA( +/* \implements AmgXSolver::updateOperator */ +PetscErrorCode AmgXSolver::updateOperator +( const PetscInt nLocalRows, const PetscInt nLocalNz, - const PetscScalar* values) + const PetscScalar* values +) { PetscFunctionBeginUser; @@ -307,7 +311,7 @@ PetscErrorCode AmgXSolver::updateA( /* \implements AmgXSolver::solve */ -PetscErrorCode AmgXSolver::solve(Vec& p, Vec &b, const int nRows) +PetscErrorCode AmgXSolver::solve(Vec& p, Vec &b) { PetscFunctionBeginUser; @@ -320,6 +324,9 @@ PetscErrorCode AmgXSolver::solve(Vec& p, Vec &b, const int nRows) ierr = VecGetArray(p, &pscalar); CHK; ierr = VecGetArray(b, &bscalar); CHK; + PetscInt nRows; + ierr = VecGetLocalSize(p, &nRows); CHK; + if (consolidationStatus == ConsolidationStatus::Device) { CHECK( -- GitLab