psblas3:
hello hello/Makefile hello/hello.f90 hello/pingpong.f90 hello/runs Added new test dir.psblas-3.4-maint
parent
61daa33425
commit
866fcc02d0
@ -0,0 +1,39 @@
|
|||||||
|
BASEDIR=../..
|
||||||
|
INCDIR=$(BASEDIR)/include
|
||||||
|
include $(INCDIR)/Make.inc.psblas
|
||||||
|
#
|
||||||
|
# Libraries used
|
||||||
|
LIBDIR=$(BASEDIR)/lib
|
||||||
|
PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base
|
||||||
|
LDLIBS=$(PSBLDLIBS)
|
||||||
|
#
|
||||||
|
# Compilers and such
|
||||||
|
#
|
||||||
|
CCOPT= -g
|
||||||
|
FINCLUDES=$(FMFLAG)$(INCDIR) $(FMFLAG).
|
||||||
|
|
||||||
|
|
||||||
|
EXEDIR=./runs
|
||||||
|
|
||||||
|
all: hello pingpong
|
||||||
|
|
||||||
|
hello: hello.o
|
||||||
|
$(F90LINK) hello.o -o hello $(PSBLAS_LIB) $(LDLIBS)
|
||||||
|
/bin/mv hello $(EXEDIR)
|
||||||
|
|
||||||
|
pingpong: pingpong.o
|
||||||
|
$(F90LINK) pingpong.o -o pingpong $(PSBLAS_LIB) $(LDLIBS)
|
||||||
|
/bin/mv pingpong $(EXEDIR)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
/bin/rm -f hello.o pingpong.o
|
||||||
|
$(EXEDIR)/hello
|
||||||
|
verycleanlib:
|
||||||
|
(cd ../..; make veryclean)
|
||||||
|
lib:
|
||||||
|
(cd ../../; make library)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
program hello
|
||||||
|
use psb_base_mod
|
||||||
|
implicit none
|
||||||
|
integer iam, np, icontxt, ip, jp, idummy
|
||||||
|
|
||||||
|
call psb_init(icontxt)
|
||||||
|
call psb_info(icontxt,iam,np)
|
||||||
|
! have all processes check in
|
||||||
|
if ((iam >= 0).and.(iam < np)) then
|
||||||
|
if (iam == 0) then
|
||||||
|
do ip = 1, np-1
|
||||||
|
call psb_rcv(icontxt,idummy,ip)
|
||||||
|
enddo
|
||||||
|
write(*,*) 'Hello, world: all ',np, &
|
||||||
|
& ' processes checked in!'
|
||||||
|
else
|
||||||
|
call psb_snd(icontxt,idummy,0)
|
||||||
|
endif
|
||||||
|
end if
|
||||||
|
call psb_exit(icontxt)
|
||||||
|
end program hello
|
@ -0,0 +1,49 @@
|
|||||||
|
program pingpong
|
||||||
|
use psb_base_mod
|
||||||
|
implicit none
|
||||||
|
integer(psb_ipk_) :: iam, np, icontxt, ip, jp, idummy
|
||||||
|
integer(psb_ipk_), parameter :: nmax=2**16
|
||||||
|
integer(psb_ipk_) :: i,j,k,n
|
||||||
|
real(psb_dpk_) :: v(nmax)
|
||||||
|
real(psb_dpk_) :: t0, t1, t2, mbs, bytes
|
||||||
|
|
||||||
|
|
||||||
|
call psb_init(icontxt)
|
||||||
|
call psb_info(icontxt,iam,np)
|
||||||
|
! have all processes check in
|
||||||
|
if ((iam >= 0).and.(iam < np)) then
|
||||||
|
if (iam == 0) then
|
||||||
|
do ip = 1, np-1
|
||||||
|
call psb_rcv(icontxt,idummy,ip)
|
||||||
|
enddo
|
||||||
|
write(*,*) 'Hello, world: all ',np, &
|
||||||
|
& ' processes checked in!'
|
||||||
|
else
|
||||||
|
call psb_snd(icontxt,idummy,0)
|
||||||
|
endif
|
||||||
|
end if
|
||||||
|
|
||||||
|
n = 1
|
||||||
|
call psb_barrier(icontxt)
|
||||||
|
if (iam == 0) then
|
||||||
|
do i=1, 16
|
||||||
|
t0 = psb_wtime()
|
||||||
|
call psb_snd(icontxt,v(1:n),1)
|
||||||
|
call psb_rcv(icontxt,v(1:n),1)
|
||||||
|
t1 = psb_wtime()
|
||||||
|
bytes = done*n*psb_sizeof_dp
|
||||||
|
mbs = 2.d0*(bytes/(t1-t0))*1.d-6
|
||||||
|
write(*,*) 'pingpong: ',n,bytes,mbs
|
||||||
|
n = n * 2
|
||||||
|
end do
|
||||||
|
else if (iam == 1) then
|
||||||
|
do i=1, 16
|
||||||
|
call psb_rcv(icontxt,v(1:n),0)
|
||||||
|
call psb_snd(icontxt,v(1:n),0)
|
||||||
|
n = n * 2
|
||||||
|
end do
|
||||||
|
end if
|
||||||
|
|
||||||
|
call psb_barrier(icontxt)
|
||||||
|
call psb_exit(icontxt)
|
||||||
|
end program pingpong
|
Loading…
Reference in New Issue