New fileread samples handling of PART.

pull/1/head
Salvatore Filippone 7 years ago
parent 49ff9472ac
commit 592e9bacba

@ -35,7 +35,7 @@ psb_zf_sample: $(ZFOBJS)
/bin/mv psb_zf_sample $(EXEDIR)
.f90.o:
$(MPF90) $(F90COPT) $(FINCLUDES) $(FDEFINES) -c $<
$(MPFC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c $<
clean:
/bin/rm -f $(DFOBJS) $(ZFOBJS) $(SFOBJS) $(CFOBJS)\

@ -38,13 +38,14 @@ contains
!
! Get iteration parameters from the command line
!
subroutine get_dparms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,ipart,&
subroutine get_dparms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,part,&
& afmt,istopc,itmax,itrace,irst,eps)
use psb_base_mod
integer(psb_ipk_) :: ictxt
character(len=2) :: filefmt
character(len=40) :: kmethd, mtrx_file, rhs_file, ptype
integer(psb_ipk_) :: iret, istopc,itmax,itrace,ipart,irst
character(len=20) :: part
integer(psb_ipk_) :: iret, istopc,itmax,itrace,irst
character(len=40) :: charbuf
real(psb_dpk_) :: eps
character :: afmt*5
@ -62,6 +63,7 @@ contains
read(psb_inp_unit,*) kmethd
read(psb_inp_unit,*) ptype
read(psb_inp_unit,*) afmt
read(psb_inp_unit,*) part
call psb_bcast(ictxt,mtrx_file)
@ -70,8 +72,8 @@ contains
call psb_bcast(ictxt,kmethd)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,afmt)
call psb_bcast(ictxt,part)
read(psb_inp_unit,*) ipart
if (ip >= 7) then
read(psb_inp_unit,*) istopc
else
@ -97,17 +99,16 @@ contains
else
eps=1.d-6
endif
inparms(1) = ipart
inparms(2) = istopc
inparms(3) = itmax
inparms(4) = itrace
inparms(5) = irst
call psb_bcast(ictxt,inparms(1:5))
inparms(1) = istopc
inparms(2) = itmax
inparms(3) = itrace
inparms(4) = irst
call psb_bcast(ictxt,inparms(1:4))
call psb_bcast(ictxt,eps)
write(psb_out_unit,'("Solving matrix : ",a)') mtrx_file
write(psb_out_unit,'("Number of processors : ",i3)') np
write(psb_out_unit,'("Data distribution : ",i2)') ipart
write(psb_out_unit,'("Data distribution : ",a)') part
write(psb_out_unit,'("Iterative method : ",a)') kmethd
write(psb_out_unit,'("Preconditioner : ",a)') ptype
write(psb_out_unit,'("Restart parameter : ",i2)') irst
@ -126,26 +127,27 @@ contains
call psb_bcast(ictxt,kmethd)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,afmt)
call psb_bcast(ictxt,part)
call psb_bcast(ictxt,inparms(1:5))
ipart = inparms(1)
istopc = inparms(2)
itmax = inparms(3)
itrace = inparms(4)
irst = inparms(5)
call psb_bcast(ictxt,inparms(1:4))
istopc = inparms(1)
itmax = inparms(2)
itrace = inparms(3)
irst = inparms(4)
call psb_bcast(ictxt,eps)
end if
end subroutine get_dparms
subroutine get_sparms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,ipart,&
subroutine get_sparms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,part,&
& afmt,istopc,itmax,itrace,irst,eps)
use psb_base_mod
integer(psb_ipk_) :: ictxt
character(len=2) :: filefmt
character(len=40) :: kmethd, mtrx_file, rhs_file, ptype
integer(psb_ipk_) :: iret, istopc,itmax,itrace,ipart,irst
character(len=20) :: part
integer(psb_ipk_) :: iret, istopc,itmax,itrace,irst
character(len=40) :: charbuf
real(psb_spk_) :: eps
character :: afmt*5
@ -163,6 +165,7 @@ contains
read(psb_inp_unit,*) kmethd
read(psb_inp_unit,*) ptype
read(psb_inp_unit,*) afmt
read(psb_inp_unit,*) ipart
call psb_bcast(ictxt,mtrx_file)
@ -171,8 +174,8 @@ contains
call psb_bcast(ictxt,kmethd)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,afmt)
call psb_bcast(ictxt,part)
read(psb_inp_unit,*) ipart
if (ip >= 7) then
read(psb_inp_unit,*) istopc
else
@ -198,17 +201,16 @@ contains
else
eps=1.d-6
endif
inparms(1) = ipart
inparms(2) = istopc
inparms(3) = itmax
inparms(4) = itrace
inparms(5) = irst
call psb_bcast(ictxt,inparms(1:5))
inparms(1) = istopc
inparms(2) = itmax
inparms(3) = itrace
inparms(4) = irst
call psb_bcast(ictxt,inparms(1:4))
call psb_bcast(ictxt,eps)
write(psb_out_unit,'("Solving matrix : ",a)') mtrx_file
write(psb_out_unit,'("Number of processors : ",i3)') np
write(psb_out_unit,'("Data distribution : ",i2)') ipart
write(psb_out_unit,'("Data distribution : ",a)') part
write(psb_out_unit,'("Iterative method : ",a)') kmethd
write(psb_out_unit,'("Preconditioner : ",a)') ptype
write(psb_out_unit,'("Restart parameter : ",i2)') irst
@ -227,13 +229,13 @@ contains
call psb_bcast(ictxt,kmethd)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,afmt)
call psb_bcast(ictxt,part)
call psb_bcast(ictxt,inparms(1:5))
ipart = inparms(1)
istopc = inparms(2)
itmax = inparms(3)
itrace = inparms(4)
irst = inparms(5)
call psb_bcast(ictxt,inparms(1:4))
istopc = inparms(1)
itmax = inparms(2)
itrace = inparms(3)
irst = inparms(4)
call psb_bcast(ictxt,eps)
end if

