[petsc-users] MatView and PetscViewerASCIIOpen problem when cpu > 1

TAY wee-beng zonexo at gmail.com
Mon Jun 25 21:44:21 CDT 2012


On 25/6/2012 5:57 PM, Barry Smith wrote:
>     So you run with -mat_ascii_output_large and it hangs? How big is the matrix?
>
>     If it truly hangs and doesn't just take a long time you can run with -start_in_debugger and then hit control c in the debugger after it has been "hanging" to see where it is.
>
>      But why not just run with a matrix less than 1024 to check that the matrix is correct.
>
>     Barry

I have switched to a 2d case. The matrix size is much smaller (still 
more than 1024). The matrix is now saved to a txt file. However, when 
running 2 cpu, I got:

Matrix Object: 1 MPI processes
   type: mpiaij
row 0: (0, -2)  (132, 3)  (264, -1)
row 1: (1, -2)  (133, 3)  (265, -1)
row 2: (2, -2)  (134, 3)  (266, -1)
...

Shouldn't it be 2 MPI processes? Like in a vector:

Vector Object:Vec_84000004_0 2 MPI processes
   type: mpi
Process [0]
0
0
...

I used :

call PetscViewerASCIIOpen(MPI_COMM_WORLD,'A_semi.txt',viewer,ierr)

call MatView(A_semi,viewer,ierr)

call PetscViewerDestroy(viewer,ierr)

Is there some error in my matrix? I also noticed that the matrix 
creating w/o using DM gives the same "1 MPI processes" output.

I create it using :

call 
DMDACreate2d(MPI_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
PETSC_DECIDE,num_procs,i1,i1,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da,ierr)

call DMCreateMatrix(da,MATAIJ,A_semi,ierr)

Thanks!


>
> On Jun 25, 2012, at 4:39 PM, TAY wee-beng wrote:
>
>> On 25/6/2012 4:24 PM, Barry Smith wrote:
>>> On Jun 25, 2012, at 4:18 PM, TAY wee-beng wrote:
>>>
>>>> On 25/6/2012 3:40 PM, Jed Brown wrote:
>>>>> On Mon, Jun 25, 2012 at 12:25 PM, TAY wee-beng <zonexo at gmail.com> wrote:
>>>>> Hi,
>>>>>
>>>>> I'm trying to use DMDA to solve my linear equation.
>>>>>
>>>>> It works fine with 1 cpu. However, problem arise when cpu > 1. I get segmentation error.
>>>>>
>>>>> I tried to use  MatView and PetscViewerASCIIOpen to view my matrix to check if it's correct.
>>>     It only makes sense to view the matrix in this case for small matrices. You should check the matrix for a very small problem, how are you going to compare the ASCII output to see if it is correct for a huge matrix. Always debug with very small data sets.
>>>
>>>     Barry
>> I just want to get a quick view of the matrix. I have the correct matrix generated without using DM. So,  I use a file difference comparison software to check the difference, which is rather fast. I just wonder why it takes a long time to view the matrix on screen, or write to file. I guess it should be easy to just view the matrix and spot the error.
>>>>> It works with 1 cpu. However now, it shows the error below when I use 2 cpu.
>>>>>
>>>>> [0]PETSC ERROR: --------------------- Error Message ------------------------------------
>>>>> [0]PETSC ERROR: Argument out of range!
>>>>> [0]PETSC ERROR: ASCII matrix output not allowed for matrices with more than 1024 rows, use binary format instead.
>>>>> You can override this restriction using -mat_ascii_output_large.!
>>>>>
>>>>>   To view the matrix, my command is :
>>>>>
>>>>> call PetscViewerASCIIOpen(MPI_COMM_WORLD,"A_semi.txt",viewer,ierr)
>>>>>
>>>>> call MatView(A_semi,viewer,ierr)
>>>>>
>>>>> call PetscViewerDestroy(viewer,ierr)
>>>>>
>>>>> I tried to use -mat_ascii_output_large but then it just hangs there forever.
>>>>>
>>>>> It may just be very slow.
>>>> I tried using 1 cpu and I got it in a few minutes. Should i take a long time if I use 2 cpu? Also, I got the error:
>>>>
>>>> [0]PETSC ERROR: Argument out of range!
>>>> [0]PETSC ERROR: ASCII matrix output not allowed for matrices with more than 1024 rows, use binary format instead.
>>>>
>>>> It doesn't happen when I use 1 cpu. Is it normal to get it when I use 2 cpu?
>>>>
>>>> I also tried to use :
>>>>
>>>> call MatView(A_semi,PETSC_VIEWER_STDOUT_WORLD ,ierr)
>>>>
>>>> but the same error occurs. It just hangs there when 2 cpu are used.
>>>>
>>>>
>>>>> Why do you need ASCII? Writing anything large in ASCII is hopeless. Please use binary.
>>>>>   I create the matrix using DMCreateMatrix. I don't have to use MatCreateAIJ, right?
>>>>>
>>>>> Also, I check for the ierr value when I use MatSetValuesStencil to ensure there's no error. Btw There's no problem with VecView.
>>>>>
>>>>> So how can I view the matrix?
>>>>>
>>>>> Thank you!
>>>>>
>>>>> -- 
>>>>> Yours sincerely,
>>>>>
>>>>> TAY wee-beng
>>>>>
>>>>>
>>




More information about the petsc-users mailing list