Dear Barry Smith Thanks to you, I knew the difference between MATAIJ and MATDENSE.
However, I still have some problems. There is no problem when I run with a single core. But, MatGetFactor error occurs when using multi-core. Could you give me some advice? The error message is [0]PETSC ERROR: --------------------- Error Message -------------------------------------------------------------- [0]PETSC ERROR: See https://petsc.org/release/overview/linear_solve_table/ for possible LU and Cholesky solvers [0]PETSC ERROR: MatSolverType petsc does not support matrix type mpidense [0]PETSC ERROR: See https://petsc.org/release/faq/ for trouble shooting. [0]PETSC ERROR: Petsc Release Version 3.18.5, unknown [0]PETSC ERROR: ./app on a arch-linux-c-opt named ubuntu by ksl Fri May 5 00:35:23 2023 [0]PETSC ERROR: Configure options --download-mpich --with-debugging=0 COPTFLAGS="-O3 -march=native -mtune=native" CXXOPTFLAGS="-O3 -march=native -mtune=native" FOPTFLAGS="-O3 -march=native -mtune=native" --download-mumps --download-scalapack --download-parmetis --download-metis --download-parmetis --download-hpddm --download-slepc [0]PETSC ERROR: #1 MatGetFactor() at /home/ksl/petsc/src/mat/interface/matrix.c:4757 [0]PETSC ERROR: #2 main() at /home/ksl/Downloads/coding_test/coding/a1.c:66 [0]PETSC ERROR: No PETSc Option Table entries [0]PETSC ERROR: ----------------End of Error Message -------send entire error message to [email protected] application called MPI_Abort(MPI_COMM_SELF, 92) - process 0 My code is below: int main(int argc, char** args) { Mat A, E, A_temp, A_fac; int n = 15; PetscInitialize(&argc, &args, NULL, NULL); PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size)); PetscCall(MatCreate(PETSC_COMM_WORLD, &A)); PetscCall(MatSetType(A,MATDENSE)); PetscCall(MatSetSizes(A, PETSC_DECIDE, PETSC_DECIDE, n, n)); PetscCall(MatSetFromOptions(A)); PetscCall(MatSetUp(A)); // Insert values double val; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j){ val = 2.0; } else{ val = 1.0; } PetscCall(MatSetValue(A, i, j, val, INSERT_VALUES)); } } PetscCall(MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY)); PetscCall(MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY)); // Make Identity matrix PetscCall(MatCreate(PETSC_COMM_WORLD, &E)); PetscCall(MatSetType(E,MATDENSE)); PetscCall(MatSetSizes(E, PETSC_DECIDE, PETSC_DECIDE, n, n)); PetscCall(MatSetFromOptions(E)); PetscCall(MatSetUp(E)); PetscCall(MatShift(E,1.0)); PetscCall(MatAssemblyBegin(E, MAT_FINAL_ASSEMBLY)); PetscCall(MatAssemblyEnd(E, MAT_FINAL_ASSEMBLY)); PetscCall(MatDuplicate(A, MAT_DO_NOT_COPY_VALUES, &A_temp)); PetscCall(MatGetFactor(A, MATSOLVERPETSC, MAT_FACTOR_LU, &A_fac)); IS isr, isc; MatFactorInfo info; MatGetOrdering(A, MATORDERINGNATURAL, &isr, &isc); PetscCall(MatLUFactorSymbolic(A_fac, A, isr, isc, &info)); PetscCall(MatLUFactorNumeric(A_fac, A, &info)); MatMatSolve(A_fac, E, A_temp); PetscCall(MatView(A_temp, PETSC_VIEWER_STDOUT_WORLD)); MatDestroy(&A); MatDestroy(&A_temp); MatDestroy(&A_fac); MatDestroy(&E); PetscCall(PetscFinalize()); } Best regards Seung Lee Kwon 2023년 5월 4일 (목) 오후 10:19, Barry Smith <[email protected]>님이 작성: > > The code in ex125.c contains > > PetscCall(MatCreate(PETSC_COMM_WORLD, &C)); > PetscCall(MatSetOptionsPrefix(C, "rhs_")); > PetscCall(MatSetSizes(C, m, PETSC_DECIDE, PETSC_DECIDE, nrhs)); > PetscCall(MatSetType(C, MATDENSE)); > PetscCall(MatSetFromOptions(C)); > PetscCall(MatSetUp(C)); > > This dense parallel matrix is suitable for passing to MatMatSolve() as the > right-hand side matrix. Note it is created with PETSC_COMM_WORLD and its > type is set to be MATDENSE. > > You may need to make a sample code by stripping out all the excess code > in ex125.c to just create an MATAIJ and MATDENSE and solves with > MatMatSolve() to determine why you code does not work. > > > > On May 4, 2023, at 3:20 AM, 권승리 / 학생 / 항공우주공학과 <[email protected]> wrote: > > Dear Barry Smith > > Thank you for your reply. > > I've already installed MUMPS. > > And I checked the example you said (ex125.c), I don't understand why the > RHS matrix becomes the SeqDense matrix. > > Could you explain in more detail? > > Best regards > Seung Lee Kwon > > 2023년 5월 4일 (목) 오후 12:08, Barry Smith <[email protected]>님이 작성: > >> >> You can configure with MUMPS ./configure --download-mumps >> --download-scalapack --download-ptscotch --download-metis >> --download-parmetis >> >> And then use MatMatSolve() as in src/mat/tests/ex125.c with parallel >> MatMatSolve() using MUMPS as the solver. >> >> Barry >> >> >> On May 3, 2023, at 10:29 PM, 권승리 / 학생 / 항공우주공학과 <[email protected]> >> wrote: >> >> Dear developers >> >> Thank you for your explanation. >> >> But I should use the MatCreateSeqDense because I want to use the >> MatMatSolve that B matrix must be a SeqDense matrix. >> >> Using MatMatSolve is an inevitable part of my code. >> >> Could you give me a comment to avoid this error? >> >> Best, >> >> Seung Lee Kwon >> >> 2023년 5월 3일 (수) 오후 7:30, Matthew Knepley <[email protected]>님이 작성: >> >>> On Wed, May 3, 2023 at 6:05 AM 권승리 / 학생 / 항공우주공학과 <[email protected]> >>> wrote: >>> >>>> Dear developers >>>> >>>> I'm trying to use parallel computing and I ran the command 'mpirun -np >>>> 4 ./app' >>>> >>>> In this case, there are two problems. >>>> >>>> *First,* I encountered error message >>>> /// >>>> [0]PETSC ERROR: [1]PETSC ERROR: --------------------- Error Message >>>> -------------------------------------------------------------- >>>> [1]PETSC ERROR: Invalid argument >>>> [1]PETSC ERROR: Comm must be of size 1 >>>> /// >>>> The code on the error position is >>>> MatCreateSeqDense(PETSC_COMM_SELF, nns, ns, NULL, &Kns)); >>>> >>> >>> 1) "Seq" means sequential, that is "not parallel". >>> >>> 2) This line should still be fine since PETSC_COMM_SELF is a serial >>> communicator >>> >>> 3) You should be checking the error code for each call, maybe using the >>> CHKERRQ() macro >>> >>> 4) Please always send the entire error message, not a snippet >>> >>> THanks >>> >>> Matt >>> >>> >>>> Could "MatCreateSeqDense" not be used in parallel computing? >>>> >>>> *Second*, the same error message is repeated as many times as the >>>> number of cores. >>>> if I use command -np 4, then the error message is repeated 4 times. >>>> Could you recommend some advice related to this? >>>> >>>> Best, >>>> Seung Lee Kwon >>>> >>>> -- >>>> Seung Lee Kwon, Ph.D.Candidate >>>> Aerospace Structures and Materials Laboratory >>>> Department of Mechanical and Aerospace Engineering >>>> Seoul National University >>>> Building 300 Rm 503, Gwanak-ro 1, Gwanak-gu, Seoul, South Korea, 08826 >>>> E-mail : [email protected] >>>> Office : +82-2-880-7389 >>>> C. P : +82-10-4695-1062 >>>> >>> >>> >>> -- >>> What most experimenters take for granted before they begin their >>> experiments is infinitely more interesting than any results to which their >>> experiments lead. >>> -- Norbert Wiener >>> >>> https://www.cse.buffalo.edu/~knepley/ >>> <http://www.cse.buffalo.edu/~knepley/> >>> >> >> >> -- >> Seung Lee Kwon, Ph.D.Candidate >> Aerospace Structures and Materials Laboratory >> Department of Mechanical and Aerospace Engineering >> Seoul National University >> Building 300 Rm 503, Gwanak-ro 1, Gwanak-gu, Seoul, South Korea, 08826 >> E-mail : [email protected] >> Office : +82-2-880-7389 >> C. P : +82-10-4695-1062 >> >> >> > > -- > Seung Lee Kwon, Ph.D.Candidate > Aerospace Structures and Materials Laboratory > Department of Mechanical and Aerospace Engineering > Seoul National University > Building 300 Rm 503, Gwanak-ro 1, Gwanak-gu, Seoul, South Korea, 08826 > E-mail : [email protected] > Office : +82-2-880-7389 > C. P : +82-10-4695-1062 > > > -- Seung Lee Kwon, Ph.D.Candidate Aerospace Structures and Materials Laboratory Department of Mechanical and Aerospace Engineering Seoul National University Building 300 Rm 503, Gwanak-ro 1, Gwanak-gu, Seoul, South Korea, 08826 E-mail : [email protected] Office : +82-2-880-7389 C. P : +82-10-4695-1062