@ -58,13 +58,13 @@ program psb_cf_sample
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode,&
& methd, istopc, irst
integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_spk_) :: err, eps, cond
character(len=5) :: afmt
character(len=20) :: name
character(len=20) :: name, part
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: iparm(20)
@ -105,7 +105,7 @@ program psb_cf_sample
! get parameters
!
call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,&
& ipart,afmt,istopc,itmax,itrace,irst,eps)
& part,afmt,istopc,itmax,itrace,irst,eps)
call psb_barrier(ictxt)
t1 = psb_wtime()
@ -170,17 +170,12 @@ program psb_cf_sample
end if
! switch over different partition types
if (ipart == 0) then
call psb_barrier(ictxt)
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block vector")')
allocate(ivg(m_problem),ipv(np))
do i=1,m_problem
call part_block(i,m_problem,np,ipv,nv)
ivg(i) = ipv(1)
enddo
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
select case(psb_toupper(part))
case('BLOCK')
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
else if (ipart == 2) then
case('GRAPH')
if (iam == psb_root_) then
write(psb_out_unit,'("Partition type: graph vector")')
write(psb_out_unit,'(" ")')
@ -193,10 +188,10 @@ program psb_cf_sample
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
else
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block subroutine")')
case default
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
end if
end select
call psb_scatter(b_col_glob,b_col,desc_a,info,root=psb_root_)
call psb_geall(x_col,desc_a,info)

@ -58,13 +58,13 @@ program psb_df_sample
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode,&
& methd, istopc, irst
integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_dpk_) :: err, eps, cond
character(len=5) :: afmt
character(len=20) :: name
character(len=20) :: name, part
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: iparm(20)
@ -105,7 +105,7 @@ program psb_df_sample
! get parameters
!
call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,&
& ipart,afmt,istopc,itmax,itrace,irst,eps)
& part,afmt,istopc,itmax,itrace,irst,eps)
call psb_barrier(ictxt)
t1 = psb_wtime()
@ -170,17 +170,12 @@ program psb_df_sample
end if
! switch over different partition types
if (ipart == 0) then
call psb_barrier(ictxt)
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block vector")')
allocate(ivg(m_problem),ipv(np))
do i=1,m_problem
call part_block(i,m_problem,np,ipv,nv)
ivg(i) = ipv(1)
enddo
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
select case(psb_toupper(part))
case('BLOCK')
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
else if (ipart == 2) then
case('GRAPH')
if (iam == psb_root_) then
write(psb_out_unit,'("Partition type: graph vector")')
write(psb_out_unit,'(" ")')
@ -193,10 +188,10 @@ program psb_df_sample
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
else
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block subroutine")')
case default
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
end if
end select
call psb_scatter(b_col_glob,b_col,desc_a,info,root=psb_root_)
call psb_geall(x_col,desc_a,info)

