[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Matrix input file format



On 6/7/06, Evrim Dizemen <gudik@xxxxxxxxxxxxxx> wrote:
Hi all,

First thanks for your comments. I still have the same problem but i
agree with you all that reading a matrix from a file is not parallel
programming. So i wonder if you can recommend an efficient and faster
way to read a 30000x30000 sparse matrix where i got those values from my
fortran code on aeroacoustics similation. I tried calling MatSetValues
as i attached below. I found that way from the ex11f.F in the matrix
examples and not sure if it is appropriate for my situation.

!      do, i=1,n
!       do, j=1,n
!        value=Aval(i,j)
!       if(value .ne. 0)then
!       l=i-1
!       m=j-1
!        call MatSetValues(A,1,l,1,m,value,INSERT_VALUES,ierr)
!       endif
!       enddo
!       enddo

Thanks soooooo much

1) You should set an entire row at a time at least, not a single value

2) You need to preallocate the matrix for good performance:

  http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html

3) You are here setting all values from one process. You should do as Randy suggests and set only the values
     which are owned by each process.

4) I would consult an example, such as:

  http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/src/ksp/ksp/examples/tutorials/ex2.c.html
 
    Matt

EVRIM
--
"Failure has a thousand explanations. Success doesn't need one" -- Sir Alec Guiness