From c795cc66bff203c33c46ff1bdc8796f9c67c74e6 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Mon, 27 Jul 2009 10:48:18 +0000 Subject: [PATCH] Work on faster petsc assembling. --- AMDiS/src/ParallelDomainBase.cc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/AMDiS/src/ParallelDomainBase.cc b/AMDiS/src/ParallelDomainBase.cc index f288d800..5a2668fd 100644 --- a/AMDiS/src/ParallelDomainBase.cc +++ b/AMDiS/src/ParallelDomainBase.cc @@ -306,14 +306,11 @@ namespace AMDiS { clock_t first = clock(); - // MatCreate(PETSC_COMM_WORLD, &petscMatrix); - // MatSetSizes(petscMatrix, nRankRows, nRankRows, nOverallRows, nOverallRows); - //MatSetType(petscMatrix, MATAIJ); - using mtl::tag::major; using mtl::tag::nz; using mtl::begin; using mtl::end; namespace traits= mtl::traits; typedef DOFMatrix::base_matrix_type Matrix; + int nnz = 0; int d_nnz[nRankRows]; for (int i = 0; i < nRankRows; i++) d_nnz[i] = 0; @@ -344,10 +341,12 @@ namespace AMDiS { } } - INFO(info, 8)("t1 petsc matrix needed %.5f seconds\n", TIME_USED(first, clock())); + for (int i = 0; i < nRankRows; i++) + if (d_nnz[i] > nnz) + nnz = d_nnz[i]; MatCreateMPIAIJ(PETSC_COMM_WORLD, nRankRows, nRankRows, nOverallRows, nOverallRows, - 0, d_nnz, 0, NULL, &petscMatrix); + nnz, NULL, nnz / 10, NULL, &petscMatrix); using mtl::tag::major; using mtl::tag::nz; using mtl::begin; using mtl::end; namespace traits= mtl::traits; @@ -453,7 +452,7 @@ namespace AMDiS { KSPSetOperators(ksp, petscMatrix, petscMatrix, DIFFERENT_NONZERO_PATTERN); KSPGetPC(ksp, &pc); // PCSetType(pc, PCNONE); - PCSetType(pc, PCJACOBI); + PCSetType(pc, PCSOR); KSPSetTolerances(ksp, 1.e-7, PETSC_DEFAULT, PETSC_DEFAULT, PETSC_DEFAULT); KSPSetType(ksp, KSPBCGS); //KSPSetType(ksp, KSPCG); -- GitLab