@ -58,13 +58,13 @@ program psb_sf_sample
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode,&
& methd, istopc, irst
integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_spk_) :: err, eps, cond
character(len=5) :: afmt
character(len=20) :: name
character(len=20) :: name, part
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: iparm(20)
@ -105,7 +105,7 @@ program psb_sf_sample
! get parameters
!
call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,&
& ipart,afmt,istopc,itmax,itrace,irst,eps)
& part,afmt,istopc,itmax,itrace,irst,eps)
call psb_barrier(ictxt)
t1 = psb_wtime()
@ -170,17 +170,12 @@ program psb_sf_sample
end if
! switch over different partition types
if (ipart == 0) then
call psb_barrier(ictxt)
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block vector")')
allocate(ivg(m_problem),ipv(np))
do i=1,m_problem
call part_block(i,m_problem,np,ipv,nv)
ivg(i) = ipv(1)
enddo
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
select case(psb_toupper(part))
case('BLOCK')
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
else if (ipart == 2) then
case('GRAPH')
if (iam == psb_root_) then
write(psb_out_unit,'("Partition type: graph vector")')
write(psb_out_unit,'(" ")')
@ -193,10 +188,10 @@ program psb_sf_sample
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
else
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block subroutine")')
case default
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
end if
end select
call psb_scatter(b_col_glob,b_col,desc_a,info,root=psb_root_)
call psb_geall(x_col,desc_a,info)

@ -58,13 +58,13 @@ program psb_zf_sample
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode,&
& methd, istopc, irst
integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_dpk_) :: err, eps, cond
character(len=5) :: afmt
character(len=20) :: name
character(len=20) :: name, part
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: iparm(20)
@ -105,7 +105,7 @@ program psb_zf_sample
! get parameters
!
call get_parms(ictxt,mtrx_file,rhs_file,filefmt,kmethd,ptype,&
& ipart,afmt,istopc,itmax,itrace,irst,eps)
& part,afmt,istopc,itmax,itrace,irst,eps)
call psb_barrier(ictxt)
t1 = psb_wtime()
@ -170,17 +170,12 @@ program psb_zf_sample
end if
! switch over different partition types
if (ipart == 0) then
call psb_barrier(ictxt)
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block vector")')
allocate(ivg(m_problem),ipv(np))
do i=1,m_problem
call part_block(i,m_problem,np,ipv,nv)
ivg(i) = ipv(1)
enddo
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
select case(psb_toupper(part))
case('BLOCK')
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
else if (ipart == 2) then
case('GRAPH')
if (iam == psb_root_) then
write(psb_out_unit,'("Partition type: graph vector")')
write(psb_out_unit,'(" ")')
@ -193,10 +188,10 @@ program psb_zf_sample
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,v=ivg)
else
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block subroutine")')
case default
if (iam == psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt,desc_a,info,fmt=afmt,parts=part_block)
end if
end select
call psb_scatter(b_col_glob,b_col,desc_a,info,root=psb_root_)
call psb_geall(x_col,desc_a,info)

@ -5,7 +5,7 @@ MM File format: MM: Matrix Market HB: Harwell-Boeing.
BICGSTAB Iterative method: BiCGSTAB CGS RGMRES BiCGSTABL BICG CG
BJAC Preconditioner NONE DIAG BJAC
CSR Storage format CSR COO JAD
0 IPART: Partition method 0: BLK 2: graph (with Metis)
BLOCK PART: Partition method BLOCK GRAPH
2 ISTOPC
01000 ITMAX
01 ITRACE

@ -5,7 +5,7 @@ MM File format: MM: Matrix Market HB: Harwell-Boeing.
BiCGSTAB Iterative method: BiCGSTAB CGS RGMRES BiCGSTABL BICG CG
BJAC Preconditioner NONE DIAG BJAC
CSR Storage format CSR COO JAD
2 IPART: Partition method 0: BLK 2: graph (with Metis)
BLOCK PART: Partition method BLOCK GRAPH
2 ISTOPC
00500 ITMAX
-1 ITRACE

@ -5,7 +5,7 @@ MM File format: MM: Matrix Market HB: Harwell-Boeing.
BICGSTAB Iterative method: BiCGSTAB CGS RGMRES BiCGSTABL BICG CG
BJAC Preconditioner NONE DIAG BJAC
CSR Storage format CSR COO JAD
0 IPART: Partition method 0: BLK 2: graph (with Metis)
BLOCK PART: Partition method BLOCK GRAPH
2 ISTOPC
01000 ITMAX
-1 ITRACE

@ -5,7 +5,7 @@ MM File format: MM: Matrix Market HB: Harwell-Boeing.
BICGSTAB Iterative method: BiCGSTAB CGS RGMRES BiCGSTABL BICG CG
BJAC Preconditioner NONE DIAG BJAC
CSR Storage format CSR COO JAD
2 IPART: Partition method 0: BLK 2: graph (with Metis)
BLOCK PART: Partition method BLOCK GRAPH
2 ISTOPC
05000 ITMAX
01 ITRACE

Loading…
Cancel
Save