[petsc-users] using superlu_dist
Matt Funk
mafunk at nmsu.edu
Mon Sep 20 12:24:20 CDT 2010
Hi Barry,
thanks for the advice. I will do what you suggested.
matt
On Friday, September 10, 2010, Barry Smith wrote:
> Just always use SUPERLU_DIST for any number of processes including 1. It
> is much faster and uses less memory the superlu.
>
> Barry
>
> You should only use superlu when the matrix is super ill-conditioned like
> condition number 10^10 and superlu_dist don't work
>
> On Sep 10, 2010, at 4:43 PM, Matt Funk wrote:
> > HI Barry,
> >
> > thanks for the heads up, however, i am not using the command line.
> > So what i did is when i set my pc i do:
> >
> > if(m_preCondType == "LU_SUPERLU") {
> >
> > m_ierr = PCSetType(m_pc, PCLU);
> > if (numProc() > 1) {
> >
> > PCFactorSetMatSolverPackage(m_pc,MAT_SOLVER_SUPERLU_DIST);
> >
> > }
> >
> > else {
> >
> > PCFactorSetMatSolverPackage(m_pc,MAT_SOLVER_SUPERLU);
> >
> > }
> >
> > }
> >
> > and the matrix type is set to MATAIJ. Anyway, but i still need to
> > distingiush between superlu and superlu_dist it seems as specifying
> > superlu for a parallel run throws an error.
> >
> > I suppose that when invoking this from the command line there is some
> > code that test to see whether this is a serial/parallel run and makes
> > similar calls as i did above?
> >
> >
> > thank you
> > matt
> >
> > On Friday, September 10, 2010, Barry Smith wrote:
> >> This has all changed in the 3.0.0 release. It is much simpler now.
> >>
> >> Any ways you don't need that crap for differences between 1 or more
> >>
> >> processors. Just use MATAIJ always and use -pc_type lu
> >> -pc_factor_mat_solver_package superlu_dist with 3.0.0 or later
> >>
> >> Barry
> >>
> >> On Sep 10, 2010, at 3:59 PM, Matt Funk wrote:
> >>> Hi,
> >>>
> >>> i was wondering on how i need to set the matrix type when i want to use
> >>> the superlu_dist solver.
> >>>
> >>> Right now what i have is:
> >>> if (m_preCondType == "LU_SUPERLU") {
> >>>
> >>> if (numProc() > 1)
> >>>
> >>> m_ierr = MatSetType(m_globalMatrix, MATAIJ);
> >>>
> >>> else {
> >>>
> >>> m_ierr = MatSetType(m_globalMatrix, MATSEQAIJ);
> >>>
> >>> }
> >>>
> >>> }
> >>>
> >>> This i believe is according to the table in the petsc users manual
> >>> (p.82). Anyway, things work ok on 1 processor. However, when i try 8
> >>> processors (i.e. it tells me:
> >>> [3]PETSC ERROR: --------------------- Error Message
> >>> ------------------------------------
> >>> [3]PETSC ERROR: No support for this operation for this object type!
> >>> [3]PETSC ERROR: Matrix format mpiaij does not have a built-in PETSc
> >>> direct solver!
> >>>
> >>>
> >>> So i guess i should not use the MATAIJ matrix format? I also tried the
> >>> MATMPIAIJ format, but got the same problem.
> >>>
> >>> So how is one supposed to use it? Obviously i am doing something wrong.
> >>> Any help is appreciated.
> >>>
> >>> thanks
> >>> matt
More information about the petsc-users
mailing list