I am using 4 processor to run it, how to write an
answer in slave (write(7,*)). Here is the simple
source code,
Hope that someone can help me for this problem. I face
this problem for one a long time. You also can modifie
my source code. thanks.
include 'mpif.h'
integer Iam,pa,ierr
double precision time1,time2,time3,time4
integer status(MPI_STATUS_SIZE)
real a(210,210),u(210,1),f(210,1)
5150 OPEN(UNIT=7,STATUS='NEW',FILE='ada.dat'
,ERR=5151)
GOTO 5152
5151 OPEN(UNIT=7,STATUS='OLD',FILE='ada.dat')
CLOSE(UNIT=7,STATUS='DELETE')
GOTO 5150
5152 CONTINUE
call mpi_init(ierr)
call mpi_comm_rank(mpi_comm_world,Iam,ierr)
call mpi_comm_size(mpi_comm_world,pa,ierr)
if (Iam .eq.0) then
c time1=mpi_wtime()
do ia=1,210
do ja=1,210
a(ia,ja)=1
enddo
u(ia,1)=2
enddo
! initial function
do ir=1,210
f(ir,1)=0
enddo
time1=mpi_wtime()
call mpi_bcast(a,44100,mpi_real,0,
mpi_comm_world,ierr)
call mpi_bcast(u,210,mpi_real,0,
mpi_comm_world,ierr)
call mpi_bcast(f,210,mpi_real,0,
mpi_comm_world,ierr)
do ik=1,(pa-1)
call mpi_recv(f,210,mpi_real,ik,
&ik,mpi_comm_world,status,ierr)
enddo
time2=mpi_wtime()
print*,time2-time1,' seconds'
else
call mpi_bcast(a,44100,mpi_real,0,
mpi_comm_world,ierr)
call mpi_bcast(u,210,mpi_real,0,
mpi_comm_world,ierr)
call mpi_bcast(f,210,mpi_real,0,
mpi_comm_world,ierr)
do i=1,210
do j=1,210
f(i,1)=f(i,1)+a(i,j)*u(j,1)
enddo
enddo
c print*,f(2,1),Iam
write(7,*) f(2,1),Iam
write(6,*) f(2,1),Iam
call mpi_send(f,210,mpi_real,0,Iam,
mpi_comm_world,ierr)
endif
call mpi_finalize(ierr)
stop
end
__________________________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo
http://search.yahoo.com
|