Hi,<br><br>The error seems to be trapped by MPICH2's assertions. Is there some way to propagate them to debuggers (gdb, whatever)?<br><br>Yep, I think I'll try SuperLU_dist again then.<br><br>Thanks for your advices!<br>
<br>Max<br><br><div class="gmail_quote">On Mon, Dec 13, 2010 at 11:00 PM, Hong Zhang <span dir="ltr"><<a href="mailto:hzhang@mcs.anl.gov">hzhang@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Max,<br>
Does superlu_dist crash?<br>
Spooles has been out of support from its developers for more than 10 years.<br>
For small testing problems, it can be faster.<br>
<br>
Mumps is a good and robust direct solver we usually recommend, but it<br>
requires f90.<br>
<font color="#888888"><br>
Hong<br>
</font><div><div></div><div class="h5"><br>
On Mon, Dec 13, 2010 at 8:34 AM, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br>
><br>
> The problem is not in PETSc. Run in the debugger and see exactly where this memcpy() overlap happens and if it can be fixed.<br>
><br>
> Barry<br>
><br>
><br>
> On Dec 13, 2010, at 4:30 AM, Max Ng wrote:<br>
><br>
>> Hi,<br>
>><br>
>> I am having a similar problem and I'm using PETSc 3.1-p6. I wish to use SPOOLES because I need to build on Windows with VC++ (and without a Fortran compiler). And in my tests somehow SPOOLES performs better than SuperLU.<br>
>><br>
>> My program runs correctly in mpiexec -n 1. When I try mpiexec -n 2, I got this error:<br>
>><br>
>> Assertion failed in file helper_fns.c at line 337: 0<br>
>> memcpy argument memory ranges overlap, dst_=0x972ef84 src_=0x972ef84 len_=4<br>
>><br>
>> internal ABORT - process 1<br>
>> Assertion failed in file helper_fns.c at line 337: 0<br>
>> memcpy argument memory ranges overlap, dst_=0x90c4018 src_=0x90c4018 len_=4<br>
>><br>
>> internal ABORT - process 0<br>
>> rank 1 in job 113 vm1_57881 caused collective abort of all ranks<br>
>> exit status of rank 1: killed by signal 9<br>
>><br>
>> Here is the source code:<br>
>><br>
>> // N = 40000, n = 20000, nnz = 9<br>
>> //<br>
>> MatCreate(comm, &mat);<br>
>> MatSetType(mat, MATAIJ);<br>
>> MatSetSizes(mat, n, n, N, N);<br>
>> MatSeqAIJSetPreallocation(mat, nnz, PETSC_NULL);<br>
>> MatMPIAIJSetPreallocation(mat, nnz, PETSC_NULL, nnz, PETSC_NULL);<br>
>><br>
>> // some code to fill the matrix values<br>
>> // ...<br>
>><br>
>> KSPCreate(comm, &ksp);<br>
>> KSPSetOperators(ksp, mat, mat, DIFFERENT_NONZERO_PATTERN);<br>
>> KSPSetType(ksp, KSPPREONLY);<br>
>><br>
>> KSPGetPC(ksp, &pc);<br>
>> PCSetType(pc, PCLU);<br>
>> PCFactorSetMatSolverPackage(pc, MAT_SOLVER_SPOOLES);<br>
>><br>
>> KSPSetUp(ksp);<br>
>><br>
>> It crashes at the KSPSetUp() statement.<br>
>><br>
>> Do you have any ideas? Thanks in advance!<br>
>><br>
>> Max Ng<br>
>><br>
>> On Dec 3, 2010, at 4:19 PM, Xiangdong Liang wrote:<br>
>><br>
>>> > Hi everyone,<br>
>>> ><br>
>>> > I am wondering how I can run the direct solver in parallel. I can run<br>
>>> > my program in a single processor with direct linear solver by<br>
>>> ><br>
>>> > ./foo.out -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package spooles<br>
>>> ><br>
>>> > However, when I try to run it with mpi:<br>
>>> ><br>
>>> > mpirun.openmpi -np 2 ./foo.out -ksp_type preonly -pc_type lu<br>
>>> > -pc_factor_mat_solver_package spooles<br>
>>> ><br>
>>> > I got error like this:<br>
>>> ><br>
>>> > [0]PETSC ERROR: --------------------- Error Message<br>
>>> > ------------------------------------<br>
>>> > [0]PETSC ERROR: No support for this operation for this object type!<br>
>>> > [0]PETSC ERROR: Matrix type mpiaij symbolic LU!<br>
>>> ><br>
>>> > [0]PETSC ERROR: Libraries linked from<br>
>>> > /home/hazelsct/petsc-2.3.3/lib/linux-gnu-c-opt<br>
>>> > [0]PETSC ERROR: Configure run at Mon Jun 30 14:37:52 2008<br>
>>> > [0]PETSC ERROR: Configure options --with-shared --with-dynamic<br>
>>> > --with-debugging=0 --useThreads 0 --with-mpi-dir=/usr/lib/openmpi<br>
>>> > --with-mpi-shared=1 --with-blas-lib=-lblas --with-lapack-lib=-llapack<br>
>>> > --with-umfpack=1 --with-umfpack-include=/usr/include/suitesparse<br>
>>> > --with-umfpack-lib="[/usr/lib/libumfpack.so,/usr/lib/libamd.so]"<br>
>>> > --with-superlu=1 --with-superlu-include=/usr/include/superlu<br>
>>> > --with-superlu-lib=/usr/lib/libsuperlu.so --with-spooles=1<br>
>>> > --with-spooles-include=/usr/include/spooles<br>
>>> > --with-spooles-lib=/usr/lib/libspooles.so --with-hypre=1<br>
>>> > --with-hypre-dir=/usr --with-babel=1 --with-babel-dir=/usr<br>
>>> > [0]PETSC ERROR:<br>
>>> > ------------------------------------------------------------------------<br>
>>> > [0]PETSC ERROR: MatLUFactorSymbolic() line 2174 in src/mat/interface/matrix.c<br>
>>> > [0]PETSC ERROR: PCSetUp_LU() line 257 in src/ksp/pc/impls/factor/lu/lu.c<br>
>>> > -------------------------------------------------------<br>
>>> ><br>
>>> > Would you like to tell me where I am doing wrong? I appreciate your help.<br>
>>> ><br>
>>> > Xiangdong<br>
>><br>
><br>
><br>
</div></div></blockquote></div><br>