From 0425e358a93e3df180e109da13d1c846f016d85b Mon Sep 17 00:00:00 2001 From: Satish Balay <balay@mcs.anl.gov> Date: Tue, 12 Jun 2018 10:54:06 +0530 Subject: [PATCH] superlu_dist: update to version v5.4.0 diff --git a/config/BuildSystem/config/packages/SuperLU_DIST.py b/config/BuildSystem/config/packages/SuperLU_DIST.py index cd5bd83..d8d4604 100644 --- config/BuildSystem/config/packages/SuperLU_DIST.py +++ config/BuildSystem/config/packages/SuperLU_DIST.py @@ -4,7 +4,7 @@ import os class Configure(config.package.CMakePackage): def __init__(self, framework): config.package.CMakePackage.__init__(self, framework) - self.gitcommit = 'v5.3.0' + self.gitcommit = 'v5.4.0' self.download = ['git://https://github.com/xiaoyeli/superlu_dist','https://github.com/xiaoyeli/superlu_dist/archive/'+self.gitcommit+'.tar.gz'] self.downloaddirnames = ['SuperLU_DIST','superlu_dist'] self.functions = ['set_default_options_dist'] diff --git a/src/ksp/ksp/examples/tests/ex33.c b/src/ksp/ksp/examples/tests/ex33.c index e788c31..c5f8a35 100644 --- src/ksp/ksp/examples/tests/ex33.c +++ src/ksp/ksp/examples/tests/ex33.c @@ -149,13 +149,13 @@ int main(int argc,char **args) test: suffix: superlu_dist - args: -sigma 2.0 -pc_factor_mat_solver_type superlu_dist -mat_superlu_dist_rowperm NATURAL + args: -sigma 2.0 -pc_factor_mat_solver_type superlu_dist -mat_superlu_dist_rowperm NOROWPERM requires: superlu_dist !complex output_file: output/ex33.out test: suffix: superlu_dist_2 - args: -sigma 2.0 -pc_factor_mat_solver_type superlu_dist -mat_superlu_dist_rowperm NATURAL + args: -sigma 2.0 -pc_factor_mat_solver_type superlu_dist -mat_superlu_dist_rowperm NOROWPERM requires: superlu_dist !complex nsize: 3 output_file: output/ex33.out diff --git a/src/mat/examples/tests/ex125.c b/src/mat/examples/tests/ex125.c index 7600c5a..f78f41e 100644 --- src/mat/examples/tests/ex125.c +++ src/mat/examples/tests/ex125.c @@ -278,13 +278,13 @@ int main(int argc,char **args) test: suffix: superlu_dist requires: datafilespath !complex double !define(PETSC_USE_64BIT_INDICES) superlu_dist - args: -f ${DATAFILESPATH}/matrices/small -mat_solver_type 1 -mat_superlu_dist_rowperm NATURAL + args: -f ${DATAFILESPATH}/matrices/small -mat_solver_type 1 -mat_superlu_dist_rowperm NOROWPERM test: suffix: superlu_dist_2 nsize: 3 requires: datafilespath !complex double !define(PETSC_USE_64BIT_INDICES) superlu_dist - args: -f ${DATAFILESPATH}/matrices/small -mat_solver_type 1 -mat_superlu_dist_rowperm NATURAL + args: -f ${DATAFILESPATH}/matrices/small -mat_solver_type 1 -mat_superlu_dist_rowperm NOROWPERM output_file: output/ex125_superlu_dist.out test: diff --git a/src/mat/examples/tests/ex127.c b/src/mat/examples/tests/ex127.c index fd82322..fa1a088 100644 --- src/mat/examples/tests/ex127.c +++ src/mat/examples/tests/ex127.c @@ -203,6 +203,6 @@ int main(int argc,char **args) suffix: superlu_dist nsize: 3 requires: superlu_dist - args: -test_choleskyfactor -mat_superlu_dist_rowperm NATURAL + args: -test_choleskyfactor -mat_superlu_dist_rowperm NOROWPERM output_file: output/ex127_superlu_dist.out TEST*/ diff --git a/src/mat/impls/aij/mpi/superlu_dist/superlu_dist.c b/src/mat/impls/aij/mpi/superlu_dist/superlu_dist.c index 94cca91..98932d1 100644 --- src/mat/impls/aij/mpi/superlu_dist/superlu_dist.c +++ src/mat/impls/aij/mpi/superlu_dist/superlu_dist.c @@ -563,7 +563,23 @@ static PetscErrorCode MatView_Info_SuperLU_DIST(Mat A,PetscViewer viewer) ierr = PetscViewerASCIIPrintf(viewer," Replace tiny pivots %s \n",PetscBools[options.ReplaceTinyPivot != NO]);CHKERRQ(ierr); ierr = PetscViewerASCIIPrintf(viewer," Use iterative refinement %s \n",PetscBools[options.IterRefine == SLU_DOUBLE]);CHKERRQ(ierr); ierr = PetscViewerASCIIPrintf(viewer," Processors in row %d col partition %d \n",lu->nprow,lu->npcol);CHKERRQ(ierr); - ierr = PetscViewerASCIIPrintf(viewer," Row permutation %s \n",(options.RowPerm == NOROWPERM) ? "NATURAL" : "LargeDiag");CHKERRQ(ierr); + + switch (options.RowPerm) { + case NOROWPERM: + ierr = PetscViewerASCIIPrintf(viewer," Row permutation NOROWPERM\n");CHKERRQ(ierr); + break; + case LargeDiag_MC64: + ierr = PetscViewerASCIIPrintf(viewer," Row permutation LargeDiag_MC64\n");CHKERRQ(ierr); + break; + case LargeDiag_AWPM: + ierr = PetscViewerASCIIPrintf(viewer," Row permutation LargeDiag_AWPM\n");CHKERRQ(ierr); + break; + case MY_PERMR: + ierr = PetscViewerASCIIPrintf(viewer," Row permutation MY_PERMR\n");CHKERRQ(ierr); + break; + default: + SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_WRONG,"Unknown column permutation"); + } switch (options.ColPerm) { case NATURAL: @@ -626,7 +642,7 @@ static PetscErrorCode MatGetFactor_aij_superlu_dist(Mat A,MatFactorType ftype,Ma superlu_dist_options_t options; PetscBool flg; const char *colperm[] = {"NATURAL","MMD_AT_PLUS_A","MMD_ATA","METIS_AT_PLUS_A","PARMETIS"}; - const char *rowperm[] = {"LargeDiag","NATURAL"}; + const char *rowperm[] = {"NOROWPERM","LargeDiag_MC64","LargeDiag_AWPM","MY_PERMR"}; const char *factPattern[] = {"SamePattern","SamePattern_SameRowPerm","DOFACT"}; PetscBool set; @@ -660,7 +676,7 @@ static PetscErrorCode MatGetFactor_aij_superlu_dist(Mat A,MatFactorType ftype,Ma options.Equil = YES; options.ParSymbFact = NO; options.ColPerm = METIS_AT_PLUS_A; - options.RowPerm = LargeDiag; + options.RowPerm = LargeDiag_MC64; options.ReplaceTinyPivot = YES; options.IterRefine = DOUBLE; options.Trans = NOTRANS; @@ -694,15 +710,23 @@ static PetscErrorCode MatGetFactor_aij_superlu_dist(Mat A,MatFactorType ftype,Ma ierr = PetscOptionsBool("-mat_superlu_dist_equil","Equilibrate matrix","None",options.Equil ? PETSC_TRUE : PETSC_FALSE,&flg,&set);CHKERRQ(ierr); if (set && !flg) options.Equil = NO; - ierr = PetscOptionsEList("-mat_superlu_dist_rowperm","Row permutation","None",rowperm,2,rowperm[0],&indx,&flg);CHKERRQ(ierr); + ierr = PetscOptionsEList("-mat_superlu_dist_rowperm","Row permutation","None",rowperm,4,rowperm[1],&indx,&flg);CHKERRQ(ierr); if (flg) { switch (indx) { case 0: - options.RowPerm = LargeDiag; + options.RowPerm = NOROWPERM; break; case 1: - options.RowPerm = NOROWPERM; + options.RowPerm = LargeDiag_MC64; + break; + case 2: + options.RowPerm = LargeDiag_AWPM; break; + case 3: + options.RowPerm = MY_PERMR; + break; + default: + SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_WRONG,"Unknown row permutation"); } } @@ -815,7 +839,7 @@ PETSC_EXTERN PetscErrorCode MatSolverTypeRegister_SuperLU_DIST(void) . -mat_superlu_dist_c <n> - number of columns in processor partition . -mat_superlu_dist_matinput <0,1> - matrix input mode; 0=global, 1=distributed . -mat_superlu_dist_equil - equilibrate the matrix -. -mat_superlu_dist_rowperm <LargeDiag,NATURAL> - row permutation +. -mat_superlu_dist_rowperm <NOROWPERM,LargeDiag_MC64,LargeDiag_AWPM,MY_PERMR> - row permutation . -mat_superlu_dist_colperm <MMD_AT_PLUS_A,MMD_ATA,NATURAL> - column permutation . -mat_superlu_dist_replacetinypivot - replace tiny pivots . -mat_superlu_dist_fact <SamePattern> - (choose one of) SamePattern SamePattern_SameRowPerm DOFACT -- 2.10.5