Need help adding a new solver to the petsc library

Barry Smith bsmith at mcs.anl.gov
Fri Nov 21 11:50:39 CST 2008


-mat_type aij

aij defaults to seqaij on one process so just us -mat_type mpiaij

    Barry

On Nov 21, 2008, at 11:43 AM, Xavier Lacoste wrote:

> Barry Smith a écrit :
>>
>> On Nov 21, 2008, at 10:23 AM, Xavier Lacoste wrote:
>>
>>> Barry Smith a écrit :
>>>>
>>>> On Nov 21, 2008, at 8:05 AM, Xavier Lacoste wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I have some new questions.
>>>>>
>>>>> I haded a MPIAIJ to CSC conversion routine.
>>>>
>>>>  There is no such beast, computing it is painful.
>>>>
>>>>  What we do for solvers that need it is to just pass the CSR  
>>>> version and then instead of doing a solve in the package we do
>>>> a transpose solve from the package.
>>> Ok, I'll try this, do you have an example of solver using CSC with  
>>> this method ?
>>
>>   This is how we handle Superlu; see src/mat/impls/aij/seq/superlu
>>
>>>
>>>>>
>>>>> I managed to run ex19 on the solver PaStiX like it is done for  
>>>>> mumps but my matrix must be badly constructed (PaStiX doesn't  
>>>>> succeed in computing  the solution withe the given problem...).
>>>>> Is there a way to dump the MPIAIJ matrix into a matrixmarket  
>>>>> format so that I can check what's wrong with the CSC built ?
>>>>
>>>>  No we don't have any matrix output to matrixmarket format.
>>>>
>>>> Does the code run correctly on 1 process?
>>>>
>>> No, because I only implemented the mpiaij subclass, not the seqaij  
>>> one, I get an error when launchin on one processor, but I can run  
>>> the code on two, I just have numerical issues.
>>
>>   You can create and use mpiaij matrices on one process so you  
>> should not "get an error when launchin on one processor,".
>>
>>   NEVER EVER EVER EVER EVER try to debug a 2 process  case when you  
>> don't know if a 1 process case runs!  Make sure it runs
>> properly on one process first.
>>
>>   Barry
>>
> Hello again,
>
> this is the error I got when using ex19 with 1 processor (I copied  
> arguments from mumps runex19_9 example)
>
> mpirun -n 1 ./ex19 -dmmg_nlevels 4 -snes_monitor_short -pc_type  
> redundant -mat_type aij -redundant_pc_factor_mat_solver_package  
> pastix -pc_redundant_number 1
> lid velocity = 0.0016, prandtl # = 1, grashof # = 1
> Plip
> Plup
> 0 SNES Function norm 0.0406612
> [0]PETSC ERROR: --------------------- Error Message  
> ------------------------------------
> [0]PETSC ERROR: No support for this operation for this object type!
> [0]PETSC ERROR: Matrix format seqaij does not have a solver pastix.  
> Perhaps you must config/configure.py with --download-pastix!
>
>
> Thanks for taking time to help me
>
> XL.
>>>
>>>
>>>>
>>>>>
>>>>>
>>>>> Second question, in the petsc-dev/config/PETSc/packages/ 
>>>>> Scotch.py I wrote, do I have a way to check if libz.a is  
>>>>> present, so that I can decide if I compile with - 
>>>>> DCOMMON_FILE_COMPRESS_GZ and -lz ? (libz.a requirement is  
>>>>> depending of an optional feature of Scotch...)
>>>>
>>>> In your PaStiX.py you can add something like
>>>>   if self.libraries.add('-lz','function_in_library'):
>>>>     self.addDefine('HAVE_WHAT_YOU_WANT_STRINGH',1)
>>> Ok, thanks I'll try this
>>>
>>> XL.
>>>>
>>>> Barry
>>>>
>>>>
>>>>>
>>>>>
>>>>> thanks,
>>>>>
>>>>> XL.
>>>>>
>>>>>
>>>>> Barry Smith a écrit :
>>>>>>
>>>>>>   Take a look at, for example, MatGetFactor_MPIAIJ_mumps (in  
>>>>>> src/mat/impls/aij/mpi/mumps)
>>>>>> you will need to create one for pastix and then take a look at  
>>>>>> MatCreate_MPIAIJ and see
>>>>>> how the mumps function is registered, you will need to register  
>>>>>> in the same way.
>>>>>>
>>>>>>  Barry
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Nov 7, 2008, at 10:07 AM, Xavier Lacoste wrote:
>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> I'm still working on adding PaStiX into PETSc.
>>>>>>>
>>>>>>> I managed to pass the configure and "make all test" steps.
>>>>>>> (./config/configure.py -with-scotch=1 -download- 
>>>>>>> scotch=ifneeded -with-pastix -download-pastix=ifneeded )
>>>>>>>
>>>>>>>
>>>>>>> Here are the modification I made on petsc-dev version  
>>>>>>> 12911:0e70d56474b2
>>>>>>>
>>>>>>> http://dept-info.labri.fr/~lacoste/petsc/adding_pastix_12911_0e70d56474b2.patch
>>>>>>>
>>>>>>> - I added PaStiX.py package
>>>>>>> - I modified Scotch.py package to use last version
>>>>>>> - I modified partition/impls/scotch.c so that it compiles (it  
>>>>>>> would not work in the current state)
>>>>>>> - I had aij/mpi/pastix/pastix.c file to make an interface to  
>>>>>>> pastix.
>>>>>>> - I tried to use example 19 with pastix, like it is done with  
>>>>>>> mumps but pastix solver is not found :
>>>>>>>
>>>>>>> http://dept-info.labri.fr/~lacoste/petsc/error_log
>>>>>>>
>>>>>>> Now, I have to know how to tell petsc it has a new solver  
>>>>>>> implementing mpiaij.
>>>>>>>
>>>>>>> How can I do that ?
>>>>>>>
>>>>>>> After that I should be able to test if my implementation of  
>>>>>>> mpiaij matrix is working or not.
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> XL.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Barry Smith a écrit :
>>>>>>>>
>>>>>>>> Please send your $PETSC_ARCH/conf/configure.log and  
>>>>>>>> $PETSC_ARCH/conf/make.log to petsc-maint at mcs.anl.gov (not to  
>>>>>>>> this email address)
>>>>>>>> and we'll take a look.  Also send your modified Scotch.py file.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>>
>>>>>>>> Barry
>>>>>>>>
>>>>>>>> On Nov 3, 2008, at 10:45 AM, Xavier Lacoste wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> I want to add the solver PaStiX (https://gforge.inria.fr/projects/pastix/ 
>>>>>>>>> ) to the PETSc library.
>>>>>>>>> I Check-outed the last hg version of PETSc and started  
>>>>>>>>> adding my PaStiX.py script, based on MUMPS one, in petsc-dev/ 
>>>>>>>>> config/PETSc/packages/ .
>>>>>>>>> I modified first Scotch.py wich wasn't updated because  
>>>>>>>>> PaStiX needs Scotch.
>>>>>>>>>
>>>>>>>>> My problem is that I couldn't succed in configuring PETSCc  
>>>>>>>>> with "--with-pastix=1 etc." because i don't know how to say  
>>>>>>>>> PETSc that PaStiX needs the "-L/Scotch/dir -lscotch etc."
>>>>>>>>>
>>>>>>>>> I have the setupDependencies :
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> def setupDependencies(self, framework):
>>>>>>>>> PETSc.package.Package.setupDependencies(self, framework)
>>>>>>>>> self.mpi        =  
>>>>>>>>> framework.require('config.packages.MPI',self)
>>>>>>>>> self.blasLapack =  
>>>>>>>>> framework.require('config.packages.BlasLapack',self)
>>>>>>>>> self.scotch     =  
>>>>>>>>> framework.require('PETSc.packages.Scotch',self)
>>>>>>>>> self.deps       = [self.mpi,self.blasLapack,self.scotch]
>>>>>>>>> return
>>>>>>>>>
>>>>>>>>> But it didn't helped, the -L/scotchdir/lib is still missing...
>>>>>>>>>
>>>>>>>>> > Executing: mpicc  -o conftest    -g  conftest.o  -Wl,- 
>>>>>>>>> rpath,/home/xl/pastix/lib -L/home/xl/pastix/lib -lpastix - 
>>>>>>>>> lpthread -lscotch -llapack -lblas *
>>>>>>>>> > -L/usr/lib/gcc/i486-linux-gnu/4.3.2 -L/lib -ldl -lgcc_s - 
>>>>>>>>> lgfortranbegin -lgfortran -lm -L/usr/lib/gcc/i486-linux-gnu/ 
>>>>>>>>> 4.3.2 -L/usr/lib/gcc/i486-linux-gnu
>>>>>>>>> > -L/usr/lib/gcc/i486-linux-gnu/4.3.2 -L/usr/lib/gcc/i486- 
>>>>>>>>> linux-gnu -L/usr/lib/gcc/i486-linux-gnu/4.3.2 -L/usr/lib/gcc/ 
>>>>>>>>> i486-linux-gnu
>>>>>>>>> > -L/usr/lib/gcc/i486-linux-gnu/4.3.2 -L/lib -L/lib -lm -L/ 
>>>>>>>>> usr/lib/gcc/i486-linux-gnu/4.3.2 -L/usr/lib/gcc/i486-linux- 
>>>>>>>>> gnu/4.3.2 -L/lib -ldl -lgcc_s -ldl
>>>>>>>>> > sh:
>>>>>>>>> > Possible ERROR while running linker: /usr/bin/ld: cannot  
>>>>>>>>> find -lscotch
>>>>>>>>>
>>>>>>>>> Hope i'm on the good Mailing list for this kind of questions.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>> XL.
>>>>>>>>> PaStiX team, INRIA-Bordeaux-Sud-Ouest, France.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the petsc-dev mailing list