diff --git a/test/pargen/psb_d_pde2d.f90 b/test/pargen/psb_d_pde2d.f90 index 56c70b0e..49ede6f8 100644 --- a/test/pargen/psb_d_pde2d.f90 +++ b/test/pargen/psb_d_pde2d.f90 @@ -548,7 +548,7 @@ program psb_d_pde2d integer(psb_ipk_) :: ictxt, iam, np ! solver parameters - integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst + integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, ipart integer(psb_epk_) :: amatsize, precsize, descsize, d2size real(psb_dpk_) :: err, eps @@ -581,14 +581,14 @@ program psb_d_pde2d ! ! get parameters ! - call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) ! ! allocate and fill in the coefficient matrix, rhs and initial guess ! call psb_barrier(ictxt) t1 = psb_wtime() - call psb_gen_pde2d(ictxt,idim,a,bv,xxv,desc_a,afmt,info) + call psb_gen_pde2d(ictxt,idim,a,bv,xxv,desc_a,afmt,info,partition=ipart) call psb_barrier(ictxt) t2 = psb_wtime() - t1 if(info /= psb_success_) then @@ -691,10 +691,10 @@ contains ! ! get iteration parameters from standard input ! - subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) integer(psb_ipk_) :: ictxt character(len=*) :: kmethd, ptype, afmt - integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst + integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst,ipart integer(psb_ipk_) :: np, iam integer(psb_ipk_) :: ip, inp_unit character(len=1024) :: filename @@ -724,21 +724,26 @@ contains read(inp_unit,*) idim if (ip >= 4) then + read(inp_unit,*) ipart + else + ipart = 3 + endif + if (ip >= 5) then read(inp_unit,*) istopc else istopc=1 endif - if (ip >= 5) then + if (ip >= 6) then read(inp_unit,*) itmax else itmax=500 endif - if (ip >= 6) then + if (ip >= 7) then read(inp_unit,*) itrace else itrace=-1 endif - if (ip >= 7) then + if (ip >= 8) then read(inp_unit,*) irst else irst=1 @@ -746,8 +751,16 @@ contains write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,'("Grid dimensions : ",i5," x ",i5)')idim,idim - write(psb_out_unit,'("Number of processors : ",i0)')np - write(psb_out_unit,'("Data distribution : BLOCK")') + write(psb_out_unit,'("Number of processors : ",i0)') np + select case(ipart) + case(1) + write(psb_out_unit,'("Data distribution : BLOCK")') + case(3) + write(psb_out_unit,'("Data distribution : 2D")') + case default + ipart = 3 + write(psb_out_unit,'("Unknown data distrbution, defaulting to 2D")') + end select write(psb_out_unit,'("Preconditioner : ",a)') ptype write(psb_out_unit,'("Iterative method : ",a)') kmethd write(psb_out_unit,'(" ")') @@ -767,6 +780,7 @@ contains call psb_bcast(ictxt,afmt) call psb_bcast(ictxt,ptype) call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,ipart) call psb_bcast(ictxt,istopc) call psb_bcast(ictxt,itmax) call psb_bcast(ictxt,itrace) @@ -782,13 +796,14 @@ contains integer(psb_ipk_) :: iout write(iout,*)'incorrect parameter(s) found' write(iout,*)' usage: pde2d90 methd prec dim & - &[istop itmax itrace]' + &[ipart istop itmax itrace]' write(iout,*)' where:' write(iout,*)' methd: cgstab cgs rgmres bicgstabl' write(iout,*)' prec : bjac diag none' write(iout,*)' dim number of points along each axis' write(iout,*)' the size of the resulting linear ' - write(iout,*)' system is dim**3' + write(iout,*)' system is dim**2' + write(iout,*)' ipart data partition 1 3 ' write(iout,*)' istop stopping criterion 1, 2 ' write(iout,*)' itmax maximum number of iterations [500] ' write(iout,*)' itrace <=0 (no tracing, default) or ' diff --git a/test/pargen/psb_d_pde3d.f90 b/test/pargen/psb_d_pde3d.f90 index f1779372..86abfd21 100644 --- a/test/pargen/psb_d_pde3d.f90 +++ b/test/pargen/psb_d_pde3d.f90 @@ -253,7 +253,7 @@ contains m = (1_psb_lpk_*idim)*idim*idim n = m - nnz = ((n*9)/(np)) + nnz = ((n*7)/(np)) if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n t0 = psb_wtime() select case(partition_) @@ -589,7 +589,7 @@ program psb_d_pde3d integer(psb_ipk_) :: ictxt, iam, np ! solver parameters - integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst + integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, ipart integer(psb_epk_) :: amatsize, precsize, descsize, d2size real(psb_dpk_) :: err, eps @@ -623,14 +623,14 @@ program psb_d_pde3d ! ! get parameters ! - call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) ! ! allocate and fill in the coefficient matrix, rhs and initial guess ! call psb_barrier(ictxt) t1 = psb_wtime() - call psb_gen_pde3d(ictxt,idim,a,bv,xxv,desc_a,afmt,info) + call psb_gen_pde3d(ictxt,idim,a,bv,xxv,desc_a,afmt,info,partition=ipart) call psb_barrier(ictxt) t2 = psb_wtime() - t1 if(info /= psb_success_) then @@ -733,10 +733,10 @@ contains ! ! get iteration parameters from standard input ! - subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) integer(psb_ipk_) :: ictxt character(len=*) :: kmethd, ptype, afmt - integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst + integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst,ipart integer(psb_ipk_) :: np, iam integer(psb_ipk_) :: ip, inp_unit character(len=1024) :: filename @@ -766,34 +766,45 @@ contains read(inp_unit,*) idim if (ip >= 4) then + read(inp_unit,*) ipart + else + ipart = 3 + endif + if (ip >= 5) then read(inp_unit,*) istopc else istopc=1 endif - if (ip >= 5) then + if (ip >= 6) then read(inp_unit,*) itmax else itmax=500 endif - if (ip >= 6) then + if (ip >= 7) then read(inp_unit,*) itrace else itrace=-1 endif - if (ip >= 7) then + if (ip >= 8) then read(inp_unit,*) irst else irst=1 endif - ! broadcast parameters to all processors - write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,& & '("Grid dimensions : ",i4," x ",i4," x ",i4)') & & idim,idim,idim write(psb_out_unit,'("Number of processors : ",i0)')np - write(psb_out_unit,'("Data distribution : BLOCK")') + select case(ipart) + case(1) + write(psb_out_unit,'("Data distribution : BLOCK")') + case(3) + write(psb_out_unit,'("Data distribution : 3D")') + case default + ipart = 3 + write(psb_out_unit,'("Unknown data distrbution, defaulting to 3D")') + end select write(psb_out_unit,'("Preconditioner : ",a)') ptype write(psb_out_unit,'("Iterative method : ",a)') kmethd write(psb_out_unit,'(" ")') @@ -813,6 +824,7 @@ contains call psb_bcast(ictxt,afmt) call psb_bcast(ictxt,ptype) call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,ipart) call psb_bcast(ictxt,istopc) call psb_bcast(ictxt,itmax) call psb_bcast(ictxt,itrace) @@ -835,6 +847,7 @@ contains write(iout,*)' dim number of points along each axis' write(iout,*)' the size of the resulting linear ' write(iout,*)' system is dim**3' + write(iout,*)' ipart data partition 1 3 ' write(iout,*)' istop stopping criterion 1, 2 ' write(iout,*)' itmax maximum number of iterations [500] ' write(iout,*)' itrace <=0 (no tracing, default) or ' diff --git a/test/pargen/psb_s_pde2d.f90 b/test/pargen/psb_s_pde2d.f90 index c824e599..2942e554 100644 --- a/test/pargen/psb_s_pde2d.f90 +++ b/test/pargen/psb_s_pde2d.f90 @@ -548,7 +548,7 @@ program psb_s_pde2d integer(psb_ipk_) :: ictxt, iam, np ! solver parameters - integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst + integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, ipart integer(psb_epk_) :: amatsize, precsize, descsize, d2size real(psb_spk_) :: err, eps @@ -581,14 +581,14 @@ program psb_s_pde2d ! ! get parameters ! - call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) ! ! allocate and fill in the coefficient matrix, rhs and initial guess ! call psb_barrier(ictxt) t1 = psb_wtime() - call psb_gen_pde2d(ictxt,idim,a,bv,xxv,desc_a,afmt,info) + call psb_gen_pde2d(ictxt,idim,a,bv,xxv,desc_a,afmt,info,partition=ipart) call psb_barrier(ictxt) t2 = psb_wtime() - t1 if(info /= psb_success_) then @@ -691,10 +691,10 @@ contains ! ! get iteration parameters from standard input ! - subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) integer(psb_ipk_) :: ictxt character(len=*) :: kmethd, ptype, afmt - integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst + integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst,ipart integer(psb_ipk_) :: np, iam integer(psb_ipk_) :: ip, inp_unit character(len=1024) :: filename @@ -724,21 +724,26 @@ contains read(inp_unit,*) idim if (ip >= 4) then + read(inp_unit,*) ipart + else + ipart = 3 + endif + if (ip >= 5) then read(inp_unit,*) istopc else istopc=1 endif - if (ip >= 5) then + if (ip >= 6) then read(inp_unit,*) itmax else itmax=500 endif - if (ip >= 6) then + if (ip >= 7) then read(inp_unit,*) itrace else itrace=-1 endif - if (ip >= 7) then + if (ip >= 8) then read(inp_unit,*) irst else irst=1 @@ -746,8 +751,16 @@ contains write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,'("Grid dimensions : ",i5," x ",i5)')idim,idim - write(psb_out_unit,'("Number of processors : ",i0)')np - write(psb_out_unit,'("Data distribution : BLOCK")') + write(psb_out_unit,'("Number of processors : ",i0)') np + select case(ipart) + case(1) + write(psb_out_unit,'("Data distribution : BLOCK")') + case(3) + write(psb_out_unit,'("Data distribution : 2D")') + case default + ipart = 3 + write(psb_out_unit,'("Unknown data distrbution, defaulting to 2D")') + end select write(psb_out_unit,'("Preconditioner : ",a)') ptype write(psb_out_unit,'("Iterative method : ",a)') kmethd write(psb_out_unit,'(" ")') @@ -767,6 +780,7 @@ contains call psb_bcast(ictxt,afmt) call psb_bcast(ictxt,ptype) call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,ipart) call psb_bcast(ictxt,istopc) call psb_bcast(ictxt,itmax) call psb_bcast(ictxt,itrace) @@ -782,13 +796,14 @@ contains integer(psb_ipk_) :: iout write(iout,*)'incorrect parameter(s) found' write(iout,*)' usage: pde2d90 methd prec dim & - &[istop itmax itrace]' + &[ipart istop itmax itrace]' write(iout,*)' where:' write(iout,*)' methd: cgstab cgs rgmres bicgstabl' write(iout,*)' prec : bjac diag none' write(iout,*)' dim number of points along each axis' write(iout,*)' the size of the resulting linear ' - write(iout,*)' system is dim**3' + write(iout,*)' system is dim**2' + write(iout,*)' ipart data partition 1 3 ' write(iout,*)' istop stopping criterion 1, 2 ' write(iout,*)' itmax maximum number of iterations [500] ' write(iout,*)' itrace <=0 (no tracing, default) or ' diff --git a/test/pargen/psb_s_pde3d.f90 b/test/pargen/psb_s_pde3d.f90 index 30786bf2..b8050ab4 100644 --- a/test/pargen/psb_s_pde3d.f90 +++ b/test/pargen/psb_s_pde3d.f90 @@ -253,7 +253,7 @@ contains m = (1_psb_lpk_*idim)*idim*idim n = m - nnz = ((n*9)/(np)) + nnz = ((n*7)/(np)) if(iam == psb_root_) write(psb_out_unit,'("Generating Matrix (size=",i0,")...")')n t0 = psb_wtime() select case(partition_) @@ -589,7 +589,7 @@ program psb_s_pde3d integer(psb_ipk_) :: ictxt, iam, np ! solver parameters - integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst + integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, ipart integer(psb_epk_) :: amatsize, precsize, descsize, d2size real(psb_spk_) :: err, eps @@ -623,14 +623,14 @@ program psb_s_pde3d ! ! get parameters ! - call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + call get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) ! ! allocate and fill in the coefficient matrix, rhs and initial guess ! call psb_barrier(ictxt) t1 = psb_wtime() - call psb_gen_pde3d(ictxt,idim,a,bv,xxv,desc_a,afmt,info) + call psb_gen_pde3d(ictxt,idim,a,bv,xxv,desc_a,afmt,info,partition=ipart) call psb_barrier(ictxt) t2 = psb_wtime() - t1 if(info /= psb_success_) then @@ -733,10 +733,10 @@ contains ! ! get iteration parameters from standard input ! - subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst) + subroutine get_parms(ictxt,kmethd,ptype,afmt,idim,istopc,itmax,itrace,irst,ipart) integer(psb_ipk_) :: ictxt character(len=*) :: kmethd, ptype, afmt - integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst + integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst,ipart integer(psb_ipk_) :: np, iam integer(psb_ipk_) :: ip, inp_unit character(len=1024) :: filename @@ -766,34 +766,45 @@ contains read(inp_unit,*) idim if (ip >= 4) then + read(inp_unit,*) ipart + else + ipart = 3 + endif + if (ip >= 5) then read(inp_unit,*) istopc else istopc=1 endif - if (ip >= 5) then + if (ip >= 6) then read(inp_unit,*) itmax else itmax=500 endif - if (ip >= 6) then + if (ip >= 7) then read(inp_unit,*) itrace else itrace=-1 endif - if (ip >= 7) then + if (ip >= 8) then read(inp_unit,*) irst else irst=1 endif - ! broadcast parameters to all processors - write(psb_out_unit,'("Solving matrix : ell1")') write(psb_out_unit,& & '("Grid dimensions : ",i4," x ",i4," x ",i4)') & & idim,idim,idim write(psb_out_unit,'("Number of processors : ",i0)')np - write(psb_out_unit,'("Data distribution : BLOCK")') + select case(ipart) + case(1) + write(psb_out_unit,'("Data distribution : BLOCK")') + case(3) + write(psb_out_unit,'("Data distribution : 3D")') + case default + ipart = 3 + write(psb_out_unit,'("Unknown data distrbution, defaulting to 3D")') + end select write(psb_out_unit,'("Preconditioner : ",a)') ptype write(psb_out_unit,'("Iterative method : ",a)') kmethd write(psb_out_unit,'(" ")') @@ -813,6 +824,7 @@ contains call psb_bcast(ictxt,afmt) call psb_bcast(ictxt,ptype) call psb_bcast(ictxt,idim) + call psb_bcast(ictxt,ipart) call psb_bcast(ictxt,istopc) call psb_bcast(ictxt,itmax) call psb_bcast(ictxt,itrace) @@ -835,6 +847,7 @@ contains write(iout,*)' dim number of points along each axis' write(iout,*)' the size of the resulting linear ' write(iout,*)' system is dim**3' + write(iout,*)' ipart data partition 1 3 ' write(iout,*)' istop stopping criterion 1, 2 ' write(iout,*)' itmax maximum number of iterations [500] ' write(iout,*)' itrace <=0 (no tracing, default) or ' diff --git a/test/pargen/runs/ppde.inp b/test/pargen/runs/ppde.inp index 5ae8f8db..eb7a35ee 100644 --- a/test/pargen/runs/ppde.inp +++ b/test/pargen/runs/ppde.inp @@ -1,8 +1,9 @@ -7 Number of entries below this +8 Number of entries below this BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES FCG CGR BJAC Preconditioner NONE DIAG BJAC CSR Storage format for matrix A: CSR COO -040 Domain size (acutal system is this**3 (pde3d) or **2 (pde2d) ) +004 Domain size (acutal system is this**3 (pde3d) or **2 (pde2d) ) +1 Partition: 1 BLOCK 3 3D 2 Stopping criterion 1 2 1000 MAXIT -1 ITRACE