Thomas Amestoy 11 years ago
parent 51cfa1cbd4
commit 4acab9dfec

@ -5,74 +5,42 @@ BASEDIR=../..
INCDIR=$(BASEDIR)/include/
include $(INCDIR)/Make.inc.psblas
LIBDIR=$(BASEDIR)/lib/
PSBLAS_LIB= -L$(LIBDIR) -leigen -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base
PSBLAS_LIB= -L$(LIBDIR) -lpsb_eigen -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base
LDLIBS=$(PSBLDLIBS)
FINCLUDES=$(FMFLAG)$(INCDIR) $(FMFLAG).
DTOBJS=d_file_spmv.o
STOBJS=s_file_spmv.o
DPGOBJS=pdgenspmv.o
PWFOBJS = power_file.o
PWFROBJS = power_file_real.o #eig_mod.o
ARNOBJS =arnoldi_file.o
ARNROBJS =arnoldi_file_real.o
SIROBJS=shift_invert_real.o
PWFROBJS = power_file_real.o
EXEDIR=./runs
all: d_file_spmv s_file_spmv pdgenspmv power_file power_file_real
d_file_spmv: $(DTOBJS)
$(F90LINK) $(LOPT) $(DTOBJS) -o d_file_spmv $(PSBLAS_LIB) $(LDLIBS)
/bin/mv d_file_spmv $(EXEDIR)
pdgenspmv: $(DPGOBJS)
$(F90LINK) $(LOPT) $(DPGOBJS) -o pdgenspmv $(PSBLAS_LIB) $(LDLIBS)
/bin/mv pdgenspmv $(EXEDIR)
all: power_file_real maxA_and_lapl_extremums test_enea_dagostino test_realnet
s_file_spmv: $(STOBJS)
$(F90LINK) $(LOPT) $(STOBJS) -o s_file_spmv $(PSBLAS_LIB) $(LDLIBS)
/bin/mv s_file_spmv $(EXEDIR)
power_file: $(PWFOBJS)
$(F90LINK) $(LOPT) $(PWFOBJS) -o power_file $(PSBLAS_LIB) $(LDLIBS)
/bin/mv power_file $(EXEDIR)
power_file_real: $(PWFROBJS)
$(F90LINK) $(LOPT) $(PWFROBJS) -o power_file_real $(PSBLAS_LIB) $(LDLIBS)
/bin/mv power_file_real $(EXEDIR)
arnoldi_file: $(ARNOBJS)
$(F90LINK) $(LOPT) $(ARNOBJS) -o arnoldi_file $(PSBLAS_LIB) $(LDLIBS)
/bin/mv arnoldi_file $(EXEDIR)
arnoldi_file_real: $(ARNROBJS) .
$(F90LINK) $(LOPT) $(ARNROBJS) -o arnoldi_file_real $(PSBLAS_LIB) $(LDLIBS)
/bin/mv arnoldi_file_real $(EXEDIR)
shift_invert_real: $(SIROBJS)
$(F90LINK) $(LOPT) $(SIROBJS) -o shift_invert_real $(PSBLAS_LIB) $(LDLIBS)
/bin/mv shift_invert_real $(EXEDIR)
analyse: analyse.o
$(F90LINK) $(LOPT) analyse.o -o analyse $(PSBLAS_LIB) $(LDLIBS)
/bin/mv analyse /server/tamestoy/TEMP/MaxEigenAdj/
maxA_and_lapl_extremums: maxA_and_lapl_extremums.o
$(F90LINK) $(LOPT) maxA_and_lapl_extremums.o -o maxA_and_lapl_extremums $(PSBLAS_LIB) $(LDLIBS)
/bin/cp maxA_and_lapl_extremums test_dagostino
/bin/mv maxA_and_lapl_extremums $(EXEDIR)
an_lapl: an_lapl.o
$(F90LINK) $(LOPT) an_lapl.o -o an_lapl $(PSBLAS_LIB) $(LDLIBS)
/bin/mv an_lapl /server/tamestoy/TEMP/SCALING-BA
test_enea_dagostino:test_enea_dagostino.o
$(F90LINK) $(LOPT) test_enea_dagostino.o -o test_enea_dagostino $(PSBLAS_LIB) $(LDLIBS)
/bin/mv test_enea_dagostino test_dagostino
laplacian: laplacian.o
$(F90LINK) $(LOPT) laplacian.o -o laplacian $(PSBLAS_LIB) $(LDLIBS)
/bin/mv laplacian $(EXEDIR)
adj_to_mm : adj_to_mm.o
$(F90LINK) $(LOPT) adj_to_mm.o -o adj_to_mm $(PSBLAS_LIB) $(LDLIBS)
/bin/mv adj_to_mm $(EXEDIR)
test_chseqr: test_chseqr.o
$(F90LINK) $(LOPT) test_chseqr.o -o test_chseqr $(PSBLAS_LIB) $(LDLIBS)
test_realnet:test_realnet.o
$(F90LINK) $(LOPT) test_realnet.o -o test_realnet $(PSBLAS_LIB) $(LDLIBS)
/bin/mv test_realnet test_dagostino
#eig_mod.o: eig_mod.f90
#$(F90LINK) $(LOPT) -c eig_mod.f90 $(PSBLAS_LIB) $(LDLIBS)
#gfortran -c eig_mod.f90
analyse_results: analyse_results.o
$(F90LINK) $(LOPT) analyse_results.o -o analyse_results $(PSBLAS_LIB) $(LDLIBS)
/bin/mv analyse_results /server/tamestoy/TEMP/SCALING-BA
clean:
/bin/rm -f *.o

@ -1,38 +0,0 @@
subroutine adj_read (a,filename,desc_a,info)
type(psb_dspmat_type), intent (out) :: a
character(len=20) :: filename
type(psb_desc_type):: desc_a
integer (psb_ipk_) :: info
implicit none
integer :: i,j,nnzero,nbCol
integer :: unitFile, iError,line
integer(psb_ipk_), allocatable :: fileContent(:,:),ia(:),ja(:)
real (psb_dpk_), allocatable :: val(:)
integer(psb_ipk_), allocatable :: size_mat(:)
nbCol = 2
allocate (size_mat(nbCol))
unitFile = 1
open(UNIT=unitFile, FILE=filename, FORM="FORMATTED", STATUS="OLD",
ACTION="READ")
nnzero = size_mat(2)
allocate (fileContent(nnzeros,nbCol))
do line = 1,nnzero
read(unitFile, *) fileContent(line,1:nbCol)
end do saveNodes
close(UNIT=unitFile)
allocate(ia(nnzero),ja(nnzero),val(nnzero))
do i=1,nnzero
ia(i)=fileContent(i,1)
ja(i)=filecontent(i,2)
val(i)=1.0
end do
call psb_spins(nnzero, ia, ja, val, a, desc_a, info)
end subroutine adj_read

@ -0,0 +1,35 @@
program adj_to_mm
use psb_base_mod
! reads a file containing the coordinate description of an adjacence
! sparse matrix (values are always 1) and stores it into 'a'
!
! on entry :
! file_adj : file containing the description of the adjacency matrix
! file_mm : destination MM format file containing the same matrix
! begin : integer specifying the first index of rows and columns in the
! file_adj (usually 1 or 0)
character(len=40) :: file_adj,file_mm
integer(psb_ipk_) :: i,j,k,nnzero,nrows,begin
type(psb_d_coo_sparse_mat) :: acoo
read(psb_inp_unit,*)file_adj
read(psb_inp_unit,*)file_mm
read(psb_inp_unit,*)begin
open(15, FILE=file_adj, STATUS="OLD", ACTION="READ")
open(14, FILE=file_mm, ACTION="WRITE")
read(15, *) nrows,nnzero
write(14,'(i20,i20,i20)') nrows,nrows,nnzero
do k = 1,nnzero
read(15, *) i,j
j=j+(1-begin)
i=i+(1-begin)
write(14,'(i20,i20,F20.3)')i,j,1.0
end do
close(UNIT=15)
close(UNIT=14)
end program adj_to_mm

@ -1,43 +0,0 @@
program analyse
use psb_base_mod
use psb_util_mod
implicit none
character(len=30) :: given_file,res_file,analyse_file,mat_file
integer (psb_ipk_) :: i,nb_mat, n
real(psb_dpk_) :: tab(7),eig
read(psb_inp_unit,*) given_file
read(psb_inp_unit,*) res_file
read(psb_inp_unit,*) analyse_file
read(psb_inp_unit,*) nb_mat
open(15,FILE=given_file,action="read")
open(14,file=res_file,action="read")
do i=1,22
read(15,*)
end do
open (16, file=analyse_file,position="append",action="write")
n=0
do i=1,nb_mat
read(15,*)tab(1:7)
read(14,*)mat_file,eig
if(tab(4)-eig==0)then
write(psb_out_unit,'("on a gagne !")')
n=n+1
else
write(psb_out_unit,'("perdu")')
write(16,'(F20.2,F20.2)')tab(2),tab(3)
write(16,'(F20.7,F20.7)')tab(4),eig
end if
end do
write(psb_out_unit,'(i20)')n
close(14)
close(15)
close(16)
end program analyse

@ -4,7 +4,7 @@ program analyse
implicit none
character(len=30) :: lapl_file,max_file,res_file,analyse_file,mat_file
integer (psb_ipk_) :: i,nb_mat, n
integer (psb_ipk_) :: i,nb_mat,n,iter
real(psb_dpk_) ::tab(18),eig1,eig2,eig0,eigmin,eigmax,delta,delta2,&
&deltamax,timemin,timemax,t1,t2,time0,t0
@ -34,9 +34,18 @@ program analyse
timemin=0
time0=0
do i=1,nb_mat
read(13,*)tab(1:7)
read(14,*)mat_file,eigmax,iter,t0
if(abs(tab(4)-eigmax)>0.01)then
write(16,'(F20.2,F20.2)')tab(2),tab(3)
write(16,'(F20.6,F20.6)')tab(4),eigmax
endif
time0=time0+t0
deltamax=deltamax+abs(1-eigmax/tab(4))
read(15,*)tab(1:18)
read(14,*)mat_file,eig1,eig2,t1
read(14,*)eigmin,eig0,t2
read(14,*)eig1,eig2,t1
read(14,*)eig0,eigmin,t2
if(abs(tab(6)-eigmin)>0.001)then
n=n+1
@ -57,16 +66,8 @@ program analyse
timemin=timemin+t2
delta2=delta2+abs(1-eigmin/tab(6))
delta=delta+abs(1-eig2/tab(16))+abs(1-eig1/tab(18))
read(13,*)tab(1:7)
read(14,*)mat_file,eigmax,t0
if(abs(tab(4)-eigmax)>0.01)then
write(16,'(F20.2,F20.2)')tab(2),tab(3)
write(16,'(F20.6,F20.6)')tab(4),eigmax
endif
time0=time0+t0
deltamax=deltamax+abs(1-eigmax/tab(4))
end do
write(16,'("errors on ",i20," eigenvalues")')n
write(16,'("gap average for lapl max",g20.5)')delta/(2*nb_mat)
write(16,'("gap average for lapl min",g20.5)')delta2/(nb_mat)

@ -1,344 +0,0 @@
!!$
!!$ Parallel Sparse BLAS version 3.1
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
!!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
program arnoldi_file
use psb_base_mod
use psb_util_mod
implicit none
! input parameters
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
! sparse matrices
type(psb_zspmat_type) :: a, aux_a
! dense matrices
complex(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
complex(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
complex(psb_dpk_), allocatable, target :: H(:,:),eig(:),work(:),Z(:,:)
integer, allocatable :: indexes(:)
type(psb_z_vect_type), allocatable, target :: V(:)
complex(psb_dpk_), pointer :: b_col_glob(:)
type(psb_z_vect_type) :: b_col, x_col, r_col
! communications data structure
type(psb_desc_type):: desc_a
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
& methd, istopc, irst, nr
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
real(psb_dpk_) :: err, eps,cond
character(len=5) :: afmt
character(len=20) :: name
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: times=0
integer(psb_ipk_) :: iparm(20)
! other variables
integer(psb_ipk_) :: i,info,j,m_problem
integer(psb_ipk_) :: internal, m,ii,nnzero, dim_H, alloc_stat
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
&scale,resmx,resmxp, flops, bdwdth
real(psb_dpk_) :: tt1, tt2, tflops
real (psb_dpk_) :: norm
complex (psb_dpk_) :: dotprod
integer(psb_ipk_) :: nrhs, nrow, n_row, nv, ne
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
call psb_init(ictxt)
call psb_info(ictxt,iam,np)
if (iam < 0) then
! This should not happen, but just in case
call psb_exit(ictxt)
stop
endif
name='arnoldi_file'
if(psb_get_errstatus() /= 0) goto 9999
info=psb_success_
call psb_set_errverbosity(2)
!
! Hello world
!
if (iam == psb_root_) then
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
write(*,*) 'This is the ',trim(name),' sample program'
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
read(psb_inp_unit,*) dim_H
write (psb_out_unit, '("Hessenberg matrix dim is ",i20)') dim_H
end if
call psb_bcast(ictxt,mtrx_file)
call psb_bcast(ictxt,filefmt)
call psb_bcast(ictxt,ipart)
call psb_bcast(ictxt,dim_H)
rhs_file = 'NONE'
afmt = 'CSR'
call psb_barrier(ictxt)
t1 = psb_wtime()
! read the input matrix to be processed and (possibly) the rhs
nrhs = 1
if (iam==psb_root_) then
select case(psb_toupper(filefmt))
case('MM')
! For Matrix Market we have an input file for the matrix
! and an (optional) second file for the RHS.
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
if (info == psb_success_) then
if (rhs_file /= 'NONE') then
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
end if
end if
case ('HB')
! For Harwell-Boeig we have a single file which may or may not
! contain an RHS.
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
case default
info = -1
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
end select
if (info /= psb_success_) then
write(psb_err_unit,*) 'Error while reading input matrix '
call psb_abort(ictxt)
end if
m_problem = aux_a%get_nrows()
call psb_bcast(ictxt,m_problem)
! At this point aux_b may still be unallocated
if (psb_size(aux_b,dim=1)==m_problem) then
! if any rhs were present, broadcast the first one
write(psb_err_unit,'("Ok, got an rhs ")')
b_col_glob =>aux_b(:,1)
else
write(psb_out_unit,'("Generating an rhs...")')
write(psb_out_unit,'(" ")')
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob => aux_b(:,1)
do i=1, m_problem
b_col_glob(i) = 1.d0
enddo
endif
call psb_bcast(ictxt,b_col_glob(1:m_problem))
else
call psb_bcast(ictxt,m_problem)
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob =>aux_b(:,1)
call psb_bcast(ictxt,b_col_glob(1:m_problem))
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")')
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,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else if (ipart == 2) then
if (iam==psb_root_) then
write(psb_out_unit,'("Partition type: graph")')
write(psb_out_unit,'(" ")')
! write(psb_err_unit,'("Build type: graph")')
call build_mtpart(aux_a,np)
endif
call psb_barrier(ictxt)
call distr_mtpart(psb_root_,ictxt)
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
allocate(H(dim_H,dim_H),stat = alloc_stat)
do i=1,dim_h
do j=1,dim_H
H(i,j)=zzero
enddo
enddo
allocate(V(dim_H+1),stat = alloc_stat)
do i=1,dim_H+1
call psb_geall(V(i),desc_a,info)
call psb_geasb(V(i),desc_a,info)
enddo
call V(1)%set(zone)
t2 = psb_wtime() - t1
call psb_amx(ictxt, t2)
if (iam==psb_root_) then
write(psb_out_unit,'(" ")')
write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
write(psb_out_unit,'(" ")')
end if
call psb_barrier(ictxt)
t1 = psb_wtime()
norm = psb_genrm2(V(1),desc_a,info)
if (iam==psb_root_) write(psb_out_unit,'("norma iniziale :"F20.3)')norm
! H(2,1)=dcmplx(norm,0.0)
H(2,1)=norm*zone
norm = 1/norm
!normalisation of V(1)
call psb_geaxpby(zzero,V(1),norm*zone,V(1),desc_a, info)
do i=2,dim_H+1
call psb_spmm(zone,a,V(i-1),zzero,V(i),desc_a,info,'n') !we do V(i)=a*V(i-1)
! Gram-Schmitt's reorthogonalisation
do j=1,i-1
dotprod= psb_gedot(V(i),V(j),desc_a,info) ! dotprod = (V(i) dot V(j))
call psb_geaxpby(-dotprod,V(j),zone,V(i),desc_a, info) !V(i)=V(i)-V(j)*dotprod
if(iam==psb_root_) write(*,'("dotprod : "i5, g20.4,g20.4)') i,real(dotprod),aimag(dotprod)
H(j,i-1)=dotprod
end do
norm = psb_genrm2(V(i),desc_a,info)
if (iam==psb_root_) then
write(psb_out_unit,'("norma finale :"i20,F20.3)')i,norm
write(psb_out_unit,'("")')
end if
if (i .ne. dim_H+1) then
H(i,i-1)=cmplx(norm,0.0)
!H(i,i-1)=norm*zone
endif
norm=1/norm
call psb_geaxpby(zzero,V(i),norm*zone,V(i),desc_a, info)
enddo
do i=2,dim_H
if (iam==psb_root_) write(*,'("basse diagonale de H : "i5, g20.4,g20.4)') i,real(H(i,i-1)),aimag(H(i,i-1))
enddo
write(psb_out_unit,'("")')
allocate(eig(dim_H),work(dim_h),stat = info)
allocate(Z(dim_H,dim_H),stat = alloc_stat)
call ZHSEQR('E','N',dim_H,1,dim_H,H,dim_H,eig,Z,dim_H,work,3*dim_H,info)
!sort H's eigenvalues
allocate(indexes(1:dim_H))
call psb_qsort(eig,indexes,psb_alsort_up_,psb_sort_ovw_idx_)
call psb_barrier(ictxt)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
nr = desc_a%get_global_rows()
annz = a%get_nzeros()
amatsize = psb_sizeof(a)
descsize = psb_sizeof(desc_a)
call psb_sum(ictxt,annz)
call psb_sum(ictxt,amatsize)
call psb_sum(ictxt,descsize)
if (iam==psb_root_) then
flops = 2.d0*times*annz
tflops=flops
write(psb_out_unit,'("Matrix: ",a)') mtrx_file
write(psb_out_unit,'("Test on : ",i20," processors")') np
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
write(*,'("valeurs propres de H : ")')
OPEN(unit=10, file=mtrx_file(1:3)//'.txt')
do i=dim_H/3,dim_H
write(psb_out_unit,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
write(10,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
enddo
CLOSE(10)
tflops = tflops / (tt2)
!
! This computation is valid for CSR
!
nbytes = nr*(2*psb_sizeof_sp + psb_sizeof_int)+ &
& annz*(psb_sizeof_sp + psb_sizeof_int)
bdwdth = times*nbytes/(t2*1.d6)
bdwdth = times*nbytes/(tt2*1.d6)
end if
call psb_gefree(b_col, desc_a,info)
call psb_gefree(x_col, desc_a,info)
call psb_spfree(a, desc_a,info)
call psb_cdfree(desc_a,info)
do i=1,dim_H
call psb_gefree(V(i),desc_a,info)
end do
DEALLOCATE (H)
DEALLOCATE (eig,V)
DEALLOCATE (work)
DEALLOCATE (Z)
9999 continue
if(info /= 0) then
call psb_error(ictxt)
end if
call psb_exit(ictxt)
stop
end program arnoldi_file

@ -1,409 +0,0 @@
!!$
!!$ Parallel Sparse BLAS version 3.1
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
!!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
program arnoldi_file
use psb_base_mod
use psb_util_mod
implicit none
! input parameters
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
! sparse matrices
type(psb_dspmat_type) :: a, b, aux_a
! dense matrices
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
complex(psb_dpk_), allocatable, target :: H(:,:),eig(:),work(:),Z(:,:)
integer, allocatable :: indexes(:)
type(psb_d_vect_type), allocatable, target :: V(:)
real(psb_dpk_), pointer :: b_col_glob(:)
type(psb_d_vect_type) :: b_col, x_col, r_col
! communications data structure
type(psb_desc_type):: desc_a
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
& methd, istopc, irst, nr
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
real(psb_dpk_) :: err, eps,cond
character(len=5) :: afmt
character(len=20) :: name
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: times=0
integer(psb_ipk_) :: iparm(20)
! other variables
integer(psb_ipk_) :: i,info,j,m_problem
integer(psb_ipk_) :: internal, m,ii,nnzero, dim_H, alloc_stat
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
&scale,resmx,resmxp, flops, bdwdth
real(psb_dpk_) :: tt1, tt2, tflops
real (psb_dpk_) :: norm
real (psb_dpk_) :: dotprod
integer(psb_ipk_) :: nrhs, nrow, n_row, nv, ne
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
call psb_init(ictxt)
call psb_info(ictxt,iam,np)
if (iam < 0) then
! This should not happen, but just in case
call psb_exit(ictxt)
stop
endif
name='arnoldi_file'
if(psb_get_errstatus() /= 0) goto 9999
info=psb_success_
call psb_set_errverbosity(2)
!
! Hello world
!
if (iam == psb_root_) then
!write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
!write(*,*) 'This is the ',trim(name),' sample program'
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
read(psb_inp_unit,*) dim_H
end if
call psb_bcast(ictxt,mtrx_file)
call psb_bcast(ictxt,filefmt)
call psb_bcast(ictxt,ipart)
call psb_bcast(ictxt,dim_H)
rhs_file = 'NONE'
afmt = 'CSR'
call psb_barrier(ictxt)
t1 = psb_wtime()
! read the input matrix to be processed and (possibly) the rhs
nrhs = 1
if (iam==psb_root_) then
select case(psb_toupper(filefmt))
case('MM')
! For Matrix Market we have an input file for the matrix
! and an (optional) second file for the RHS.
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
if (info == psb_success_) then
if (rhs_file /= 'NONE') then
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
end if
end if
case ('HB')
! For Harwell-Boeig we have a single file which may or may not
! contain an RHS.
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
case ('AD')
call adj_read(aux_a,mtrx_file,iunit,desc_a,info)
case default
info = -1
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
end select
if (info /= psb_success_) then
write(psb_err_unit,*) 'Error while reading input matrix '
call psb_abort(ictxt)
end if
m_problem = aux_a%get_nrows()
call psb_bcast(ictxt,m_problem)
! At this point aux_b may still be unallocated
if (psb_size(aux_b,dim=1)==m_problem) then
! if any rhs were present, broadcast the first one
write(psb_err_unit,'("Ok, got an rhs ")')
b_col_glob =>aux_b(:,1)
else
! write(psb_out_unit,'("Generating an rhs...")')
! write(psb_out_unit,'(" ")')
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob => aux_b(:,1)
do i=1, m_problem
b_col_glob(i) = 1.d0
enddo
endif
call psb_bcast(ictxt,b_col_glob(1:m_problem))
else
call psb_bcast(ictxt,m_problem)
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob =>aux_b(:,1)
call psb_bcast(ictxt,b_col_glob(1:m_problem))
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")')
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,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else if (ipart == 2) then
if (iam==psb_root_) then
!write(psb_out_unit,'("Partition type: graph")')
!write(psb_out_unit,'(" ")')
! write(psb_err_unit,'("Build type: graph")')
call build_mtpart(aux_a,np)
endif
call psb_barrier(ictxt)
call distr_mtpart(psb_root_,ictxt)
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
!if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call lapl(a,b)
allocate(H(dim_H,dim_H),stat = alloc_stat)
do i=1,dim_h
do j=1,dim_H
H(i,j)=zzero
enddo
enddo
allocate(V(dim_H+1),stat = alloc_stat)
do i=1,dim_H+1
call psb_geall(V(i),desc_a,info)
call psb_geasb(V(i),desc_a,info)
enddo
call V(1)%set(done)
t2 = psb_wtime() - t1
call psb_amx(ictxt, t2)
! if (iam==psb_root_) then
!write(psb_out_unit,'(" ")')
!write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
!write(psb_out_unit,'(" ")')
!end if
call psb_barrier(ictxt)
norm = psb_norm2(V(1),desc_a,info)
H(2,1)=cmplx(norm,0.0)
norm = 1/norm
!normalisation of V(1)
call psb_geaxpby(dzero,V(1),norm,V(1),desc_a, info)
do i=2,dim_H+1
call psb_spmm(done,b,V(i-1),dzero,V(i),desc_a,info,'n') !we do V(i)=b*V(i-1)
! Gram-Schmitt's reorthogonalisation
do j=1,i-1
dotprod= psb_gedot(V(i),V(j),desc_a,info) ! dotprod = (V(i) dot V(j))
call psb_geaxpby(-dotprod,V(j),done,V(i),desc_a, info) !V(i)=V(i)-V(j)*dotprod
H(j,i-1)=cmplx(dotprod,0.0)
end do
norm = psb_norm2(V(i),desc_a,info)
! write(psb_out_unit,'("norma finale :"i20,F20.3)')i,norm
! write(psb_out_unit,'("")')
if (i .ne. dim_H+1) then
H(i,i-1)=cmplx(norm,0.0)
endif
norm=1/norm
call psb_geaxpby(dzero,V(i),norm,V(i),desc_a, info)
enddo
write(psb_out_unit,'("")')
if (iam==psb_root_) then
allocate(eig(dim_H),work(dim_h),Z(dim_H,dim_H),stat = info)
call ZHSEQR('E','N',dim_H,1,dim_H,H,dim_H,eig,Z,dim_H,work,dim_H,info)
!sort H's eigenvalues
allocate(indexes(1:dim_H))
call psb_qsort(eig,indexes,psb_alsort_up_,psb_sort_ovw_idx_)
end if
call psb_barrier(ictxt)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
nr = desc_a%get_global_rows()
annz = a%get_nzeros()
amatsize = psb_sizeof(a)
descsize = psb_sizeof(desc_a)
call psb_sum(ictxt,annz)
call psb_sum(ictxt,amatsize)
call psb_sum(ictxt,descsize)
if (iam==psb_root_) then
flops = 2.d0*times*annz
tflops=flops
! write(psb_out_unit,'("Matrix: ",a)') mtrx_file
! write(psb_out_unit,'("Test on : ",i20," processors")') np
! write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
! write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
open(15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
write (15, '(a,F20.6,F20.6,F20.4)')mtrx_file,real(eig(dim_H)),real(eig(dim_H-1)),t2
close(15)
DEALLOCATE (work,eig,Z)
!write(*,'("valeurs propres de H : ")')
!do i=dim_H/3,dim_H
! write(psb_out_unit,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
!enddo
tflops = tflops / (tt2)
!
! This computation is valid for CSR
!
nbytes = nr*(2*psb_sizeof_sp + psb_sizeof_int)+ &
& annz*(psb_sizeof_sp + psb_sizeof_int)
bdwdth = times*nbytes/(t2*1.d6)
bdwdth = times*nbytes/(tt2*1.d6)
end if
call psb_gefree(b_col, desc_a,info)
call psb_gefree(x_col, desc_a,info)
call psb_spfree(a, desc_a,info)
call psb_cdfree(desc_a,info)
do i=1,dim_H
call psb_gefree(V(i), desc_a,info)
enddo
DEALLOCATE (H)
DEALLOCATE (V)
9999 continue
if(info /= 0) then
call psb_error(ictxt)
end if
call psb_exit(ictxt)
stop
contains
subroutine adj_read (a,filename,iunit,desc_a,info)
type(psb_dspmat_type), intent (inout) :: a
character(len=40) :: filename
integer (psb_ipk_) :: iunit
type(psb_desc_type):: desc_a
integer (psb_ipk_) :: info
integer(psb_ipk_) :: i,nnzero,nrows
integer (psb_ipk_) :: iError
type(psb_d_coo_sparse_mat) :: acoo
open(iunit, FILE=filename, STATUS="OLD", ACTION="READ")
read(iunit, *) nrows , nnzero
call acoo%allocate(nrows,nrows,nnzero)
do i = 1,nnzero
read(iunit, *) acoo%ia(i),acoo%ja(i)
acoo%ia(i)=acoo%ia(i)+1
acoo%ja(i)=acoo%ja(i)+1
acoo%val(i)=1.0
end do
close(UNIT=iunit)
!call psb_spall(a,desc_a,info,nnzero)
!call psb_spins(nnzero, ia, ja, val, a, desc_a, info)
call acoo%set_nzeros(nnzero)
call acoo%fix(info)
call a%mv_from(acoo)
call a%cscnv(info,type='csr')
end subroutine adj_read
subroutine lapl(a,b)
type(psb_dspmat_type),intent(in)::a
type(psb_dspmat_type),intent(out)::b
type(psb_d_coo_sparse_mat) :: acoo
integer(psb_ipk_) :: nz,n,info,i
real(psb_dpk_), allocatable :: K(:)
call a%cp_to(acoo)
nz=acoo%get_nzeros()
n=a%get_nrows()
allocate(K(n))
do i=1,n
K(i)=0
enddo
do i=1,nz
K(acoo%ia(i))=K(acoo%ia(i))+acoo%val(i)
acoo%val(i)=-acoo%val(i)
enddo
call acoo%reallocate(nz+n)
do i=1,n
acoo%val(nz+i)=K(i)
acoo%ia(nz+i)= i
acoo%ja(nz+i)= i
enddo
call acoo%set_nzeros(nz+n)
call acoo%fix(info)
call b%mv_from(acoo)
!if(iam==psb_root_) then
! write(psb_out_unit,'("nz, n",i10,i10," 1")') nz,n
! write(psb_out_unit,'("b%get_nzeros ?",i10, " 1")') b%get_nzeros()
!else
! write(psb_out_unit,'("nz,n",i10,i10," 2")') nz,n
! write(psb_out_unit,'("b%get_nzeros ?",i10, " 2")')b%get_nzeros()
!end if
call b%cscnv(info,'CSR')
deallocate (K)
end subroutine lapl
end program arnoldi_file

@ -29,27 +29,31 @@
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
program power_file
program maxA_and_lapl_extremums
use psb_base_mod
use psb_util_mod
use psb_eigen_mod
implicit none
! input parameters
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
character(len=100) :: mtrx_file, rhs_file
character(len=40) :: kmethd, ptype
real (psb_dpk_) :: precisione,sigma
integer(psb_ipk_) :: dim_H
! sparse matrices
type(psb_zspmat_type) :: a, aux_a
type(psb_dspmat_type) :: a, b, aux_a
! dense matrices
complex(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
complex(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
complex(psb_dpk_), pointer :: b_col_glob(:)
type(psb_z_vect_type) :: b_col, x_col, r_col
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
real(psb_dpk_), pointer :: b_col_glob(:)
type(psb_d_vect_type) :: b_col, x_col, r_col
complex(psb_dpk_),allocatable :: eig(:),eigmin(:)
! communications data structure
type(psb_desc_type):: desc_a
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
@ -67,12 +71,9 @@ program power_file
! other variables
integer(psb_ipk_) :: i,info,j,m_problem
integer(psb_ipk_) :: internal, m,ii,nnzero
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
&scale,resmx,resmxp, flops, bdwdth
real(psb_dpk_) :: tt1, tt2, tflops
complex(psb_dpk_) :: lambda, lambda2
real (psb_dpk_) :: norm, precisione
integer(psb_ipk_) :: nnzero
real(psb_dpk_) :: t1, t2, t3, t4
real(psb_dpk_) :: lambda, lambda2, norm
integer(psb_ipk_) :: nrhs, nrow, n_row, dim, nv, ne
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
@ -95,18 +96,24 @@ program power_file
! Hello world
!
if (iam == psb_root_) then
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
write(*,*) 'This is the ',trim(name),' sample program'
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
read(psb_inp_unit,*) precisione
write (psb_out_unit, '("The precision of the power method is ",F30.20)') precisione
read(psb_inp_unit,*) dim_H
read(psb_inp_unit,*) sigma
read(psb_inp_unit,*) ptype
read(psb_inp_unit,*) kmethd
end if
call psb_bcast(ictxt,mtrx_file)
call psb_bcast(ictxt,filefmt)
call psb_bcast(ictxt,ipart)
call psb_bcast(ictxt,precisione)
call psb_bcast(ictxt,dim_H)
call psb_bcast(ictxt,sigma)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,kmethd)
rhs_file = 'NONE'
afmt = 'CSR'
call psb_barrier(ictxt)
@ -130,7 +137,10 @@ program power_file
! For Harwell-Boeing we have a single file which may or may not
! contain an RHS.
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
case ('AD')
call psb_d_adj_read(aux_a,mtrx_file,1,iunit,info)
case default
info = -1
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
@ -149,8 +159,6 @@ program power_file
write(psb_err_unit,'("Ok, got an rhs ")')
b_col_glob =>aux_b(:,1)
else
write(psb_out_unit,'("Generating an rhs...")')
write(psb_out_unit,'(" ")')
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
@ -180,7 +188,6 @@ program power_file
! switch over different partition types
if (ipart == 0) then
call psb_barrier(ictxt)
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
allocate(ivg(m_problem),ipv(np))
do i=1,m_problem
call part_block(i,m_problem,np,ipv,nv)
@ -191,9 +198,6 @@ program power_file
else if (ipart == 2) then
if (iam==psb_root_) then
write(psb_out_unit,'("Partition type: graph")')
write(psb_out_unit,'(" ")')
! write(psb_err_unit,'("Build type: graph")')
call build_mtpart(aux_a,np)
endif
@ -204,86 +208,38 @@ program power_file
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call psb_geall(x_col,desc_a,info)
call x_col%set(zone)
call psb_geasb(x_col,desc_a,info)
t2 = psb_wtime() - t1
call psb_amx(ictxt, t2)
if (iam==psb_root_) then
write(psb_out_unit,'(" ")')
write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
write(psb_out_unit,'(" ")')
end if
call psb_barrier(ictxt)
t1 = psb_wtime()
call psb_spmm(zone,a,x_col,zzero,b_col,desc_a,info,'n') !we do b_col=a*x_col
norm = psb_norm2(b_col,desc_a,info)
norm = 1/norm
!normalisation of b_col in x_col
call psb_geaxpby(zzero,x_col,norm*zone,b_col,desc_a, info)
x_col=b_col
lambda=0
lambda2=1000
do while (abs(lambda-lambda2)>precisione)
!write (psb_out_unit, '("times",i20)')times
times=times+1
lambda2=lambda
call psb_spmm(zone,a,x_col,zzero,b_col,desc_a,info,'n')
norm = psb_norm2(b_col,desc_a,info)
lambda = psb_gedot(b_col,x_col,desc_a,info) ! lambda = (A*x_col dot x_col)
norm = 1/norm
call psb_geaxpby(zzero,x_col,norm*zone,b_col,desc_a, info)
x_col=b_col
!write (psb_out_unit, '("abs(lambda-lambda2)",F30.20)') abs(lambda-lambda2)
!write (psb_out_unit, '("lambda",F30.20,F30.20)') lambda
! write (psb_out_unit, '("precisione",F30.20,i20)') precisione, times
end do
call psb_barrier(ictxt)
call psb_d_power_vect(a,x_col,lambda,precisione,iter,500,desc_a,info)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
t1 = psb_wtime()
call psb_d_laplacian(a,b)
call psb_d_arnoldi(b,dim_H,eig,desc_a,ictxt,info)
nr = desc_a%get_global_rows()
annz = a%get_nzeros()
amatsize = psb_sizeof(a)
descsize = psb_sizeof(desc_a)
call psb_sum(ictxt,annz)
call psb_sum(ictxt,amatsize)
call psb_sum(ictxt,descsize)
t3 = psb_wtime()-t1
t1 = psb_wtime()
call psb_d_shift_invert(b,dim_H,sigma,eigmin,ptype,kmethd,desc_a,ictxt,iam,info)
call psb_barrier(ictxt)
t4 = psb_wtime() - t1
if (iam==psb_root_) then
flops = 2.d0*times*annz
tflops=flops
write(psb_out_unit,'("Matrix: ",a)') mtrx_file
write(psb_out_unit,'("Test on : ",i20," processors")') np
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
write(psb_out_unit,'("Number of flops (",i0," iters) : ",F20.0," ")') times,flops
flops = flops / (t2)
tflops = tflops / (tt2)
write (psb_out_unit, '("The biggest eigenvalue of A is : ",F20.3,F20.3)')lambda
!
! This computation is valid for CSR
!
nbytes = nr*(2*psb_sizeof_sp + psb_sizeof_int)+ &
& annz*(psb_sizeof_sp + psb_sizeof_int)
bdwdth = times*nbytes/(t2*1.d6)
bdwdth = times*nbytes/(tt2*1.d6)
open (15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
write (15,'(a,F20.6,i20,F20.4)')mtrx_file,lambda,iter,t2
write (15,'(F20.6,F20.6,F20.4)')real(eig(dim_H)),real(eig(dim_H-1)),t3
write (15,'(F20.6,F20.6,F20.4)')real(eigmin(dim_H)),real(eigmin(dim_H-1)),t4
close(15)
end if
call psb_gefree(b_col, desc_a,info)
call psb_gefree(x_col, desc_a,info)
call psb_spfree(a, desc_a,info)
call psb_spfree(b, desc_a,info)
call psb_spfree(aux_a, desc_a,info)
call psb_cdfree(desc_a,info)
9999 continue
@ -292,8 +248,7 @@ program power_file
end if
call psb_exit(ictxt)
stop
end program power_file
end program maxA_and_lapl_extremums

@ -1,308 +0,0 @@
!!$
!!$ Parallel Sparse BLAS version 2.3.1
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012
!!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! File: ppde.f90
!
program pdgenspmv
use psb_base_mod
use psb_util_mod
implicit none
! input parameters
character(len=20) :: kmethd, ptype
character(len=5) :: afmt
integer(psb_ipk_) :: idim
! miscellaneous
real(psb_dpk_), parameter :: one = 1.d0
real(psb_dpk_) :: t1, t2, tprec, flops, tflops, tt1, tt2, bdwdth
! sparse matrix and preconditioner
type(psb_dspmat_type) :: a
! descriptor
type(psb_desc_type) :: desc_a
! dense matrices
type(psb_d_vect_type) :: xv,bv, vtst
real(psb_dpk_), allocatable :: tst(:)
! blacs parameters
integer(psb_ipk_) :: ictxt, iam, np
! solver parameters
integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, nr
integer(psb_long_int_k_) :: amatsize, precsize, descsize, d2size, annz, nbytes
real(psb_dpk_) :: err, eps
integer(psb_ipk_), parameter :: times=10
! other variables
integer(psb_ipk_) :: info, i
character(len=20) :: name,ch_err
character(len=40) :: fname
info=psb_success_
call psb_init(ictxt)
call psb_info(ictxt,iam,np)
if (iam < 0) then
! This should not happen, but just in case
call psb_exit(ictxt)
stop
endif
if(psb_get_errstatus() /= 0) goto 9999
name='pde90'
call psb_set_errverbosity(itwo)
!
! Hello world
!
if (iam == psb_root_) then
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
write(*,*) 'This is the ',trim(name),' sample program'
end if
!
! get parameters
!
call get_parms(ictxt,afmt,idim)
!
! 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,xv,desc_a,afmt,&
& a1,a2,a3,b1,b2,b3,c,g,info)
call psb_barrier(ictxt)
t2 = psb_wtime() - t1
if(info /= psb_success_) then
info=psb_err_from_subroutine_
ch_err='psb_gen_pde3d'
call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if
if (iam == psb_root_) write(psb_out_unit,'("Overall matrix creation time : ",es12.5)')t2
if (iam == psb_root_) write(psb_out_unit,'(" ")')
call xv%set(done)
call psb_barrier(ictxt)
t1 = psb_wtime()
do i=1,times
call psb_spmm(done,a,xv,dzero,bv,desc_a,info,'n')
end do
call psb_barrier(ictxt)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
! FIXME: cache flush needed here
call psb_barrier(ictxt)
tt1 = psb_wtime()
do i=1,times
call psb_spmm(done,a,xv,dzero,bv,desc_a,info,'t')
end do
call psb_barrier(ictxt)
tt2 = psb_wtime() - tt1
call psb_amx(ictxt,tt2)
call psb_amx(ictxt,t2)
nr = desc_a%get_global_rows()
annz = a%get_nzeros()
amatsize = a%sizeof()
descsize = psb_sizeof(desc_a)
call psb_sum(ictxt,annz)
call psb_sum(ictxt,amatsize)
call psb_sum(ictxt,descsize)
if (iam == psb_root_) then
flops = 2.d0*times*annz
tflops=flops
write(psb_out_unit,'("Matrix: ell1 ",i0)') idim
write(psb_out_unit,'("Test on : ",i20," processors")') np
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
write(psb_out_unit,'("Number of flops (",i0," prod) : ",F20.0," ")') times,flops
flops = flops / (t2)
tflops = tflops / (tt2)
write(psb_out_unit,'("Time for ",i0," products (s) : ",F20.3)')times, t2
write(psb_out_unit,'("Time per product (ms) : ",F20.3)') t2*1.d3/(1.d0*times)
write(psb_out_unit,'("MFLOPS : ",F20.3)') flops/1.d6
write(psb_out_unit,'("Time for ",i0," products (s) (trans.): ",F20.3)') times,tt2
write(psb_out_unit,'("Time per product (ms) (trans.): ",F20.3)') tt2*1.d3/(1.d0*times)
write(psb_out_unit,'("MFLOPS (trans.): ",F20.3)') tflops/1.d6
!
! This computation is valid for CSR
!
nbytes = nr*(2*psb_sizeof_dp + psb_sizeof_int)+&
& annz*(psb_sizeof_dp + psb_sizeof_int)
bdwdth = times*nbytes/(t2*1.d6)
write(psb_out_unit,*)
write(psb_out_unit,'("MBYTES/S : ",F20.3)') bdwdth
bdwdth = times*nbytes/(tt2*1.d6)
write(psb_out_unit,'("MBYTES/S (trans): ",F20.3)') bdwdth
write(psb_out_unit,'("Storage type for DESC_A: ",a)') desc_a%get_fmt()
write(psb_out_unit,'("Total memory occupation for DESC_A: ",i12)')descsize
end if
!
! cleanup storage and exit
!
call psb_gefree(bv,desc_a,info)
call psb_gefree(xv,desc_a,info)
call psb_spfree(a,desc_a,info)
call psb_cdfree(desc_a,info)
if(info /= psb_success_) then
info=psb_err_from_subroutine_
ch_err='free routine'
call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if
9999 continue
if(info /= psb_success_) then
call psb_error(ictxt)
end if
call psb_exit(ictxt)
stop
contains
!
! get iteration parameters from standard input
!
subroutine get_parms(ictxt,afmt,idim)
integer(psb_ipk_) :: ictxt
character(len=*) :: afmt
integer(psb_ipk_) :: idim
integer(psb_ipk_) :: np, iam
integer(psb_ipk_) :: intbuf(10), ip
call psb_info(ictxt, iam, np)
if (iam == 0) then
read(psb_inp_unit,*) afmt
read(psb_inp_unit,*) idim
endif
call psb_bcast(ictxt,afmt)
call psb_bcast(ictxt,idim)
if (iam == 0) then
write(psb_out_unit,'("Testing 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")')
write(psb_out_unit,'(" ")')
end if
return
end subroutine get_parms
!
! print an error message
!
subroutine pr_usage(iout)
integer(psb_ipk_) :: iout
write(iout,*)'incorrect parameter(s) found'
write(iout,*)' usage: pde90 methd prec dim &
&[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,*)' istop stopping criterion 1, 2 '
write(iout,*)' itmax maximum number of iterations [500] '
write(iout,*)' itrace <=0 (no tracing, default) or '
write(iout,*)' >= 1 do tracing every itrace'
write(iout,*)' iterations '
end subroutine pr_usage
!
! functions parametrizing the differential equation
!
function b1(x,y,z)
use psb_base_mod, only : psb_dpk_
real(psb_dpk_) :: b1
real(psb_dpk_), intent(in) :: x,y,z
b1=1.d0/sqrt(3.d0)
end function b1
function b2(x,y,z)
use psb_base_mod, only : psb_dpk_
real(psb_dpk_) :: b2
real(psb_dpk_), intent(in) :: x,y,z
b2=1.d0/sqrt(3.d0)
end function b2
function b3(x,y,z)
use psb_base_mod, only : psb_dpk_
real(psb_dpk_) :: b3
real(psb_dpk_), intent(in) :: x,y,z
b3=1.d0/sqrt(3.d0)
end function b3
function c(x,y,z)
use psb_base_mod, only : psb_dpk_
real(psb_dpk_) :: c
real(psb_dpk_), intent(in) :: x,y,z
c=0.d0
end function c
function a1(x,y,z)
use psb_base_mod, only : psb_dpk_
real(psb_dpk_) :: a1
real(psb_dpk_), intent(in) :: x,y,z
a1=1.d0/80
end function a1
function a2(x,y,z)
use psb_base_mod, only : psb_dpk_
real(psb_dpk_) :: a2
real(psb_dpk_), intent(in) :: x,y,z
a2=1.d0/80
end function a2
function a3(x,y,z)
use psb_base_mod, only : psb_dpk_
real(psb_dpk_) :: a3
real(psb_dpk_), intent(in) :: x,y,z
a3=1.d0/80
end function a3
function g(x,y,z)
use psb_base_mod, only : psb_dpk_, done
real(psb_dpk_) :: g
real(psb_dpk_), intent(in) :: x,y,z
g = dzero
if (x == done) then
g = done
else if (x == dzero) then
g = exp(y**2-z**2)
end if
end function g
end program pdgenspmv

@ -32,6 +32,7 @@
program power_file_real
use psb_base_mod
use psb_util_mod
use psb_eigen_mod
implicit none
! input parameters
@ -97,6 +98,7 @@ program power_file_real
if (iam == psb_root_) then
!write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
!write(*,*) 'This is the ',trim(name),' sample program'
write(psb_out_unit,'("debut")')
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
@ -132,7 +134,7 @@ program power_file_real
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
case ('AD')
call adj_read(aux_a,mtrx_file,iunit,desc_a,info)
call psb_d_adj_read(aux_a,mtrx_file,iunit,info)
case default
info = -1
@ -212,12 +214,7 @@ program power_file_real
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call psb_geall(x_col,desc_a,info)
call x_col%set(done)
call psb_geasb(x_col,desc_a,info)
t2 = psb_wtime() - t1
call psb_amx(ictxt, t2)
if (iam==psb_root_) then
@ -227,25 +224,8 @@ program power_file_real
end if
call psb_barrier(ictxt)
call psb_spmm(done,a,x_col,dzero,b_col,desc_a,info,'n') !we do b_col=a*x_col
norm = psb_norm2(b_col,desc_a,info)
norm = 1/norm
!normalisation of b_col in x_col
call psb_geaxpby(dzero,x_col,norm,b_col,desc_a, info)
x_col=b_col
lambda=0
lambda2=1000
do while (abs(lambda-lambda2)>precisione .AND. times<300)
!if(iam==psb_root_) write (psb_out_unit,'(F20.6,i20)')abs(lambda-lambda2), times
times=times+1
lambda2=lambda
call psb_spmm(done,a,x_col,dzero,b_col,desc_a,info,'n')
norm = psb_norm2(b_col,desc_a,info)
lambda = psb_gedot(b_col,x_col,desc_a,info) ! lambda = (A*x_col dot x_col)
norm = 1/norm
call psb_geaxpby(dzero,x_col,norm,b_col,desc_a, info)
x_col=b_col
end do
call psb_d_power_vect(a,x_col,lambda,precisione,iter,500,desc_a,info)
call psb_barrier(ictxt)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
@ -270,7 +250,7 @@ program power_file_real
! write(psb_out_unit,'("Time for ",i0," iteration (s) : ",F20.3)')times, t2
! write(psb_out_unit,'("Time per iteration (ms) : ",F20.3)') t2*1.d3/(1.d0*times)
open(15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
write (15, '(a,F20.6,F20.4)')mtrx_file,lambda,t2
write (15, '(a,F20.6,i20)')mtrx_file,lambda,iter
! write (psb_out_unit, '("entropy vect propre :",g20.4)')entropy(x_col)
close(15)
end if

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,8 @@
SD.BA3.R+0.04.N16000.034.edg
AD
0
1.d-22
40
1.d-6
DIAG
CG

@ -0,0 +1,8 @@
SD.BA3.R-0.08.N02800.069.edg
AD
0
1.d-22
50
1.d-6
DIAG
CG

Binary file not shown.

@ -0,0 +1,3 @@
SD.BA3.R+0.04.N16000.034.edg
SD.BA3.R+0.04.N16000.034.mm
0

Binary file not shown.

Binary file not shown.

@ -0,0 +1,24 @@
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0285
143.134036 129.053083 0.0109
2.510859 7.561911 0.1639
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0286
143.134036 129.053083 0.0110
2.510859 7.561911 0.1644
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0285
143.134036 129.053083 0.0108
2.510859 7.561911 0.1628
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0286
143.134036 129.053083 0.0109
0.000000 1.259813 0.1624
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0288
143.134036 129.053083 0.0218
0.000000 1.258736 0.2702
SD.BA3.R+0.04.N16000.034.edg 28.440679 68 0.1576
442.050403 279.115048 0.0506
0.000000 0.242873 1.7951
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.1194
143.134036 129.053083 0.0970
0.000000 1.258736 0.2805
SD.BA3.R-0.08.N02800.069.edg 15.786965 68 0.0290
143.134036 129.053083 0.0190
0.000000 1.258736 0.2424

@ -1,298 +0,0 @@
!$
!!$ Parallel Sparse BLAS version 3.1
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
!!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
program s_file_spmv
use psb_base_mod
use psb_util_mod
implicit none
! input parameters
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
! sparse matrices
type(psb_sspmat_type) :: a, aux_a
! dense matrices
real(psb_spk_), allocatable, target :: aux_b(:,:), d(:)
real(psb_spk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
real(psb_spk_), pointer :: b_col_glob(:)
type(psb_s_vect_type) :: b_col, x_col, r_col
! communications data structure
type(psb_desc_type):: desc_a
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
& methd, istopc, irst, nr
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
real(psb_spk_) :: err, eps,cond
character(len=5) :: afmt
character(len=20) :: name
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_), parameter :: times=10
integer(psb_ipk_) :: iparm(20)
! other variables
integer(psb_ipk_) :: i,info,j,m_problem
integer(psb_ipk_) :: internal, m,ii,nnzero
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
&scale,resmx,resmxp, flops, bdwdth
real(psb_dpk_) :: tt1, tt2, tflops
integer(psb_ipk_) :: nrhs, nrow, n_row, dim, nv, ne
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
call psb_init(ictxt)
call psb_info(ictxt,iam,np)
if (iam < 0) then
! This should not happen, but just in case
call psb_exit(ictxt)
stop
endif
name='s_file_spmv'
if(psb_get_errstatus() /= 0) goto 9999
info=psb_success_
call psb_set_errverbosity(2)
!
! Hello world
!
if (iam == psb_root_) then
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
write(*,*) 'This is the ',trim(name),' sample program'
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
end if
call psb_bcast(ictxt,mtrx_file)
call psb_bcast(ictxt,filefmt)
call psb_bcast(ictxt,ipart)
rhs_file = 'NONE'
afmt = 'CSR'
call psb_barrier(ictxt)
t1 = psb_wtime()
! read the input matrix to be processed and (possibly) the rhs
nrhs = 1
if (iam==psb_root_) then
select case(psb_toupper(filefmt))
case('MM')
! For Matrix Market we have an input file for the matrix
! and an (optional) second file for the RHS.
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
if (info == psb_success_) then
if (rhs_file /= 'NONE') then
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
end if
end if
case ('HB')
! For Harwell-Boeing we have a single file which may or may not
! contain an RHS.
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
case default
info = -1
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
end select
if (info /= psb_success_) then
write(psb_err_unit,*) 'Error while reading input matrix '
call psb_abort(ictxt)
end if
m_problem = aux_a%get_nrows()
call psb_bcast(ictxt,m_problem)
! At this point aux_b may still be unallocated
if (psb_size(aux_b,dim=1)==m_problem) then
! if any rhs were present, broadcast the first one
write(psb_err_unit,'("Ok, got an rhs ")')
b_col_glob =>aux_b(:,1)
else
write(psb_out_unit,'("Generating an rhs...")')
write(psb_out_unit,'(" ")')
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob => aux_b(:,1)
do i=1, m_problem
b_col_glob(i) = 1.d0
enddo
endif
call psb_bcast(ictxt,b_col_glob(1:m_problem))
else
call psb_bcast(ictxt,m_problem)
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob =>aux_b(:,1)
call psb_bcast(ictxt,b_col_glob(1:m_problem))
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")')
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,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else if (ipart == 2) then
if (iam==psb_root_) then
write(psb_out_unit,'("Partition type: graph")')
write(psb_out_unit,'(" ")')
! write(psb_err_unit,'("Build type: graph")')
call build_mtpart(aux_a,np)
endif
call psb_barrier(ictxt)
call distr_mtpart(psb_root_,ictxt)
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call psb_geall(x_col,desc_a,info)
call x_col%set(sone)
call psb_geasb(x_col,desc_a,info)
t2 = psb_wtime() - t1
call psb_amx(ictxt, t2)
if (iam==psb_root_) then
write(psb_out_unit,'(" ")')
write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
write(psb_out_unit,'(" ")')
end if
call psb_barrier(ictxt)
t1 = psb_wtime()
do i=1,times
call psb_spmm(sone,a,x_col,szero,b_col,desc_a,info,'n')
end do
call psb_barrier(ictxt)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
! FIXME: cache flush needed here
call psb_barrier(ictxt)
tt1 = psb_wtime()
do i=1,times
call psb_spmm(sone,a,x_col,szero,b_col,desc_a,info,'t')
end do
call psb_barrier(ictxt)
tt2 = psb_wtime() - tt1
call psb_amx(ictxt,tt2)
nr = desc_a%get_global_rows()
annz = a%get_nzeros()
amatsize = psb_sizeof(a)
descsize = psb_sizeof(desc_a)
call psb_sum(ictxt,annz)
call psb_sum(ictxt,amatsize)
call psb_sum(ictxt,descsize)
if (iam==psb_root_) then
flops = 2.d0*times*annz
tflops=flops
write(psb_out_unit,'("Matrix: ",a)') mtrx_file
write(psb_out_unit,'("Test on : ",i20," processors")') np
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
write(psb_out_unit,'("Number of flops (",i0," prod) : ",F20.0," ")') times,flops
flops = flops / (t2)
tflops = tflops / (tt2)
write(psb_out_unit,'("Time for ",i0," products (s) : ",F20.3)')times, t2
write(psb_out_unit,'("Time per product (ms) : ",F20.3)') t2*1.d3/(1.d0*times)
write(psb_out_unit,'("MFLOPS : ",F20.3)') flops/1.d6
write(psb_out_unit,'("Time for ",i0," products (s) (trans.): ",F20.3)') times,tt2
write(psb_out_unit,'("Time per product (ms) (trans.): ",F20.3)') tt2*1.d3/(1.d0*times)
write(psb_out_unit,'("MFLOPS (trans.): ",F20.3)') tflops/1.d6
!
! This computation is valid for CSR
!
nbytes = nr*(2*psb_sizeof_sp + psb_sizeof_int)+ &
& annz*(psb_sizeof_sp + psb_sizeof_int)
bdwdth = times*nbytes/(t2*1.d6)
write(psb_out_unit,*)
write(psb_out_unit,'("MBYTES/S : ",F20.3)') bdwdth
bdwdth = times*nbytes/(tt2*1.d6)
write(psb_out_unit,'("MBYTES/S (trans): ",F20.3)') bdwdth
end if
call psb_gefree(b_col, desc_a,info)
call psb_gefree(x_col, desc_a,info)
call psb_spfree(a, desc_a,info)
call psb_cdfree(desc_a,info)
9999 continue
if(info /= 0) then
call psb_error(ictxt)
end if
call psb_exit(ictxt)
stop
end program s_file_spmv

@ -1,471 +0,0 @@
!!$
!!$ Parallel Sparse BLAS version 3.1
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
!!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
program shift_invert
use psb_base_mod
use psb_prec_mod
use psb_krylov_mod
use psb_util_mod
implicit none
! input parameters
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
! sparse matrices and preconditioner
type(psb_dspmat_type) :: a, aux_a, id, a2, b
type(psb_d_csr_sparse_mat)::acsr, icsr
type(psb_dprec_type) :: prec
! dense matrices
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
complex(psb_dpk_), allocatable, target :: H(:,:),eig(:),work(:),Z(:,:)
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
real(psb_dpk_), pointer :: b_col_glob(:)
type(psb_d_vect_type) :: b_col, x_col, r_col
type (psb_d_vect_type), allocatable, target :: V(:)
integer(psb_ipk_), allocatable , save :: indexes(:)
! communications data structure
type(psb_desc_type):: desc_a
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
& methd, istopc, irst, nr, sort, annz
integer(psb_long_int_k_) :: amatsize, descsize, nbytes
real(psb_dpk_) :: err, eps,cond
character(len=5) :: afmt
character(len=20) :: name, ch_err
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: times=0
integer(psb_ipk_) :: iparm(20)
! other variables
integer(psb_ipk_) :: i,info,j,m_problem
integer(psb_ipk_) :: internal, m,ii,nnzero,ji
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
&scale,resmx,resmxp, flops, bdwdth
real(psb_dpk_) :: tt1, tt2, tflops, tprec, sigma,dotprod,norm
integer(psb_ipk_) :: nrhs, nrow, n_row, dim, nv, ne,dim_H
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
call psb_init(ictxt)
call psb_info(ictxt,iam,np)
if (iam < 0) then
! This should not happen, but just in case
call psb_exit(ictxt)
stop
endif
name='shift_invert_real'
if(psb_get_errstatus() /= 0) goto 9999
info=psb_success_
call psb_set_errverbosity(2)
!
! Hello world
!
if (iam == psb_root_) then
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
write(*,*) 'This is the ',trim(name),' sample program'
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
read(psb_inp_unit,*) ptype
read(psb_inp_unit,*) kmethd
read(psb_inp_unit,*) dim_H
read(psb_inp_unit,*) sigma
read(psb_inp_unit,*) eps
end if
call psb_bcast(ictxt,mtrx_file)
call psb_bcast(ictxt,filefmt)
call psb_bcast(ictxt,ipart)
call psb_bcast(ictxt,dim_H)
call psb_bcast(ictxt,kmethd)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,sigma)
call psb_bcast(ictxt,eps)
rhs_file = 'NONE'
afmt = 'CSR'
call psb_barrier(ictxt)
t1 = psb_wtime()
! read the input matrix to be processed and (possibly) the rhs
nrhs = 1
if (iam==psb_root_) then
select case(psb_toupper(filefmt))
case('MM')
! For Matrix Market we have an input file for the matrix
! and an (optional) second file for the RHS.
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
if (info == psb_success_) then
if (rhs_file /= 'NONE') then
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
end if
end if
case ('HB')
! For Harwell-Boeig we have a single file which may or may not
! contain an RHS.
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
case ('AD')
call adj_read(aux_a,mtrx_file,iunit,desc_a,info)
case default
info = -1
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
end select
if (info /= psb_success_) then
write(psb_err_unit,*) 'Error while reading input matrix '
call psb_abort(ictxt)
end if
m_problem = aux_a%get_nrows()
annz=aux_a%get_nzeros()
call psb_bcast(ictxt,m_problem)
! At this point aux_b may still be unallocated
if (psb_size(aux_b,dim=1)==m_problem) then
! if any rhs were present, broadcast the first one
write(psb_err_unit,'("Ok, got an rhs ")')
b_col_glob =>aux_b(:,1)
else
! write(psb_out_unit,'("Generating an rhs...")')
! write(psb_out_unit,'(" ")')
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob => aux_b(:,1)
do i=1, m_problem
b_col_glob(i) = 1.d0
enddo
endif
call psb_bcast(ictxt,b_col_glob(1:m_problem))
else
call psb_bcast(ictxt,m_problem)
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob =>aux_b(:,1)
call psb_bcast(ictxt,b_col_glob(1:m_problem))
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")')
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,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else if (ipart == 2) then
if (iam==psb_root_) then
!write(psb_out_unit,'("Partition type: graph")')
!write(psb_out_unit,'(" ")')
! write(psb_err_unit,'("Build type: graph")')
call build_mtpart(aux_a,np)
endif
call psb_barrier(ictxt)
call distr_mtpart(psb_root_,ictxt)
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call lapl(a,b)
!
!a2=a-sigma*id
!
!sigma = 100
call csshift(b,a2,sigma,ictxt)
!
! prepare the preconditioner.
!
!if(iam == psb_root_) write(psb_out_unit,'("Setting preconditioner to : ", a) ') ptype
call psb_precinit(prec,ptype,info)
call psb_barrier(ictxt)
!t1 = psb_wtime()
call psb_precbld(a2,desc_a,prec,info)
if(info /= psb_success_) then
info=psb_err_from_subroutine_
ch_err='psb_precbld'
call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if
tprec = psb_wtime()-t1
if (iam == psb_root_) write(psb_out_unit,'("Preconditioner time : ",es12.5)')tprec
allocate(H(dim_H,dim_H))
allocate (V(dim_H+1))
do i=1,dim_H+1
call psb_geall(V(i),desc_a,info)
call psb_geasb(V(i),desc_a,info)
enddo
call V(1)%set(done)
call psb_amx(ictxt, t2)
!if (iam==psb_root_) then
! write(psb_out_unit,'(" ")')
! write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
! write(psb_out_unit,'(" ")')
!end if
call psb_barrier(ictxt)
t2 = psb_wtime()-t1-tprec
if (iam == psb_root_) write(psb_out_unit,'("Preconditioner time : ",es12.5)')t2
norm = psb_norm2(V(1),desc_a, info)
H(2,1)=cmplx(norm,0.0)
norm = 1/norm
call psb_geaxpby(dzero,V(1),norm,V(1),desc_a,info)
do i=2,dim_H+1
!A*V(i)=V(i-1)
call psb_krylov(kmethd,a2,prec,V(i-1),V(i),eps,desc_a,info,&
& itmax=1000,iter=iter,err=err,itrace=-1,istop=2,irst=002)
!if (iam==psb_root_) write(*,'("iter : "i20)') iter
! Gram-Schmitt's reorthogonalisation
do j=1,i-1
dotprod= psb_gedot(V(i),V(j),desc_a,info) ! dotprod = (V(i) dot V(j))
call psb_geaxpby(-dotprod,V(j),done,V(i),desc_a, info)!V(i)=V(i)-V(j)*dotprod
H(j,i-1)=cmplx(dotprod,0.0)
end do
norm = psb_norm2(V(i),desc_a,info)
if (i .ne. dim_H+1) then
H(i,i-1)=cmplx(norm,0.0)
endif
norm=1/norm
call psb_geaxpby(dzero,V(i),norm,V(i),desc_a, info)
enddo
t2=psb_wtime()-t1-tprec
if (iam==psb_root_) write (psb_out_unit,'("temps de arnoldi : " ,es12.5 )') t2
if(iam==psb_root_) then
allocate(eig(dim_H),work(dim_h),Z(dim_H,dim_H),stat = info)
call ZHSEQR('E','N',dim_H,1,dim_H,H,dim_H,eig,Z,dim_H,work,dim_H,info)
!sort H's eigenvalues
allocate(indexes(1:dim_H))
call psb_qsort(eig,indexes,psb_alsort_up_,psb_sort_ovw_idx_)
do i=1,dim_H
eig (i) = cmplx(sigma,0.0)+1/eig(i)
!write(psb_out_unit, '("eig(i), i", g20.4, i10)')real(eig(i)),i
enddo
end if
call psb_barrier(ictxt)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
nr = desc_a%get_global_rows()
amatsize = psb_sizeof(a)
descsize = psb_sizeof(desc_a)
call psb_sum(ictxt,annz)
call psb_sum(ictxt,amatsize)
call psb_sum(ictxt,descsize)
if (iam==psb_root_) then
flops = 2.d0*times*annz
tflops=flops
!write(psb_out_unit,'("Matrix: ",a)') mtrx_file
!write(psb_out_unit,'("Test on : ",i20," processors")') np
!write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
!write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
!write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
!write(psb_out_unit,'("Number of flops (",i0," iters) : ",F20.0," ")') times,flops
!write(*,'("eigenvalues near from ", g20.4," : ")') sigma
!do i=dim_H/3,dim_H
! write(psb_out_unit,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
!enddo
open(15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
write (15,'(F20.6,F20.6,F20.4)')real(eig(dim_H-1)),real(eig(dim_H)),t2
close(15)
DEALLOCATE (work,eig,Z)
end if
call psb_gefree(b_col, desc_a,info)
call psb_gefree(x_col, desc_a,info)
call psb_spfree(a, desc_a,info)
call psb_spfree(a2, desc_a,info)
call psb_spfree(b, desc_a,info)
call psb_cdfree(desc_a,info)
do i=1,dim_H
call psb_gefree(V(i), desc_a,info)
enddo
DEALLOCATE (H)
DEALLOCATE (V)
9999 continue
if(info /= 0) then
call psb_error(ictxt)
end if
call psb_exit(ictxt)
stop
contains
subroutine csshift(a,b,sigma,ictx)
type(psb_dspmat_type), intent(in) :: a
type(psb_dspmat_type), intent(out) :: b
real(psb_dpk_) :: sigma
integer(psb_ipk_)::ictx
type(psb_d_coo_sparse_mat) :: acoo
integer(psb_ipk_) :: nz,n,info,i
call a%cp_to(acoo)
if (sigma/=0.0) then
nz=acoo%get_nzeros()
n=a%get_nrows()
call acoo%reallocate(nz+n)
call acoo%set_dupl(psb_dupl_add_)
do i=1,n
acoo%val(nz+i)=-sigma
acoo%ia(nz+i)= i
acoo%ja(nz+i)= i
enddo
call acoo%set_nzeros(nz+n)
call acoo%fix(info)
! do i=1,nz
! if(acoo%ja(i)==acoo%ia(i)) then
! write(psb_out_unit,'(i10,i10,g20.4)')acoo%ja(i),i, acoo%val(i)
! end if
! enddo
!write(psb_out_unit,'("autant de nzeros apres fix ?",i10)') acoo%get_nzeros()-nz
end if
call b%mv_from(acoo)
call b%cscnv(info,'CSR')
end subroutine csshift
subroutine adj_read (a,filename,iunit,desc_a,info)
type(psb_dspmat_type), intent (inout) :: a
character(len=40) :: filename
integer (psb_ipk_) :: iunit
type(psb_desc_type):: desc_a
integer (psb_ipk_) :: info
integer(psb_ipk_) :: i,nnzero,nrows
integer (psb_ipk_) :: iError
type(psb_d_coo_sparse_mat) :: acoo
open(iunit, FILE=filename, STATUS="OLD", ACTION="READ")
read(iunit, *) nrows , nnzero
call acoo%allocate(nrows,nrows,nnzero)
do i = 1,nnzero
read(iunit, *) acoo%ia(i),acoo%ja(i)
acoo%ia(i)=acoo%ia(i)+1
acoo%ja(i)=acoo%ja(i)+1
acoo%val(i)=1.0
end do
close(UNIT=iunit)
!call psb_spall(a,desc_a,info,nnzero)
!call psb_spins(nnzero, ia, ja, val, a, desc_a, info)
call acoo%set_nzeros(nnzero)
call acoo%fix(info)
call a%mv_from(acoo)
call a%cscnv(info,type='csr')
end subroutine adj_read
subroutine lapl(a,b)
type(psb_dspmat_type),intent(in)::a
type(psb_dspmat_type),intent(out)::b
type(psb_d_coo_sparse_mat) :: acoo
integer(psb_ipk_) :: nz,n,info,i
real(psb_dpk_), allocatable :: K(:)
call a%cp_to(acoo)
nz=acoo%get_nzeros()
n=a%get_nrows()
allocate(K(n))
do i=1,n
K(i)=0
enddo
do i=1,nz
K(acoo%ia(i))=K(acoo%ia(i))+acoo%val(i)
acoo%val(i)=-acoo%val(i)
enddo
call acoo%reallocate(nz+n)
call acoo%set_dupl(psb_dupl_add_)
do i=1,n
acoo%val(nz+i)=K(i)
acoo%ia(nz+i)= i
acoo%ja(nz+i)= i
enddo
call acoo%set_nzeros(nz+n)
call acoo%fix(info)
do i=1,nz
! if(acoo%ja(i)==acoo%ia(i)) then
! write(psb_out_unit,'(i10,i10,g20.4)')acoo%ia(i),acoo%ja(i),acoo%val(i)
! end if
enddo
call b%mv_from(acoo)
call b%cscnv(info,'CSR')
deallocate (K)
end subroutine lapl
end program shift_invert

@ -1,20 +0,0 @@
program test_chseqr
complex , dimension (1:3,1:3) :: H,Z,Vr
complex , dimension (1:6,1:6) :: Rwork
complex, dimension (1:3) :: eing,work
integer :: info, N
N=3
H = reshape((/ (1.0,0),(0,0), (2,0), (2,0) , (3,0) , (-4,0) , (0,0) , (0,0) , (2,0) /), shape(H))
do i=1,N
do j=1,N
write(*,'("H : "i5,i5,2x,g20.4,g20.4)')i,j,real(H(i,j)),aimag(H(i,j))
end do
end do
call CHSEQR('E','N',N,1,N,H,N,eing,Z,N,work,N,info)
!call CGEEV('N','N',N,H,N,eing,Z,N,Vr,N,work,3*N,Rwork,info)
do i=1,N
write(*,'("valeur propre de H : "i5, i5, g20.4,g20.4)')info, i,real(eing(i)),aimag(eing(i))
enddo
end program test_chseqr

@ -0,0 +1,8 @@
Real10BA10000RLSext01new
AD
0
1.d-22
50
1.d-6
DIAG
CG

@ -0,0 +1,9 @@
5699880
Real10BA10000RLSext01
AD
0
1.d-22
50
1.d-6
DIAG
CG

@ -0,0 +1,514 @@
599880 22.280849 412.034730 334.059758 0.000000 7.3341
609880 22.283897 412.034989 334.059926 0.066754 12.9601
619880 22.286317 412.035210 334.060226 0.136119 12.3839
629880 22.289185 412.035469 334.060500 0.207638 12.4973
599880 22.280849 412.034730 334.059758 0.000000 7.3747
609880 22.283897 412.034989 334.059926 0.066754 12.9525
619880 22.286317 412.035210 334.060226 0.136119 12.4758
629880 22.289185 412.035469 334.060500 0.207638 12.3720
639880 22.291470 412.035697 334.060924 0.276237 12.7866
649880 22.293578 412.035905 334.061310 0.345216 13.1720
659880 22.297185 412.036202 334.061639 0.413057 13.4491
669880 22.301392 412.036430 334.061904 0.481690 13.3403
679878 22.304242 412.036678 334.062190 0.550060 13.4195
689878 22.309115 412.036979 334.062508 0.618186 13.9244
699878 22.313725 412.037298 334.062875 0.686089 14.0469
709878 22.316885 412.037545 334.063227 0.751790 14.4470
719878 22.320308 412.037787 334.063615 0.818350 14.4879
729878 22.323288 412.037995 334.063891 0.885914 14.8316
739878 22.326378 412.038221 335.063482 0.955399 15.1621
749878 22.331498 412.038530 335.063872 1.024458 15.0778
759878 22.335437 412.038741 335.064154 1.090905 15.2194
769876 22.338829 412.038986 335.064645 1.154286 15.2606
779876 22.342413 412.039247 335.064987 1.219053 15.9022
789876 22.348762 412.039551 335.065340 1.281288 15.8190
799876 22.353287 412.039787 335.065748 1.347410 16.1712
809876 22.356657 412.040005 335.066113 1.410404 16.3639
819874 22.360493 412.040254 335.066868 1.477553 16.2262
829874 22.364791 412.040527 335.067168 1.539684 16.3787
839874 22.369015 412.040707 335.067482 1.598971 16.4739
849874 22.375641 412.040939 335.067985 1.656912 16.7519
859874 22.380918 412.041193 335.068581 1.715046 16.6065
869874 22.387483 412.041505 335.068912 1.755545 17.1003
879874 22.408862 413.041646 335.069225 1.786060 17.1942
889874 22.414055 413.041874 335.069403 1.790095 17.2551
899874 22.419776 413.042179 335.069701 1.874591 17.3167
909874 22.426828 413.042426 335.069913 1.879797 17.4846
919874 22.434166 413.042694 335.070308 1.898253 17.5954
929874 22.441119 413.042948 335.070566 1.922765 17.6845
939872 22.447904 413.043140 335.070926 1.925938 18.0563
949872 22.455455 413.043471 335.071285 1.929619 17.8733
959872 22.463212 413.043688 335.071579 1.930716 18.2561
969872 22.471481 413.043957 335.071959 1.973006 17.9314
979872 22.495218 414.044145 335.072306 1.974280 17.8594
989870 22.504406 414.044380 335.072681 2.009216 17.9090
999870 22.513752 414.044681 335.073040 2.010267 18.1734
1009870 22.523005 414.044924 336.073574 2.012036 18.2442
1019870 22.535356 414.045244 336.073919 2.013290 18.4018
1029870 22.548691 414.045548 336.074223 2.014340 18.4366
1039868 22.559913 414.045797 337.073753 2.031749 18.3329
1049868 22.572916 414.046113 337.074086 2.033588 18.4874
1059868 22.588356 414.046478 337.074516 2.035190 18.8495
1069868 22.602470 414.046744 337.074846 2.036562 18.9872
1079868 22.616332 414.047022 337.075246 2.038851 19.1930
1089868 22.633394 414.047384 337.075573 2.040584 19.3031
1099868 22.647075 414.047613 337.075914 2.186090 19.3162
1109868 22.675986 415.047662 338.075613 2.187964 19.3963
1119866 22.692139 415.047961 338.076018 2.264627 19.3024
1129866 22.711234 415.048326 338.076739 2.265741 19.6045
1139866 22.742661 416.048407 339.076380 2.268247 19.6979
1149864 22.760834 416.048698 339.076782 2.291696 19.2621
1159860 22.791919 417.048730 339.077048 2.293625 19.4463
1169860 22.811605 417.048961 339.077363 2.294004 19.5279
1179858 22.833702 417.049242 339.077686 2.294249 19.6345
1189858 22.857769 417.049520 339.078043 2.294951 19.7480
1199858 22.879599 417.049792 339.078450 2.387649 19.8208
1209858 22.902783 417.050121 339.078726 2.388011 19.7962
1219858 22.927410 417.050402 339.079049 2.388610 19.8331
1229858 22.951282 417.050649 339.079504 2.395586 19.7860
1239858 22.994739 419.050517 339.079766 2.407824 19.7728
1249854 23.021423 419.050800 339.080062 2.408325 19.7020
1259854 23.055661 420.050825 339.080389 2.438144 19.8017
1269854 23.082930 420.051080 339.080797 2.440255 19.7034
1279854 23.113232 420.051364 340.080499 2.440890 19.6644
1289852 23.140905 420.051640 340.080796 2.441020 19.6409
1299850 23.169995 420.051944 340.081083 2.461648 19.6145
1309848 23.201186 420.052241 340.081368 2.505790 19.7392
1319848 23.230740 420.052420 340.081690 2.523986 19.7534
1329848 23.263363 420.052689 340.082030 2.524276 19.8169
1339848 23.295956 420.052950 340.082439 2.527708 19.5561
1349848 23.331128 420.053203 340.082931 2.528309 19.8323
1359848 23.364556 420.053455 340.083618 2.528876 19.8550
1369848 23.409707 421.053630 340.083926 2.544925 19.9364
1379846 23.443272 421.053883 340.084342 2.564153 20.0213
1389846 23.480361 421.054145 340.084639 2.582365 19.9981
1399846 23.519104 421.054401 340.084980 2.582994 20.0002
1409842 23.555796 421.054689 340.085270 2.583122 20.2150
1419840 23.593922 421.054923 340.085591 2.674416 20.3962
1429838 23.633796 421.055219 340.085876 2.674645 19.9592
1439838 23.674019 421.055508 340.086235 2.719118 19.9505
1449838 23.711995 421.055771 340.086568 2.719964 19.9876
1459838 23.752227 421.055929 340.087368 2.722152 20.3041
1469836 23.797593 422.055921 340.087832 2.722335 20.2348
1479836 23.838135 422.056244 340.088146 2.775366 20.3697
1489832 23.881308 422.056527 340.088464 2.775410 20.1571
1499830 23.922222 422.056805 340.088840 2.775670 20.3967
1509830 23.969074 423.056882 340.089169 2.776133 20.4462
1519826 24.012328 423.057093 340.089403 2.776342 20.5032
1529820 24.056633 423.057333 340.089733 2.776930 20.4972
1539818 24.101310 423.057623 340.090127 2.777172 20.1194
1549818 24.145668 423.057883 340.090477 2.777525 20.3315
1559818 24.188138 423.058127 340.090759 2.777873 20.0905
1569816 24.233222 423.058443 340.091199 2.778380 20.3641
1579816 24.279640 423.058720 340.091551 2.778573 20.1063
1589816 24.328204 423.059010 340.092701 2.778767 20.3297
1599814 24.374459 423.059188 340.093064 2.779011 20.4091
1609812 24.422859 423.059476 340.093357 2.854738 20.2252
1619812 24.470074 423.059672 340.093590 2.856557 20.3911
1629812 24.518209 423.059875 341.093105 2.856620 20.3614
1639812 24.567210 423.060143 341.093504 2.857508 20.4881
1649812 24.620523 423.060496 342.093149 2.857608 20.4232
1659802 24.671559 423.060790 343.092817 2.857842 20.7873
1669802 24.724300 423.061105 344.092435 2.857980 20.2366
1679800 24.776756 423.061379 345.091973 2.858056 20.2997
1689800 24.830024 423.061753 345.092344 2.862483 20.3361
1699798 24.883325 423.062046 345.092662 2.862547 20.1967
1709790 24.935581 423.062341 345.093129 2.862614 20.7402
1719790 24.989511 423.062650 345.093751 2.862674 20.6929
1729788 25.041520 423.062869 345.093979 2.862769 20.7296
1739788 25.096026 424.062817 346.093475 2.862971 21.0566
1749788 25.150825 424.063090 346.093802 2.863075 21.0250
1759786 25.205660 424.063378 346.094128 2.863122 20.9640
1769784 25.259794 424.063596 346.094372 2.863173 20.8985
1779782 25.314356 424.063926 346.094798 2.863282 21.4909
1789782 25.373210 425.064025 346.095178 2.863372 21.0100
1799780 25.429238 425.064210 346.095507 2.863406 20.9695
1809780 25.483806 425.064498 346.095768 3.603074 20.5313
1819780 25.545082 425.064771 346.096057 3.607187 20.9247
1829776 25.604321 425.065036 346.096410 3.627798 20.8183
1839774 25.663172 425.065278 347.096314 3.628118 20.6746
1849770 25.720526 425.065555 347.096747 3.628345 20.8617
1859768 25.781309 425.065809 347.097069 3.637776 20.7435
1869766 25.839673 425.066094 348.096664 3.643067 20.8285
1879766 25.902007 425.066415 348.097339 3.643296 20.8433
1889760 25.961658 425.066702 348.098006 3.643599 21.2226
1899758 26.020861 425.066959 348.098282 3.643907 21.0110
1909754 26.081258 425.067265 348.098651 3.644170 21.0230
1919754 26.141047 425.067576 348.099023 3.644321 20.8805
1929754 26.201916 425.067890 348.099369 3.644575 21.3060
1939752 26.263743 425.068158 348.099787 3.644863 21.0380
1949752 26.326408 425.068402 348.100098 3.645078 21.2750
1959750 26.388772 425.068631 348.100508 3.649935 20.9805
1969750 26.453365 425.068920 348.100891 3.650075 21.2374
1979748 26.516725 425.069225 348.101236 3.657931 20.7239
1989748 26.578761 425.069530 348.101630 3.658047 20.8286
1999744 26.643096 425.069831 348.102015 3.658476 20.8971
2009740 26.710869 425.070138 348.102405 4.536354 20.8364
2019738 26.774139 425.070393 348.102730 4.536568 20.8530
2029734 26.838004 425.070607 348.103419 4.536836 20.9150
2039732 26.901992 425.070885 348.103701 4.540499 20.9849
2049732 26.967733 425.071155 348.104170 4.540723 21.0056
2059728 27.032527 425.071454 348.104676 4.541104 21.1952
2069724 27.099021 426.071440 348.105018 4.541357 21.1514
2079724 27.163736 426.071639 348.105277 4.541564 21.1527
2089720 27.230522 426.071985 348.105536 4.541848 21.2171
2099714 27.295699 426.072191 348.105871 4.542241 21.2397
2109712 27.364938 426.072472 348.106226 4.542641 21.4639
2119708 27.433047 426.072753 348.106597 4.542772 21.5006
2129708 27.500346 426.073077 348.106885 4.542953 21.5295
2139704 27.567326 426.073432 348.107214 4.543295 21.4808
2149702 27.635746 426.073769 348.107522 4.543649 21.4151
2159694 27.703893 426.074022 348.107910 4.547995 21.7526
2169692 27.771575 426.074317 348.108175 4.548302 21.9624
2179690 27.841925 426.074625 348.108477 4.686357 21.6358
2189690 27.910168 426.074922 348.108835 4.688025 21.7742
2199688 27.980651 426.075135 348.109146 4.694364 21.7088
2209684 28.051400 426.075440 348.109460 4.694606 21.5484
2219684 28.124075 427.075463 348.109815 4.698672 21.5477
2229674 28.196389 428.075455 349.109278 4.698977 21.9741
2239672 28.266798 428.075699 349.109624 5.454830 21.4397
2249668 28.338641 428.076004 349.109871 5.480259 21.7898
2259668 28.409693 428.076257 349.110594 5.554180 21.5045
2269666 28.480109 428.076497 349.110875 5.560842 21.6678
2279662 28.552291 428.076725 349.111271 5.562882 21.8899
2289658 28.623975 428.077037 349.111655 5.563061 22.2255
2299656 28.698136 428.077402 349.112042 5.563226 21.7392
2309652 28.771795 428.077678 350.111782 5.563584 21.8535
2319648 28.846186 428.077904 350.112214 5.563764 22.0583
2329642 28.920675 428.078208 351.111756 6.459382 22.0110
2339640 28.994733 428.078527 351.112399 6.455159 21.9050
2349640 29.070192 428.078796 351.112797 6.455745 21.9964
2359636 29.142792 428.079073 351.113182 6.459677 22.0075
2369634 29.216921 428.079318 351.113512 6.460169 22.0281
2379634 29.291362 428.079591 351.113893 6.461312 22.1924
2389632 29.366009 428.079848 351.114175 6.462056 22.4472
2399632 29.443274 428.080064 351.114617 6.464707 22.3692
2409630 29.519818 428.080283 351.114930 6.465635 22.5182
2419630 29.595385 429.080256 351.115231 6.466388 22.2701
2429630 29.672326 429.080591 351.115642 6.505684 22.5417
2439630 29.748362 429.080870 351.115853 6.505963 22.5291
2449624 29.824307 429.081223 351.116216 6.506260 22.7832
2459622 29.899547 429.081472 351.116528 6.506558 22.4982
2469622 29.975563 429.081684 351.116868 6.513720 22.6113
2479616 30.053364 429.082006 351.117093 6.514220 22.9253
2489614 30.129129 430.081997 351.117441 6.534784 22.5982
2499610 30.205771 430.082312 351.117774 6.535100 22.7252
2509606 30.282868 430.082650 351.118036 6.535358 22.8817
2519606 30.362454 431.082684 351.118815 6.541772 22.5671
2529606 30.441168 431.083027 351.119258 6.542237 22.5128
2539602 30.518058 431.083313 351.119594 6.546694 22.5882
2549596 30.595680 431.083537 351.119887 6.548344 22.8867
2559592 30.673660 432.083461 351.120232 6.551979 23.1209
2569588 30.751165 432.083769 351.120714 6.614303 23.7308
2579580 30.830803 432.084079 351.121158 6.614515 23.9344
2589580 30.910286 432.084367 351.121596 6.614637 23.9384
2599580 30.990653 432.084693 351.121932 6.615288 23.8732
2609576 31.070335 432.084981 351.122205 7.450167 23.8313
2619576 31.151264 432.085264 351.122537 7.507775 23.7809
2629572 31.230213 432.085508 351.122927 7.508138 23.9583
2639570 31.309966 433.085488 351.123243 7.508313 26.1486
2649568 31.390546 433.085755 351.123998 7.514952 28.4993
2659568 31.470417 433.085992 351.124245 7.515399 23.5978
2669564 31.550747 433.086265 351.124714 7.524466 24.0494
2679558 31.631553 433.086545 351.125174 7.524611 24.2295
2689558 31.711927 433.086785 351.125964 7.529772 24.4152
2699550 31.790663 433.087089 351.126328 7.531576 24.9210
2709548 31.870199 433.087326 351.126582 7.531849 25.9833
2719546 31.951919 433.087675 351.127051 7.532035 25.6829
2729546 32.033019 433.087964 351.127369 8.429035 25.6278
2739546 32.115188 433.088208 351.127719 8.429323 24.6286
2749544 32.197775 433.088450 351.128219 8.433652 24.9886
2759540 32.280407 433.088684 351.128560 8.437927 24.9456
2769538 32.362838 433.088881 351.129032 8.504499 24.7320
2779536 32.445498 433.089156 351.129467 8.506412 24.8769
2789532 32.525589 433.089417 351.129712 8.592880 25.1325
2799528 32.608428 433.089768 351.130040 9.322086 25.4071
2809528 32.690151 433.090031 351.130496 9.326931 25.2132
2819528 32.773457 433.090321 351.131348 9.417582 25.1364
2829526 32.856968 433.090637 351.131696 9.417862 25.1292
2839518 32.940131 433.090864 351.132033 9.425989 25.1420
2849516 33.023614 433.091181 351.132447 9.426341 24.7974
2859512 33.107356 433.091475 351.132776 9.426743 24.5333
2869508 33.191953 433.091728 351.133692 9.430699 24.7602
2879502 33.275589 433.092145 352.133061 9.439476 24.4783
2889500 33.360117 433.092470 352.133561 9.443061 24.1054
2899496 33.443579 433.092724 353.133521 9.468212 24.0897
2909490 33.528254 433.093042 353.134445 9.470125 24.0189
2919488 33.613954 433.093423 353.134803 9.470472 24.4279
2929486 33.697768 433.093762 353.135623 9.472461 24.4039
2939480 33.780367 433.093956 353.135957 9.473391 24.2357
2949476 33.865983 433.094213 353.136304 9.473690 24.4941
2959476 33.951345 433.094480 353.136714 9.526262 24.5102
2969474 34.036615 433.094832 353.137104 9.526457 24.3277
2979472 34.120720 433.095054 353.137479 9.526785 24.5829
2989470 34.206276 433.095306 353.138374 9.529251 25.2444
2999468 34.291645 434.095365 353.138691 9.529372 24.8111
3009468 34.378425 434.095651 353.139106 9.530083 24.6731
3019468 34.463685 434.095868 353.139442 9.536002 24.7163
3029462 34.548905 434.096173 354.138705 9.537328 24.4700
3039454 34.634624 434.096429 354.139070 9.540493 24.4963
3049448 34.720086 434.096686 354.139413 10.371709 24.5865
3059444 34.804464 434.096995 354.139752 10.374231 24.5776
3069442 34.892261 434.097272 355.139242 10.376922 24.6810
3079434 34.979837 434.097623 355.139649 10.402667 25.7200
3089434 35.066506 434.097925 355.139944 10.404422 25.5791
3099426 35.154331 434.098219 355.140288 10.404719 25.7116
3109424 35.240910 434.098486 355.140775 10.405178 24.9826
3119418 35.329755 435.098545 355.141186 10.405414 24.8192
3129414 35.416997 435.098868 355.141532 10.408858 24.6063
3139412 35.503945 435.099179 355.141915 10.409115 24.6453
3149412 35.588977 435.099428 355.142275 10.411117 24.6251
3159412 35.676745 435.099728 355.142598 11.164705 24.7210
3169406 35.762831 435.100010 355.142932 11.172172 25.0758
3179398 35.850036 435.100325 355.143219 11.201369 24.7245
3189398 35.937290 435.100588 355.143546 11.211599 24.9502
3199392 36.024048 435.100822 355.143842 11.243317 24.8846
3209390 36.112219 435.101179 355.144197 11.260947 24.9037
3219390 36.199039 435.101466 355.144472 11.265969 25.4336
3229390 36.286466 435.101718 355.144844 11.266534 25.0333
3239382 36.374866 435.102054 355.145166 11.269385 25.0435
3249378 36.463129 435.102339 355.145594 11.320113 25.1641
3259374 36.551646 435.102659 355.145901 11.331282 25.1178
3269364 36.640764 435.102952 355.154744 11.335345 25.1506
3279360 36.729447 435.103173 356.145632 11.335658 25.2329
3289354 36.817827 436.103066 356.146527 11.335968 25.5249
3299346 36.905719 436.103340 356.146898 11.336390 25.6082
3309338 36.995260 436.103667 356.147342 11.337363 25.5780
3319334 37.083679 436.103927 356.147779 11.341790 25.5581
3329330 37.173361 436.104161 357.147239 11.344678 25.7095
3339328 37.263545 436.104492 357.147676 11.350644 25.7390
3349326 37.352440 436.104812 357.148091 11.354273 25.6186
3359322 37.442030 436.105081 357.148538 11.354654 25.9716
3369322 37.532049 436.105321 358.154498 11.354855 26.1072
3379316 37.622806 436.105587 359.154513 11.369232 25.9858
3389308 37.712589 436.105932 359.155731 11.369534 25.7763
3399308 37.803368 436.106212 359.156075 11.385234 26.1840
3409306 37.892948 436.106554 359.156578 11.387075 26.2020
3419304 37.981979 436.106834 359.156996 11.392222 26.4650
3429300 38.071208 436.107112 359.157423 11.398265 26.2704
3439300 38.160584 436.107345 359.158559 12.287406 25.8967
3449294 38.250609 436.107637 359.158867 12.287831 26.0353
3459290 38.339933 436.107922 359.160000 12.332726 26.3316
3469288 38.429428 436.108148 359.162121 12.333039 26.5120
3479284 38.520457 436.108544 360.161144 12.334616 26.5976
3489280 38.608856 436.108813 360.161515 13.161098 26.8693
3499274 38.697829 436.109071 360.161874 13.176350 27.5114
3509270 38.788221 436.109367 360.162196 13.199030 28.3989
3519262 38.880212 437.109387 360.162537 13.199588 28.2104
3529258 38.970288 437.109733 360.162879 13.285885 28.3830
3539258 39.058954 437.109979 360.163263 13.287404 28.8421
3549252 39.149253 437.110258 360.163651 13.288787 28.5401
3559248 39.239981 437.110485 360.163905 13.293470 28.2771
3569242 39.331067 438.110334 360.164252 13.307013 27.8936
3579240 39.422070 438.110652 360.164739 13.326934 28.0506
3589228 39.511916 438.110950 360.165004 13.328484 28.1696
3599224 39.603145 438.111212 360.165455 13.332649 27.9731
3609220 39.693433 438.111463 360.165868 13.368016 28.2618
3619214 39.784783 438.111755 361.164760 13.382009 27.7011
3629214 39.877107 438.112082 361.165071 13.393375 27.7348
3639208 39.969485 438.112425 361.165444 13.395292 27.7485
3649202 40.060164 438.112665 361.165850 13.395489 33.7875
3659196 40.150249 438.112892 361.166161 13.395734 28.2489
3669192 40.241355 438.113224 361.166497 13.399765 28.0215
3679188 40.332038 438.113518 361.166847 13.400113 33.9922
3689184 40.423596 438.113838 361.167229 13.402630 28.2015
3699180 40.513940 438.114187 361.167516 13.405326 28.2238
3709180 40.605451 438.114439 361.167884 13.410127 28.4061
3719176 40.696470 438.114748 362.166806 13.414732 28.2674
3729174 40.787676 438.114962 362.167152 13.415011 34.0347
3739164 40.878118 438.115283 362.167488 13.418244 28.1159
3749158 40.969542 438.115592 362.167711 13.418452 28.1973
3759156 41.059953 438.115799 362.168114 13.423296 28.1565
3769154 41.151033 438.116082 362.168465 13.425709 28.3094
3779152 41.242961 438.116298 362.168862 13.430188 28.3977
3789144 41.338056 438.116744 363.167912 14.289915 28.3006
3799140 41.431035 438.117054 363.168389 14.292410 28.2404
3809134 41.523181 438.117273 363.168801 14.293392 28.1584
3819128 41.615239 438.117534 363.169858 14.298315 28.1932
3829124 41.707639 438.117835 363.170109 14.305533 28.0305
3839124 41.797931 438.118146 363.170472 14.310562 28.3717
3849122 41.890527 438.118422 363.170666 14.313124 28.6568
3859110 41.981864 438.118711 363.171057 14.313470 28.5928
3869102 42.072677 438.118951 363.171452 14.316146 28.3369
3879100 42.165102 438.119344 363.171866 14.318245 28.5589
3889096 42.256299 438.119641 363.172127 14.323110 28.7959
3899090 42.348646 438.119961 363.172487 14.330762 28.8194
3909080 42.440528 439.119844 363.172878 14.332090 29.1250
3919072 42.532833 439.120110 363.173308 14.337187 28.3598
3929064 42.624981 439.120335 363.173655 14.337440 28.3735
3939058 42.716285 440.120325 363.173956 14.339801 28.8558
3949056 42.807728 440.120604 363.175054 14.340073 28.3545
3959048 42.900556 440.120884 363.175419 14.345478 28.8545
3969042 42.993799 440.121084 363.175893 14.347791 28.3543
3979040 43.085243 440.121335 363.176191 14.349918 28.4231
3989034 43.177498 440.121693 363.176452 14.351738 28.4839
3999020 43.270857 440.121966 363.176831 14.353992 28.2880
4009018 43.362496 440.122223 363.177080 14.354322 28.3967
4019014 43.454588 440.122615 363.177528 14.359220 28.5447
4029014 43.548056 440.122938 363.177805 14.363034 28.3627
4039010 43.640978 440.123145 363.178082 14.365079 28.3653
4049006 43.733755 440.123408 363.178511 14.367811 28.4085
4059000 43.826688 440.123708 363.179678 14.371576 28.3682
4068996 43.920051 440.124001 363.180019 15.338316 28.7496
4078992 44.014578 440.124284 363.180332 15.338527 29.1520
4088992 44.107368 440.124581 363.180707 15.346673 28.8160
4098988 44.201517 440.124836 363.181055 15.349872 28.3654
4108984 44.295023 440.125057 363.182437 15.352200 28.5995
4118982 44.389050 440.125331 363.182840 15.355528 28.9272
4128978 44.482395 440.125673 363.183254 15.362934 29.5561
4138970 44.575790 440.125876 363.183632 15.363158 36.8206
4148968 44.669164 440.126139 363.184187 15.365102 29.8945
4158964 44.762274 440.126423 364.183078 15.365339 30.2155
4168962 44.856019 440.126752 364.183623 16.228004 32.0506
4178956 44.949194 440.127039 364.183968 16.229614 33.8423
4188950 45.042276 440.127323 364.185239 16.229912 32.8718
4198944 45.135127 440.127628 364.185597 16.234533 33.3469
4208940 45.228255 440.127859 365.184389 16.244443 34.1534
4218936 45.321542 440.128156 366.184275 16.248568 35.0744
4228932 45.416409 440.128450 367.183204 16.249932 40.6543
4238932 45.509816 440.128704 367.183607 16.251557 36.1599
4248924 45.603039 440.128933 367.184018 16.251851 37.1550
4258914 45.696437 440.129255 367.184280 16.257476 39.6732
4268914 45.790180 440.129537 368.183233 16.259714 40.7486
4278898 45.883387 440.129854 368.183563 16.261243 40.0376
4288894 45.976753 440.130109 369.182618 16.263315 38.4608
4298892 46.071396 440.130433 370.181672 16.338573 40.2063
4308882 46.164424 440.130713 370.181909 16.345332 39.4220
4318872 46.258685 440.131023 370.182309 16.348353 40.6785
4328868 46.352827 440.131310 370.182660 16.351258 41.7450
4338862 46.447031 440.131667 370.183081 16.356227 43.1082
4348860 46.542828 441.131421 371.182210 16.357220 39.7470
4358854 46.636661 442.131239 371.182615 16.359578 39.1021
4368846 46.730919 442.131566 372.181594 16.360552 39.0791
4378840 46.824797 442.131895 372.181976 17.294375 41.0473
4388828 46.919511 442.132173 372.182459 17.301260 41.5678
4398826 47.013306 442.132502 373.181627 17.305519 41.0648
4408826 47.107741 444.132040 373.182041 18.098797 43.6211
4418818 47.201475 444.132282 373.182538 18.099155 43.3617
4428812 47.295355 444.132624 373.182891 18.106148 42.2639
4438804 47.389572 444.132859 373.183356 18.114786 44.0588
4448798 47.483226 444.133170 373.183745 18.118569 46.3983
4458794 47.576781 444.133402 373.184169 18.124937 46.0453
4468786 47.672501 444.133800 373.184697 19.166021 48.6311
4478778 47.766797 444.134144 373.185026 19.167251 48.6618
4488766 47.860530 444.134444 373.185354 19.169031 46.7380
4498760 47.955680 445.134314 373.185799 19.169356 46.7290
4508750 48.049603 445.134641 373.186094 19.178119 45.0338
4518746 48.144505 445.134999 374.185089 19.966721 46.2680
4528734 48.239614 445.135276 374.185545 19.986094 44.2171
4538724 48.334315 445.135582 374.186010 19.988180 49.2290
4548722 48.428193 445.135842 374.186356 19.995851 46.7047
4558718 48.521853 445.136121 374.186634 20.000392 46.3803
4568714 48.616743 445.136436 374.186999 20.006237 49.8261
4578706 48.711536 445.136800 374.187357 20.012429 50.6037
4588700 48.806233 445.137062 374.187614 20.027018 51.1475
4598688 48.901489 446.137019 374.187989 20.032552 49.3120
4608684 48.996387 446.137358 374.188470 20.032927 51.1503
4618672 49.091170 446.137676 374.188872 20.091263 48.0656
4628666 49.185561 446.137976 374.189194 20.093761 46.5679
4638662 49.280391 446.138350 374.189626 20.096303 47.0291
4648660 49.375712 446.138684 374.189926 20.098457 44.2226
4658654 49.470994 447.138475 374.190374 20.164201 42.6688
4668650 49.565495 447.138728 374.190699 20.985027 45.6925
4678646 49.660295 447.139000 374.191038 21.004204 48.5017
4688642 49.755425 447.139342 374.191386 21.005233 47.1224
4698638 49.851078 447.139688 374.191782 21.008940 48.3053
4708630 49.945879 447.139984 374.192218 21.011815 44.3788
4718624 50.040614 447.140213 374.192580 21.012336 47.9388
4728614 50.136006 447.140612 374.192932 21.036468 47.2523
4738602 50.231404 448.140440 374.193277 21.039753 51.1286
4748592 50.327688 448.140709 374.193660 21.042525 45.1769
4758584 50.422852 449.140650 374.194127 21.045991 44.9788
4768572 50.518604 449.140952 374.194526 21.059850 49.1169
4778568 50.613319 449.141210 374.194915 21.060540 46.2774
4788568 50.709016 449.141507 374.195173 21.067018 46.3789
4798558 50.804040 449.141837 374.195511 21.075222 49.1527
4808550 50.898738 449.142135 374.195789 21.079905 45.8911
4818542 50.993530 449.142432 374.196154 21.082176 48.6072
4828540 51.089638 450.142343 374.196598 21.083590 49.2288
4838538 51.185708 450.142623 374.197513 21.084458 46.0854
4848532 51.280780 450.142944 374.197803 21.089498 49.6811
4858520 51.375898 450.143259 374.198245 21.092401 48.3380
4868510 51.470963 450.143449 374.198675 21.094408 47.2799
4878500 51.565863 451.143321 374.198950 21.098397 52.4908
4888500 51.660931 451.143535 374.199356 21.101707 48.2024
4898492 51.757037 451.143853 374.199782 21.107517 48.5453
4908482 51.851942 451.144094 374.200196 21.110170 49.6470
4918472 51.946575 451.144402 374.200558 22.033824 45.4184
4928466 52.042734 451.144688 374.200972 22.042868 32.6752
4938464 52.138484 451.145003 374.201220 22.045469 32.2585
4948460 52.234504 451.145327 375.200328 22.073212 32.1771
4958450 52.329318 451.145564 375.200709 22.073554 32.4845
4968444 52.424264 451.145877 375.201061 22.078167 32.6703
4978434 52.519594 451.146195 375.201556 22.079192 32.5019
4988434 52.615028 451.146489 375.201931 22.086489 32.5933
4998424 52.710896 451.146794 375.202276 22.098001 32.7183
5008414 52.806022 451.147086 375.202687 22.100301 32.6272
5018406 52.901418 451.147387 375.203095 22.100574 33.5045
5028400 52.998402 451.147629 375.203563 22.100872 32.4457
5038398 53.093924 451.147858 375.204017 22.102664 32.8180
5048392 53.190550 451.148185 375.204324 22.110741 33.0223
5058390 53.286950 451.148516 375.204576 22.111075 33.1004
5068386 53.383623 451.148745 375.204887 22.115498 32.5486
5078382 53.479343 451.149042 375.205252 22.115815 32.8521
5088370 53.575135 451.149371 375.205687 22.119640 32.7439
5098368 53.671302 451.149638 375.206080 22.122595 33.2954
5108360 53.766915 451.149924 375.206443 22.124718 33.1216
5118346 53.862921 451.150239 375.206799 22.127300 33.0741
5128338 53.958706 451.150629 375.207205 22.128951 33.1913
5138326 54.054573 451.150914 375.207596 23.061902 33.5505
5148322 54.150169 451.151151 375.208082 23.064300 33.4103
5158318 54.246399 451.151431 375.208544 23.069128 33.2471
5168304 54.342388 451.151571 376.207561 23.073943 33.8107
5178292 54.438771 451.151829 376.207856 23.075703 33.4303
5188278 54.535266 451.152078 377.207609 23.077165 33.5442
5198266 54.631719 451.152361 377.207976 23.102356 33.9675
5208260 54.727939 451.152589 377.208384 23.104314 33.7569
5218252 54.824379 451.152855 377.208760 23.105598 33.4776
5228246 54.920655 451.153201 377.209176 23.109020 34.1528
5238236 55.016603 451.153434 377.209596 23.118938 34.1578
5248230 55.112813 451.153669 377.210035 23.124194 34.2976
5258226 55.209257 451.153989 377.210478 24.036406 33.9031
5268212 55.305750 451.154407 377.210860 24.039152 33.7472
5278208 55.402695 451.154717 378.210056 24.040930 33.9950
5288202 55.498102 451.154959 378.210395 24.041303 34.1169
5298190 55.594228 451.155234 378.210676 24.043018 34.2368
5308186 55.690556 451.155548 378.211597 24.050006 34.2696
5318176 55.786609 451.155791 379.210752 24.053464 34.1992
5328164 55.883094 451.156164 379.211122 24.058696 33.9738
5338148 55.979403 451.156488 379.211560 24.059049 34.3147
5348140 56.076405 451.156794 380.210726 24.072726 42.1451
5358138 56.172358 452.156574 380.211138 24.074229 34.7517
5368134 56.268822 452.156781 380.211505 24.077650 34.3117
5378128 56.365147 452.157099 380.211810 24.089799 34.3894
5388126 56.461028 452.157455 380.212128 24.090933 34.4576
5398120 56.557776 452.157811 380.212519 24.103035 35.3457
5408112 56.654286 452.158087 381.211634 24.991335 35.3126
5418106 56.751008 452.158435 381.211927 24.999806 34.9326
5428102 56.847372 452.158742 381.212326 25.006819 34.7918
5438094 56.944205 452.158999 381.212730 25.010324 34.7648
5448088 57.039897 452.159388 381.213083 25.942279 34.5757
5458082 57.136935 452.159641 381.213469 25.941283 34.4297
5468062 57.232572 452.159944 381.213857 25.943150 34.7522
5478054 57.329013 452.160309 381.214224 25.952893 34.6585
5488050 57.425441 452.160533 381.214525 25.955520 34.9891
5498044 57.520971 453.160293 381.214902 25.987841 35.4893
5508040 57.618394 454.159982 382.213960 25.991968 35.3141
5518036 57.714461 454.160241 382.214321 25.994833 35.5823
5528028 57.810935 454.160649 382.214641 25.995189 35.2076
5538022 57.907021 454.160940 383.213711 26.000459 35.0961
5548016 58.003198 454.161234 383.214158 26.004831 35.3220
5558006 58.100084 454.161564 383.214550 26.008851 35.0524
5567998 58.195865 454.161789 383.215302 26.013097 43.1741
5577986 58.292802 455.161650 383.215744 26.873691 35.2801
5587980 58.389801 455.162001 383.216132 26.913942 35.8558
5597976 58.485933 455.162361 383.216472 26.922359 43.4759
5607970 58.582601 455.162726 383.216775 26.924878 35.5519
5617962 58.679450 455.163007 384.215992 26.930826 43.2554
5627952 58.775976 455.163348 384.216511 26.935092 36.2820
5637946 58.872696 455.163620 385.215589 27.593719 35.5612
5647932 58.969555 455.163958 386.214647 27.603805 36.6560
5657924 59.065943 455.164267 386.215403 27.730978 35.9267
5667912 59.162878 455.164622 386.216202 27.741454 36.1709
5677900 59.259945 457.164040 386.216969 27.746202 35.7967
5687894 59.356538 457.164299 386.217324 27.751070 35.9764

@ -0,0 +1,514 @@
599880 22.280849 412.034730 334.059758 0.000000 7.3341
609880 22.283897 412.034989 334.059926 0.066754 12.9601
619880 22.286317 412.035210 334.060226 0.136119 12.3839
629880 22.289185 412.035469 334.060500 0.207638 12.4973
599880 22.280849 412.034730 334.059758 0.000000 7.3747
609880 22.283897 412.034989 334.059926 0.066754 12.9525
619880 22.286317 412.035210 334.060226 0.136119 12.4758
629880 22.289185 412.035469 334.060500 0.207638 12.3720
639880 22.291470 412.035697 334.060924 0.276237 12.7866
649880 22.293578 412.035905 334.061310 0.345216 13.1720
659880 22.297185 412.036202 334.061639 0.413057 13.4491
669880 22.301392 412.036430 334.061904 0.481690 13.3403
679878 22.304242 412.036678 334.062190 0.550060 13.4195
689878 22.309115 412.036979 334.062508 0.618186 13.9244
699878 22.313725 412.037298 334.062875 0.686089 14.0469
709878 22.316885 412.037545 334.063227 0.751790 14.4470
719878 22.320308 412.037787 334.063615 0.818350 14.4879
729878 22.323288 412.037995 334.063891 0.885914 14.8316
739878 22.326378 412.038221 335.063482 0.955399 15.1621
749878 22.331498 412.038530 335.063872 1.024458 15.0778
759878 22.335437 412.038741 335.064154 1.090905 15.2194
769876 22.338829 412.038986 335.064645 1.154286 15.2606
779876 22.342413 412.039247 335.064987 1.219053 15.9022
789876 22.348762 412.039551 335.065340 1.281288 15.8190
799876 22.353287 412.039787 335.065748 1.347410 16.1712
809876 22.356657 412.040005 335.066113 1.410404 16.3639
819874 22.360493 412.040254 335.066868 1.477553 16.2262
829874 22.364791 412.040527 335.067168 1.539684 16.3787
839874 22.369015 412.040707 335.067482 1.598971 16.4739
849874 22.375641 412.040939 335.067985 1.656912 16.7519
859874 22.380918 412.041193 335.068581 1.715046 16.6065
869874 22.387483 412.041505 335.068912 1.755545 17.1003
879874 22.408862 413.041646 335.069225 1.786060 17.1942
889874 22.414055 413.041874 335.069403 1.790095 17.2551
899874 22.419776 413.042179 335.069701 1.874591 17.3167
909874 22.426828 413.042426 335.069913 1.879797 17.4846
919874 22.434166 413.042694 335.070308 1.898253 17.5954
929874 22.441119 413.042948 335.070566 1.922765 17.6845
939872 22.447904 413.043140 335.070926 1.925938 18.0563
949872 22.455455 413.043471 335.071285 1.929619 17.8733
959872 22.463212 413.043688 335.071579 1.930716 18.2561
969872 22.471481 413.043957 335.071959 1.973006 17.9314
979872 22.495218 414.044145 335.072306 1.974280 17.8594
989870 22.504406 414.044380 335.072681 2.009216 17.9090
999870 22.513752 414.044681 335.073040 2.010267 18.1734
1009870 22.523005 414.044924 336.073574 2.012036 18.2442
1019870 22.535356 414.045244 336.073919 2.013290 18.4018
1029870 22.548691 414.045548 336.074223 2.014340 18.4366
1039868 22.559913 414.045797 337.073753 2.031749 18.3329
1049868 22.572916 414.046113 337.074086 2.033588 18.4874
1059868 22.588356 414.046478 337.074516 2.035190 18.8495
1069868 22.602470 414.046744 337.074846 2.036562 18.9872
1079868 22.616332 414.047022 337.075246 2.038851 19.1930
1089868 22.633394 414.047384 337.075573 2.040584 19.3031
1099868 22.647075 414.047613 337.075914 2.186090 19.3162
1109868 22.675986 415.047662 338.075613 2.187964 19.3963
1119866 22.692139 415.047961 338.076018 2.264627 19.3024
1129866 22.711234 415.048326 338.076739 2.265741 19.6045
1139866 22.742661 416.048407 339.076380 2.268247 19.6979
1149864 22.760834 416.048698 339.076782 2.291696 19.2621
1159860 22.791919 417.048730 339.077048 2.293625 19.4463
1169860 22.811605 417.048961 339.077363 2.294004 19.5279
1179858 22.833702 417.049242 339.077686 2.294249 19.6345
1189858 22.857769 417.049520 339.078043 2.294951 19.7480
1199858 22.879599 417.049792 339.078450 2.387649 19.8208
1209858 22.902783 417.050121 339.078726 2.388011 19.7962
1219858 22.927410 417.050402 339.079049 2.388610 19.8331
1229858 22.951282 417.050649 339.079504 2.395586 19.7860
1239858 22.994739 419.050517 339.079766 2.407824 19.7728
1249854 23.021423 419.050800 339.080062 2.408325 19.7020
1259854 23.055661 420.050825 339.080389 2.438144 19.8017
1269854 23.082930 420.051080 339.080797 2.440255 19.7034
1279854 23.113232 420.051364 340.080499 2.440890 19.6644
1289852 23.140905 420.051640 340.080796 2.441020 19.6409
1299850 23.169995 420.051944 340.081083 2.461648 19.6145
1309848 23.201186 420.052241 340.081368 2.505790 19.7392
1319848 23.230740 420.052420 340.081690 2.523986 19.7534
1329848 23.263363 420.052689 340.082030 2.524276 19.8169
1339848 23.295956 420.052950 340.082439 2.527708 19.5561
1349848 23.331128 420.053203 340.082931 2.528309 19.8323
1359848 23.364556 420.053455 340.083618 2.528876 19.8550
1369848 23.409707 421.053630 340.083926 2.544925 19.9364
1379846 23.443272 421.053883 340.084342 2.564153 20.0213
1389846 23.480361 421.054145 340.084639 2.582365 19.9981
1399846 23.519104 421.054401 340.084980 2.582994 20.0002
1409842 23.555796 421.054689 340.085270 2.583122 20.2150
1419840 23.593922 421.054923 340.085591 2.674416 20.3962
1429838 23.633796 421.055219 340.085876 2.674645 19.9592
1439838 23.674019 421.055508 340.086235 2.719118 19.9505
1449838 23.711995 421.055771 340.086568 2.719964 19.9876
1459838 23.752227 421.055929 340.087368 2.722152 20.3041
1469836 23.797593 422.055921 340.087832 2.722335 20.2348
1479836 23.838135 422.056244 340.088146 2.775366 20.3697
1489832 23.881308 422.056527 340.088464 2.775410 20.1571
1499830 23.922222 422.056805 340.088840 2.775670 20.3967
1509830 23.969074 423.056882 340.089169 2.776133 20.4462
1519826 24.012328 423.057093 340.089403 2.776342 20.5032
1529820 24.056633 423.057333 340.089733 2.776930 20.4972
1539818 24.101310 423.057623 340.090127 2.777172 20.1194
1549818 24.145668 423.057883 340.090477 2.777525 20.3315
1559818 24.188138 423.058127 340.090759 2.777873 20.0905
1569816 24.233222 423.058443 340.091199 2.778380 20.3641
1579816 24.279640 423.058720 340.091551 2.778573 20.1063
1589816 24.328204 423.059010 340.092701 2.778767 20.3297
1599814 24.374459 423.059188 340.093064 2.779011 20.4091
1609812 24.422859 423.059476 340.093357 2.854738 20.2252
1619812 24.470074 423.059672 340.093590 2.856557 20.3911
1629812 24.518209 423.059875 341.093105 2.856620 20.3614
1639812 24.567210 423.060143 341.093504 2.857508 20.4881
1649812 24.620523 423.060496 342.093149 2.857608 20.4232
1659802 24.671559 423.060790 343.092817 2.857842 20.7873
1669802 24.724300 423.061105 344.092435 2.857980 20.2366
1679800 24.776756 423.061379 345.091973 2.858056 20.2997
1689800 24.830024 423.061753 345.092344 2.862483 20.3361
1699798 24.883325 423.062046 345.092662 2.862547 20.1967
1709790 24.935581 423.062341 345.093129 2.862614 20.7402
1719790 24.989511 423.062650 345.093751 2.862674 20.6929
1729788 25.041520 423.062869 345.093979 2.862769 20.7296
1739788 25.096026 424.062817 346.093475 2.862971 21.0566
1749788 25.150825 424.063090 346.093802 2.863075 21.0250
1759786 25.205660 424.063378 346.094128 2.863122 20.9640
1769784 25.259794 424.063596 346.094372 2.863173 20.8985
1779782 25.314356 424.063926 346.094798 2.863282 21.4909
1789782 25.373210 425.064025 346.095178 2.863372 21.0100
1799780 25.429238 425.064210 346.095507 2.863406 20.9695
1809780 25.483806 425.064498 346.095768 3.603074 20.5313
1819780 25.545082 425.064771 346.096057 3.607187 20.9247
1829776 25.604321 425.065036 346.096410 3.627798 20.8183
1839774 25.663172 425.065278 347.096314 3.628118 20.6746
1849770 25.720526 425.065555 347.096747 3.628345 20.8617
1859768 25.781309 425.065809 347.097069 3.637776 20.7435
1869766 25.839673 425.066094 348.096664 3.643067 20.8285
1879766 25.902007 425.066415 348.097339 3.643296 20.8433
1889760 25.961658 425.066702 348.098006 3.643599 21.2226
1899758 26.020861 425.066959 348.098282 3.643907 21.0110
1909754 26.081258 425.067265 348.098651 3.644170 21.0230
1919754 26.141047 425.067576 348.099023 3.644321 20.8805
1929754 26.201916 425.067890 348.099369 3.644575 21.3060
1939752 26.263743 425.068158 348.099787 3.644863 21.0380
1949752 26.326408 425.068402 348.100098 3.645078 21.2750
1959750 26.388772 425.068631 348.100508 3.649935 20.9805
1969750 26.453365 425.068920 348.100891 3.650075 21.2374
1979748 26.516725 425.069225 348.101236 3.657931 20.7239
1989748 26.578761 425.069530 348.101630 3.658047 20.8286
1999744 26.643096 425.069831 348.102015 3.658476 20.8971
2009740 26.710869 425.070138 348.102405 4.536354 20.8364
2019738 26.774139 425.070393 348.102730 4.536568 20.8530
2029734 26.838004 425.070607 348.103419 4.536836 20.9150
2039732 26.901992 425.070885 348.103701 4.540499 20.9849
2049732 26.967733 425.071155 348.104170 4.540723 21.0056
2059728 27.032527 425.071454 348.104676 4.541104 21.1952
2069724 27.099021 426.071440 348.105018 4.541357 21.1514
2079724 27.163736 426.071639 348.105277 4.541564 21.1527
2089720 27.230522 426.071985 348.105536 4.541848 21.2171
2099714 27.295699 426.072191 348.105871 4.542241 21.2397
2109712 27.364938 426.072472 348.106226 4.542641 21.4639
2119708 27.433047 426.072753 348.106597 4.542772 21.5006
2129708 27.500346 426.073077 348.106885 4.542953 21.5295
2139704 27.567326 426.073432 348.107214 4.543295 21.4808
2149702 27.635746 426.073769 348.107522 4.543649 21.4151
2159694 27.703893 426.074022 348.107910 4.547995 21.7526
2169692 27.771575 426.074317 348.108175 4.548302 21.9624
2179690 27.841925 426.074625 348.108477 4.686357 21.6358
2189690 27.910168 426.074922 348.108835 4.688025 21.7742
2199688 27.980651 426.075135 348.109146 4.694364 21.7088
2209684 28.051400 426.075440 348.109460 4.694606 21.5484
2219684 28.124075 427.075463 348.109815 4.698672 21.5477
2229674 28.196389 428.075455 349.109278 4.698977 21.9741
2239672 28.266798 428.075699 349.109624 5.454830 21.4397
2249668 28.338641 428.076004 349.109871 5.480259 21.7898
2259668 28.409693 428.076257 349.110594 5.554180 21.5045
2269666 28.480109 428.076497 349.110875 5.560842 21.6678
2279662 28.552291 428.076725 349.111271 5.562882 21.8899
2289658 28.623975 428.077037 349.111655 5.563061 22.2255
2299656 28.698136 428.077402 349.112042 5.563226 21.7392
2309652 28.771795 428.077678 350.111782 5.563584 21.8535
2319648 28.846186 428.077904 350.112214 5.563764 22.0583
2329642 28.920675 428.078208 351.111756 6.459382 22.0110
2339640 28.994733 428.078527 351.112399 6.455159 21.9050
2349640 29.070192 428.078796 351.112797 6.455745 21.9964
2359636 29.142792 428.079073 351.113182 6.459677 22.0075
2369634 29.216921 428.079318 351.113512 6.460169 22.0281
2379634 29.291362 428.079591 351.113893 6.461312 22.1924
2389632 29.366009 428.079848 351.114175 6.462056 22.4472
2399632 29.443274 428.080064 351.114617 6.464707 22.3692
2409630 29.519818 428.080283 351.114930 6.465635 22.5182
2419630 29.595385 429.080256 351.115231 6.466388 22.2701
2429630 29.672326 429.080591 351.115642 6.505684 22.5417
2439630 29.748362 429.080870 351.115853 6.505963 22.5291
2449624 29.824307 429.081223 351.116216 6.506260 22.7832
2459622 29.899547 429.081472 351.116528 6.506558 22.4982
2469622 29.975563 429.081684 351.116868 6.513720 22.6113
2479616 30.053364 429.082006 351.117093 6.514220 22.9253
2489614 30.129129 430.081997 351.117441 6.534784 22.5982
2499610 30.205771 430.082312 351.117774 6.535100 22.7252
2509606 30.282868 430.082650 351.118036 6.535358 22.8817
2519606 30.362454 431.082684 351.118815 6.541772 22.5671
2529606 30.441168 431.083027 351.119258 6.542237 22.5128
2539602 30.518058 431.083313 351.119594 6.546694 22.5882
2549596 30.595680 431.083537 351.119887 6.548344 22.8867
2559592 30.673660 432.083461 351.120232 6.551979 23.1209
2569588 30.751165 432.083769 351.120714 6.614303 23.7308
2579580 30.830803 432.084079 351.121158 6.614515 23.9344
2589580 30.910286 432.084367 351.121596 6.614637 23.9384
2599580 30.990653 432.084693 351.121932 6.615288 23.8732
2609576 31.070335 432.084981 351.122205 7.450167 23.8313
2619576 31.151264 432.085264 351.122537 7.507775 23.7809
2629572 31.230213 432.085508 351.122927 7.508138 23.9583
2639570 31.309966 433.085488 351.123243 7.508313 26.1486
2649568 31.390546 433.085755 351.123998 7.514952 28.4993
2659568 31.470417 433.085992 351.124245 7.515399 23.5978
2669564 31.550747 433.086265 351.124714 7.524466 24.0494
2679558 31.631553 433.086545 351.125174 7.524611 24.2295
2689558 31.711927 433.086785 351.125964 7.529772 24.4152
2699550 31.790663 433.087089 351.126328 7.531576 24.9210
2709548 31.870199 433.087326 351.126582 7.531849 25.9833
2719546 31.951919 433.087675 351.127051 7.532035 25.6829
2729546 32.033019 433.087964 351.127369 8.429035 25.6278
2739546 32.115188 433.088208 351.127719 8.429323 24.6286
2749544 32.197775 433.088450 351.128219 8.433652 24.9886
2759540 32.280407 433.088684 351.128560 8.437927 24.9456
2769538 32.362838 433.088881 351.129032 8.504499 24.7320
2779536 32.445498 433.089156 351.129467 8.506412 24.8769
2789532 32.525589 433.089417 351.129712 8.592880 25.1325
2799528 32.608428 433.089768 351.130040 9.322086 25.4071
2809528 32.690151 433.090031 351.130496 9.326931 25.2132
2819528 32.773457 433.090321 351.131348 9.417582 25.1364
2829526 32.856968 433.090637 351.131696 9.417862 25.1292
2839518 32.940131 433.090864 351.132033 9.425989 25.1420
2849516 33.023614 433.091181 351.132447 9.426341 24.7974
2859512 33.107356 433.091475 351.132776 9.426743 24.5333
2869508 33.191953 433.091728 351.133692 9.430699 24.7602
2879502 33.275589 433.092145 352.133061 9.439476 24.4783
2889500 33.360117 433.092470 352.133561 9.443061 24.1054
2899496 33.443579 433.092724 353.133521 9.468212 24.0897
2909490 33.528254 433.093042 353.134445 9.470125 24.0189
2919488 33.613954 433.093423 353.134803 9.470472 24.4279
2929486 33.697768 433.093762 353.135623 9.472461 24.4039
2939480 33.780367 433.093956 353.135957 9.473391 24.2357
2949476 33.865983 433.094213 353.136304 9.473690 24.4941
2959476 33.951345 433.094480 353.136714 9.526262 24.5102
2969474 34.036615 433.094832 353.137104 9.526457 24.3277
2979472 34.120720 433.095054 353.137479 9.526785 24.5829
2989470 34.206276 433.095306 353.138374 9.529251 25.2444
2999468 34.291645 434.095365 353.138691 9.529372 24.8111
3009468 34.378425 434.095651 353.139106 9.530083 24.6731
3019468 34.463685 434.095868 353.139442 9.536002 24.7163
3029462 34.548905 434.096173 354.138705 9.537328 24.4700
3039454 34.634624 434.096429 354.139070 9.540493 24.4963
3049448 34.720086 434.096686 354.139413 10.371709 24.5865
3059444 34.804464 434.096995 354.139752 10.374231 24.5776
3069442 34.892261 434.097272 355.139242 10.376922 24.6810
3079434 34.979837 434.097623 355.139649 10.402667 25.7200
3089434 35.066506 434.097925 355.139944 10.404422 25.5791
3099426 35.154331 434.098219 355.140288 10.404719 25.7116
3109424 35.240910 434.098486 355.140775 10.405178 24.9826
3119418 35.329755 435.098545 355.141186 10.405414 24.8192
3129414 35.416997 435.098868 355.141532 10.408858 24.6063
3139412 35.503945 435.099179 355.141915 10.409115 24.6453
3149412 35.588977 435.099428 355.142275 10.411117 24.6251
3159412 35.676745 435.099728 355.142598 11.164705 24.7210
3169406 35.762831 435.100010 355.142932 11.172172 25.0758
3179398 35.850036 435.100325 355.143219 11.201369 24.7245
3189398 35.937290 435.100588 355.143546 11.211599 24.9502
3199392 36.024048 435.100822 355.143842 11.243317 24.8846
3209390 36.112219 435.101179 355.144197 11.260947 24.9037
3219390 36.199039 435.101466 355.144472 11.265969 25.4336
3229390 36.286466 435.101718 355.144844 11.266534 25.0333
3239382 36.374866 435.102054 355.145166 11.269385 25.0435
3249378 36.463129 435.102339 355.145594 11.320113 25.1641
3259374 36.551646 435.102659 355.145901 11.331282 25.1178
3269364 36.640764 435.102952 355.154744 11.335345 25.1506
3279360 36.729447 435.103173 356.145632 11.335658 25.2329
3289354 36.817827 436.103066 356.146527 11.335968 25.5249
3299346 36.905719 436.103340 356.146898 11.336390 25.6082
3309338 36.995260 436.103667 356.147342 11.337363 25.5780
3319334 37.083679 436.103927 356.147779 11.341790 25.5581
3329330 37.173361 436.104161 357.147239 11.344678 25.7095
3339328 37.263545 436.104492 357.147676 11.350644 25.7390
3349326 37.352440 436.104812 357.148091 11.354273 25.6186
3359322 37.442030 436.105081 357.148538 11.354654 25.9716
3369322 37.532049 436.105321 358.154498 11.354855 26.1072
3379316 37.622806 436.105587 359.154513 11.369232 25.9858
3389308 37.712589 436.105932 359.155731 11.369534 25.7763
3399308 37.803368 436.106212 359.156075 11.385234 26.1840
3409306 37.892948 436.106554 359.156578 11.387075 26.2020
3419304 37.981979 436.106834 359.156996 11.392222 26.4650
3429300 38.071208 436.107112 359.157423 11.398265 26.2704
3439300 38.160584 436.107345 359.158559 12.287406 25.8967
3449294 38.250609 436.107637 359.158867 12.287831 26.0353
3459290 38.339933 436.107922 359.160000 12.332726 26.3316
3469288 38.429428 436.108148 359.162121 12.333039 26.5120
3479284 38.520457 436.108544 360.161144 12.334616 26.5976
3489280 38.608856 436.108813 360.161515 13.161098 26.8693
3499274 38.697829 436.109071 360.161874 13.176350 27.5114
3509270 38.788221 436.109367 360.162196 13.199030 28.3989
3519262 38.880212 437.109387 360.162537 13.199588 28.2104
3529258 38.970288 437.109733 360.162879 13.285885 28.3830
3539258 39.058954 437.109979 360.163263 13.287404 28.8421
3549252 39.149253 437.110258 360.163651 13.288787 28.5401
3559248 39.239981 437.110485 360.163905 13.293470 28.2771
3569242 39.331067 438.110334 360.164252 13.307013 27.8936
3579240 39.422070 438.110652 360.164739 13.326934 28.0506
3589228 39.511916 438.110950 360.165004 13.328484 28.1696
3599224 39.603145 438.111212 360.165455 13.332649 27.9731
3609220 39.693433 438.111463 360.165868 13.368016 28.2618
3619214 39.784783 438.111755 361.164760 13.382009 27.7011
3629214 39.877107 438.112082 361.165071 13.393375 27.7348
3639208 39.969485 438.112425 361.165444 13.395292 27.7485
3649202 40.060164 438.112665 361.165850 13.395489 33.7875
3659196 40.150249 438.112892 361.166161 13.395734 28.2489
3669192 40.241355 438.113224 361.166497 13.399765 28.0215
3679188 40.332038 438.113518 361.166847 13.400113 33.9922
3689184 40.423596 438.113838 361.167229 13.402630 28.2015
3699180 40.513940 438.114187 361.167516 13.405326 28.2238
3709180 40.605451 438.114439 361.167884 13.410127 28.4061
3719176 40.696470 438.114748 362.166806 13.414732 28.2674
3729174 40.787676 438.114962 362.167152 13.415011 34.0347
3739164 40.878118 438.115283 362.167488 13.418244 28.1159
3749158 40.969542 438.115592 362.167711 13.418452 28.1973
3759156 41.059953 438.115799 362.168114 13.423296 28.1565
3769154 41.151033 438.116082 362.168465 13.425709 28.3094
3779152 41.242961 438.116298 362.168862 13.430188 28.3977
3789144 41.338056 438.116744 363.167912 14.289915 28.3006
3799140 41.431035 438.117054 363.168389 14.292410 28.2404
3809134 41.523181 438.117273 363.168801 14.293392 28.1584
3819128 41.615239 438.117534 363.169858 14.298315 28.1932
3829124 41.707639 438.117835 363.170109 14.305533 28.0305
3839124 41.797931 438.118146 363.170472 14.310562 28.3717
3849122 41.890527 438.118422 363.170666 14.313124 28.6568
3859110 41.981864 438.118711 363.171057 14.313470 28.5928
3869102 42.072677 438.118951 363.171452 14.316146 28.3369
3879100 42.165102 438.119344 363.171866 14.318245 28.5589
3889096 42.256299 438.119641 363.172127 14.323110 28.7959
3899090 42.348646 438.119961 363.172487 14.330762 28.8194
3909080 42.440528 439.119844 363.172878 14.332090 29.1250
3919072 42.532833 439.120110 363.173308 14.337187 28.3598
3929064 42.624981 439.120335 363.173655 14.337440 28.3735
3939058 42.716285 440.120325 363.173956 14.339801 28.8558
3949056 42.807728 440.120604 363.175054 14.340073 28.3545
3959048 42.900556 440.120884 363.175419 14.345478 28.8545
3969042 42.993799 440.121084 363.175893 14.347791 28.3543
3979040 43.085243 440.121335 363.176191 14.349918 28.4231
3989034 43.177498 440.121693 363.176452 14.351738 28.4839
3999020 43.270857 440.121966 363.176831 14.353992 28.2880
4009018 43.362496 440.122223 363.177080 14.354322 28.3967
4019014 43.454588 440.122615 363.177528 14.359220 28.5447
4029014 43.548056 440.122938 363.177805 14.363034 28.3627
4039010 43.640978 440.123145 363.178082 14.365079 28.3653
4049006 43.733755 440.123408 363.178511 14.367811 28.4085
4059000 43.826688 440.123708 363.179678 14.371576 28.3682
4068996 43.920051 440.124001 363.180019 15.338316 28.7496
4078992 44.014578 440.124284 363.180332 15.338527 29.1520
4088992 44.107368 440.124581 363.180707 15.346673 28.8160
4098988 44.201517 440.124836 363.181055 15.349872 28.3654
4108984 44.295023 440.125057 363.182437 15.352200 28.5995
4118982 44.389050 440.125331 363.182840 15.355528 28.9272
4128978 44.482395 440.125673 363.183254 15.362934 29.5561
4138970 44.575790 440.125876 363.183632 15.363158 36.8206
4148968 44.669164 440.126139 363.184187 15.365102 29.8945
4158964 44.762274 440.126423 364.183078 15.365339 30.2155
4168962 44.856019 440.126752 364.183623 16.228004 32.0506
4178956 44.949194 440.127039 364.183968 16.229614 33.8423
4188950 45.042276 440.127323 364.185239 16.229912 32.8718
4198944 45.135127 440.127628 364.185597 16.234533 33.3469
4208940 45.228255 440.127859 365.184389 16.244443 34.1534
4218936 45.321542 440.128156 366.184275 16.248568 35.0744
4228932 45.416409 440.128450 367.183204 16.249932 40.6543
4238932 45.509816 440.128704 367.183607 16.251557 36.1599
4248924 45.603039 440.128933 367.184018 16.251851 37.1550
4258914 45.696437 440.129255 367.184280 16.257476 39.6732
4268914 45.790180 440.129537 368.183233 16.259714 40.7486
4278898 45.883387 440.129854 368.183563 16.261243 40.0376
4288894 45.976753 440.130109 369.182618 16.263315 38.4608
4298892 46.071396 440.130433 370.181672 16.338573 40.2063
4308882 46.164424 440.130713 370.181909 16.345332 39.4220
4318872 46.258685 440.131023 370.182309 16.348353 40.6785
4328868 46.352827 440.131310 370.182660 16.351258 41.7450
4338862 46.447031 440.131667 370.183081 16.356227 43.1082
4348860 46.542828 441.131421 371.182210 16.357220 39.7470
4358854 46.636661 442.131239 371.182615 16.359578 39.1021
4368846 46.730919 442.131566 372.181594 16.360552 39.0791
4378840 46.824797 442.131895 372.181976 17.294375 41.0473
4388828 46.919511 442.132173 372.182459 17.301260 41.5678
4398826 47.013306 442.132502 373.181627 17.305519 41.0648
4408826 47.107741 444.132040 373.182041 18.098797 43.6211
4418818 47.201475 444.132282 373.182538 18.099155 43.3617
4428812 47.295355 444.132624 373.182891 18.106148 42.2639
4438804 47.389572 444.132859 373.183356 18.114786 44.0588
4448798 47.483226 444.133170 373.183745 18.118569 46.3983
4458794 47.576781 444.133402 373.184169 18.124937 46.0453
4468786 47.672501 444.133800 373.184697 19.166021 48.6311
4478778 47.766797 444.134144 373.185026 19.167251 48.6618
4488766 47.860530 444.134444 373.185354 19.169031 46.7380
4498760 47.955680 445.134314 373.185799 19.169356 46.7290
4508750 48.049603 445.134641 373.186094 19.178119 45.0338
4518746 48.144505 445.134999 374.185089 19.966721 46.2680
4528734 48.239614 445.135276 374.185545 19.986094 44.2171
4538724 48.334315 445.135582 374.186010 19.988180 49.2290
4548722 48.428193 445.135842 374.186356 19.995851 46.7047
4558718 48.521853 445.136121 374.186634 20.000392 46.3803
4568714 48.616743 445.136436 374.186999 20.006237 49.8261
4578706 48.711536 445.136800 374.187357 20.012429 50.6037
4588700 48.806233 445.137062 374.187614 20.027018 51.1475
4598688 48.901489 446.137019 374.187989 20.032552 49.3120
4608684 48.996387 446.137358 374.188470 20.032927 51.1503
4618672 49.091170 446.137676 374.188872 20.091263 48.0656
4628666 49.185561 446.137976 374.189194 20.093761 46.5679
4638662 49.280391 446.138350 374.189626 20.096303 47.0291
4648660 49.375712 446.138684 374.189926 20.098457 44.2226
4658654 49.470994 447.138475 374.190374 20.164201 42.6688
4668650 49.565495 447.138728 374.190699 20.985027 45.6925
4678646 49.660295 447.139000 374.191038 21.004204 48.5017
4688642 49.755425 447.139342 374.191386 21.005233 47.1224
4698638 49.851078 447.139688 374.191782 21.008940 48.3053
4708630 49.945879 447.139984 374.192218 21.011815 44.3788
4718624 50.040614 447.140213 374.192580 21.012336 47.9388
4728614 50.136006 447.140612 374.192932 21.036468 47.2523
4738602 50.231404 448.140440 374.193277 21.039753 51.1286
4748592 50.327688 448.140709 374.193660 21.042525 45.1769
4758584 50.422852 449.140650 374.194127 21.045991 44.9788
4768572 50.518604 449.140952 374.194526 21.059850 49.1169
4778568 50.613319 449.141210 374.194915 21.060540 46.2774
4788568 50.709016 449.141507 374.195173 21.067018 46.3789
4798558 50.804040 449.141837 374.195511 21.075222 49.1527
4808550 50.898738 449.142135 374.195789 21.079905 45.8911
4818542 50.993530 449.142432 374.196154 21.082176 48.6072
4828540 51.089638 450.142343 374.196598 21.083590 49.2288
4838538 51.185708 450.142623 374.197513 21.084458 46.0854
4848532 51.280780 450.142944 374.197803 21.089498 49.6811
4858520 51.375898 450.143259 374.198245 21.092401 48.3380
4868510 51.470963 450.143449 374.198675 21.094408 47.2799
4878500 51.565863 451.143321 374.198950 21.098397 52.4908
4888500 51.660931 451.143535 374.199356 21.101707 48.2024
4898492 51.757037 451.143853 374.199782 21.107517 48.5453
4908482 51.851942 451.144094 374.200196 21.110170 49.6470
4918472 51.946575 451.144402 374.200558 22.033824 45.4184
4928466 52.042734 451.144688 374.200972 22.042868 32.6752
4938464 52.138484 451.145003 374.201220 22.045469 32.2585
4948460 52.234504 451.145327 375.200328 22.073212 32.1771
4958450 52.329318 451.145564 375.200709 22.073554 32.4845
4968444 52.424264 451.145877 375.201061 22.078167 32.6703
4978434 52.519594 451.146195 375.201556 22.079192 32.5019
4988434 52.615028 451.146489 375.201931 22.086489 32.5933
4998424 52.710896 451.146794 375.202276 22.098001 32.7183
5008414 52.806022 451.147086 375.202687 22.100301 32.6272
5018406 52.901418 451.147387 375.203095 22.100574 33.5045
5028400 52.998402 451.147629 375.203563 22.100872 32.4457
5038398 53.093924 451.147858 375.204017 22.102664 32.8180
5048392 53.190550 451.148185 375.204324 22.110741 33.0223
5058390 53.286950 451.148516 375.204576 22.111075 33.1004
5068386 53.383623 451.148745 375.204887 22.115498 32.5486
5078382 53.479343 451.149042 375.205252 22.115815 32.8521
5088370 53.575135 451.149371 375.205687 22.119640 32.7439
5098368 53.671302 451.149638 375.206080 22.122595 33.2954
5108360 53.766915 451.149924 375.206443 22.124718 33.1216
5118346 53.862921 451.150239 375.206799 22.127300 33.0741
5128338 53.958706 451.150629 375.207205 22.128951 33.1913
5138326 54.054573 451.150914 375.207596 23.061902 33.5505
5148322 54.150169 451.151151 375.208082 23.064300 33.4103
5158318 54.246399 451.151431 375.208544 23.069128 33.2471
5168304 54.342388 451.151571 376.207561 23.073943 33.8107
5178292 54.438771 451.151829 376.207856 23.075703 33.4303
5188278 54.535266 451.152078 377.207609 23.077165 33.5442
5198266 54.631719 451.152361 377.207976 23.102356 33.9675
5208260 54.727939 451.152589 377.208384 23.104314 33.7569
5218252 54.824379 451.152855 377.208760 23.105598 33.4776
5228246 54.920655 451.153201 377.209176 23.109020 34.1528
5238236 55.016603 451.153434 377.209596 23.118938 34.1578
5248230 55.112813 451.153669 377.210035 23.124194 34.2976
5258226 55.209257 451.153989 377.210478 24.036406 33.9031
5268212 55.305750 451.154407 377.210860 24.039152 33.7472
5278208 55.402695 451.154717 378.210056 24.040930 33.9950
5288202 55.498102 451.154959 378.210395 24.041303 34.1169
5298190 55.594228 451.155234 378.210676 24.043018 34.2368
5308186 55.690556 451.155548 378.211597 24.050006 34.2696
5318176 55.786609 451.155791 379.210752 24.053464 34.1992
5328164 55.883094 451.156164 379.211122 24.058696 33.9738
5338148 55.979403 451.156488 379.211560 24.059049 34.3147
5348140 56.076405 451.156794 380.210726 24.072726 42.1451
5358138 56.172358 452.156574 380.211138 24.074229 34.7517
5368134 56.268822 452.156781 380.211505 24.077650 34.3117
5378128 56.365147 452.157099 380.211810 24.089799 34.3894
5388126 56.461028 452.157455 380.212128 24.090933 34.4576
5398120 56.557776 452.157811 380.212519 24.103035 35.3457
5408112 56.654286 452.158087 381.211634 24.991335 35.3126
5418106 56.751008 452.158435 381.211927 24.999806 34.9326
5428102 56.847372 452.158742 381.212326 25.006819 34.7918
5438094 56.944205 452.158999 381.212730 25.010324 34.7648
5448088 57.039897 452.159388 381.213083 25.942279 34.5757
5458082 57.136935 452.159641 381.213469 25.941283 34.4297
5468062 57.232572 452.159944 381.213857 25.943150 34.7522
5478054 57.329013 452.160309 381.214224 25.952893 34.6585
5488050 57.425441 452.160533 381.214525 25.955520 34.9891
5498044 57.520971 453.160293 381.214902 25.987841 35.4893
5508040 57.618394 454.159982 382.213960 25.991968 35.3141
5518036 57.714461 454.160241 382.214321 25.994833 35.5823
5528028 57.810935 454.160649 382.214641 25.995189 35.2076
5538022 57.907021 454.160940 383.213711 26.000459 35.0961
5548016 58.003198 454.161234 383.214158 26.004831 35.3220
5558006 58.100084 454.161564 383.214550 26.008851 35.0524
5567998 58.195865 454.161789 383.215302 26.013097 43.1741
5577986 58.292802 455.161650 383.215744 26.873691 35.2801
5587980 58.389801 455.162001 383.216132 26.913942 35.8558
5597976 58.485933 455.162361 383.216472 26.922359 43.4759
5607970 58.582601 455.162726 383.216775 26.924878 35.5519
5617962 58.679450 455.163007 384.215992 26.930826 43.2554
5627952 58.775976 455.163348 384.216511 26.935092 36.2820
5637946 58.872696 455.163620 385.215589 27.593719 35.5612
5647932 58.969555 455.163958 386.214647 27.603805 36.6560
5657924 59.065943 455.164267 386.215403 27.730978 35.9267
5667912 59.162878 455.164622 386.216202 27.741454 36.1709
5677900 59.259945 457.164040 386.216969 27.746202 35.7967
5687894 59.356538 457.164299 386.217324 27.751070 35.9764

File diff suppressed because it is too large Load Diff

@ -0,0 +1,12 @@
Real10BA10000RLSext01 79.985558 16 14.8310
471.222460 401.291029 1.8745
0.000000 41.603605 29.6421
Real10BA10000RLSext01new 27.840665 70 4.6212
426.074624 348.108483 0.9028
0.000000 4.686342 16.4999
Real10BA10000RLSext01new 27.770619 68 4.5441
426.074316 348.108174 0.9021
0.000000 4.548301 16.4157
Real10BA10000RLSext01new 27.770613 71 4.6210
426.074316 348.108172 0.9144
0.000000 4.548301 16.3512

@ -0,0 +1,42 @@
#!/bin/sh
usage(){
cat << EOF
ERROR
usage : ./step_test.sh np start input
np : number of processors used
start : number of node of the matrix to start with
input : file containing the entry of test_realnet
EOF
}
if test $# -ne 3; then
usage
exit 0
fi
file=$3
start=$2
np=$1
#newfile="$file"new
#sed -i 1d enea.inp
#sed -i '1i'$newfile $n enea.inp
#cp $file $newfile
n=`expr $start`
sed -i 1d $file
sed -i '1i'$n $file
echo "on rentre dans la boucle"
while [ $n -le 7799880 ] ;do
sed -i 1d $file
sed -i '1i'$n $file
echo "fichier modifié"
echo $n
echo
mpirun -np $np ./test_realnet < $file
n=$(($n+10000))
done

@ -0,0 +1,370 @@
!!$
!!$ Parallel Sparse BLAS version 3.1
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
!!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
program maxA_and_lapl_extremums
use psb_base_mod
use psb_util_mod
use psb_eigen_mod
implicit none
! input parameters
character(len=100) :: mtrx_file, rhs_file
character(len=40) :: kmethd, ptype
real (psb_dpk_) :: precisione,sigma
integer(psb_ipk_) :: dim_H,start,step
! sparse matrices
type(psb_dspmat_type) :: a, b, aux_a
type(psb_d_coo_sparse_mat) :: acoo
! dense matrices
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
real(psb_dpk_), pointer :: b_col_glob(:)
type(psb_d_vect_type) :: b_col, x_col, r_col
complex(psb_dpk_),allocatable :: eig(:),eigmin(:)
! communications data structure
type(psb_desc_type):: desc_a
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
& methd, istopc, irst, nr
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
real(psb_dpk_) :: err, eps,cond
character(len=5) :: afmt
character(len=20) :: name
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_) :: times=0
integer(psb_ipk_) :: iparm(20)
! other variables
integer(psb_ipk_) :: nnzero,nrows,nnz,m_problem
integer(psb_ipk_) :: i,info,j
real(psb_dpk_) :: t1, t2, t3, t4
real(psb_dpk_) :: lambda, lambda2, norm
integer(psb_ipk_) :: nrhs, n_row, dim, nv, ne
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
call psb_init(ictxt)
call psb_info(ictxt,iam,np)
if (iam < 0) then
! This should not happen, but just in case
call psb_exit(ictxt)
stop
endif
name='power_file'
if(psb_get_errstatus() /= 0) goto 9999
info=psb_success_
call psb_set_errverbosity(2)
!
! Hello world
!
if (iam == psb_root_) then
write(*,*) 'This is the ',trim(name),' sample program'
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
read(psb_inp_unit,*) precisione
read(psb_inp_unit,*) dim_H
read(psb_inp_unit,*) sigma
read(psb_inp_unit,*) ptype
read(psb_inp_unit,*) kmethd
read(psb_inp_unit,*) start
read(psb_inp_unit,*) step
end if
call psb_bcast(ictxt,mtrx_file)
call psb_bcast(ictxt,filefmt)
call psb_bcast(ictxt,ipart)
call psb_bcast(ictxt,precisione)
call psb_bcast(ictxt,dim_H)
call psb_bcast(ictxt,sigma)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,kmethd)
call psb_bcast(ictxt,start)
call psb_bcast(ictxt,step)
rhs_file = 'NONE'
afmt = 'CSR'
call psb_barrier(ictxt)
! read the input matrix to be processed and (possibly) the rhs
nrhs = 1
if (iam==psb_root_) then
select case(psb_toupper(filefmt))
case ('AD')
! call psb_d_adj_read(aux_a,mtrx_file,iunit,info)
open(iunit, FILE=mtrx_file, STATUS="OLD", ACTION="READ")
read(iunit, *) nrows , nnzero
t1 = psb_wtime()
call acoo%allocate(nrows,nrows,start)
do i = 1,start
read(iunit, *) acoo%ia(i),acoo%ja(i)
acoo%val(i)=1.0
end do
call acoo%set_nzeros(start)
call acoo%fix(info)
call aux_a%cp_from(acoo)
call aux_a%cscnv(info,type='csr')
case default
info = -1
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
end select
if (info /= psb_success_) then
write(psb_err_unit,*) 'Error while reading input matrix '
call psb_abort(ictxt)
end if
m_problem = aux_a%get_nrows()
call psb_bcast(ictxt,m_problem)
! At this point aux_b may still be unallocated
if (psb_size(aux_b,dim=1)==m_problem) then
! if any rhs were present, broadcast the first one
write(psb_err_unit,'("Ok, got an rhs ")')
b_col_glob =>aux_b(:,1)
else
call psb_realloc(m_problem,1,aux_b,ircode)
! write(psb_err_unit,*) 'Error realloc 1 passed '
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob => aux_b(:,1)
do i=1, m_problem
b_col_glob(i) = 1.d0
enddo
endif
call psb_bcast(ictxt,b_col_glob(1:m_problem))
else
!write(psb_err_unit,*) 'avant realloc passed '
call psb_bcast(ictxt,m_problem)
call psb_realloc(m_problem,1,aux_b,ircode)
!write(psb_err_unit,*) 'Error realloc passed '
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
goto 9999
endif
b_col_glob =>aux_b(:,1)
call psb_bcast(ictxt,b_col_glob(1:m_problem))
end if
! switch over different partition types
if (ipart == 0) then
call psb_barrier(ictxt)
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,b_col_glob,b_col,info,fmt=afmt,v=ivg)
!write(psb_out_unit,*) 'OK matdist 1 '
!write(psb_out_unit,'("nb zeros de a apres dist 1, num proc",i10," , ",i10)')a%get_nzeros(),iam
else if (ipart == 2) then
if (iam==psb_root_) then
call build_mtpart(aux_a,np)
endif
call psb_barrier(ictxt)
call distr_mtpart(psb_root_,ictxt)
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call psb_barrier(ictxt)
call psb_d_power_vect(a,x_col,lambda,precisione,iter,500,desc_a,info)
t2 = psb_wtime() - t1
t1 = psb_wtime()
call psb_d_laplacian(a,b)
! write(psb_out_unit,'("nb zeros de B apres lapl, num proc",i10," , ",i10)')b%get_nzeros(),iam
call psb_d_arnoldi(b,dim_H,eig,desc_a,ictxt,info)
t3 = psb_wtime()-t1
t1 = psb_wtime()
call psb_d_shift_invert(b,dim_H,sigma,eigmin,ptype,kmethd,desc_a,ictxt,iam,info)
call psb_barrier(ictxt)
t4 = psb_wtime() - t1
if (iam==psb_root_) then
open (15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
write (15,'(i20,F20.6,F20.4)')start,lambda,t2
write (15,'(F20.6,F20.6,F20.4)')real(eig(dim_H)),real(eig(dim_H-1)),t3
write (15,'(F20.6,F20.6,F20.4)')real(eigmin(dim_H)),real(eigmin(dim_H-1)),t4
close(15)
end if
call psb_spfree(a, desc_a,info)
call psb_spfree(aux_a, desc_a,info)
call psb_spfree(b, desc_a,info)
call psb_cdfree(desc_a,info)
nnz=start
do while (nnz+step <= nnzero)
! new acoo is the old one plus 'step' new links of the file
if (iam==psb_root_) then
t1 = psb_wtime()
call acoo%reallocate(nnz+step)
do j = 1,step
read(iunit, *) acoo%ia(nnz+j),acoo%ja(nnz+j)
acoo%val(i)=1.0
end do
call acoo%set_nzeros(nnz+step)
call acoo%fix(info)
call aux_a%cp_from(acoo)
call aux_a%cscnv(info,type='csr')
write(psb_out_unit,'(i10)')aux_a%get_nzeros()
nnz=nnz+step
!m_problem = aux_a%get_nrows()
!call psb_bcast(ictxt,m_problem)
! At this point aux_b may still be unallocated
!if (psb_size(aux_b,dim=1)==m_problem) then
! if any rhs were present, broadcast the first one
! write(psb_err_unit,'("Ok, got an rhs ")')
! b_col_glob =>aux_b(:,1)
! else
!call psb_realloc(m_problem,1,aux_b,ircode)
! write(psb_err_unit,*) 'Error realloc 1 passed '
!if (ircode /= 0) then
! call psb_errpush(psb_err_alloc_dealloc_,name)
! goto 9999
!endif
!b_col_glob => aux_b(:,1)
!do j=1, m_problem
! b_col_glob(j) = 1.d0
! enddo
!endif
! call psb_bcast(ictxt,b_col_glob(1:m_problem))
!else
!write(psb_err_unit,*) 'avant realloc passed '
!call psb_bcast(ictxt,m_problem)
!call psb_realloc(m_problem,1,aux_b,ircode)
!write(psb_err_unit,*) 'Error realloc passed '
!if (ircode /= 0) then
!call psb_errpush(psb_err_alloc_dealloc_,name)
!goto 9999
!endif
! b_col_glob =>aux_b(:,1)
! call psb_bcast(ictxt,b_col_glob(1:m_problem))
end if
! switch over different partition types
if (ipart == 0) then
write(psb_out_unit,'("on est dans le if",i10)')iam
call psb_barrier(ictxt)
write(psb_out_unit,*)"barriere passée"
do j=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,b_col_glob,b_col,info,fmt=afmt,v=ivg)
! write(psb_out_unit,*) 'OK matdist 2 '
! write(psb_out_unit,'("nb zeros de a apres dist, num proc",i10," , ",i10)')a%get_nzeros(),iam
else if (ipart == 2) then
if (iam==psb_root_) then
call build_mtpart(aux_a,np)
endif
call psb_barrier(ictxt)
call distr_mtpart(psb_root_,ictxt)
call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call psb_barrier(ictxt)
call psb_d_power_vect(a,x_col,lambda,precisione,iter,500,desc_a,info)
t2 = psb_wtime() - t1
t1 = psb_wtime()
call psb_d_laplacian(a,b)
call psb_d_arnoldi(b,dim_H,eig,desc_a,ictxt,info)
t3 = psb_wtime()-t1
t1 = psb_wtime()
call psb_d_shift_invert(b,dim_H,sigma,eigmin,ptype,kmethd,desc_a,ictxt,iam,info)
call psb_barrier(ictxt)
t4 = psb_wtime() - t1
if (iam==psb_root_) then
open (15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
write (15,'(i20,F20.6,F20.4)')nnz,lambda,t2
write (15,'(F20.6,F20.6,F20.4)')real(eig(dim_H)),real(eig(dim_H-1)),t3
write (15,'(F20.6,F20.6,F20.4)')real(eigmin(dim_H)),real(eigmin(dim_H-1)),t4
close(15)
end if
call psb_spfree(a, desc_a,info)
call psb_spfree(aux_a, desc_a,info)
call psb_spfree(b, desc_a,info)
call psb_cdfree(desc_a,info)
enddo
close(iunit)
call psb_gefree(b_col, desc_a,info)
call psb_gefree(x_col, desc_a,info)
9999 continue
if(info /= 0) then
call psb_error(ictxt)
end if
call psb_exit(ictxt)
stop
end program maxA_and_lapl_extremums

@ -29,27 +29,31 @@
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
program d_file_spmv
program maxA_and_lapl_extremums
use psb_base_mod
use psb_util_mod
use psb_eigen_mod
implicit none
! input parameters
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
character(len=100) :: mtrx_file, rhs_file
character(len=40) :: kmethd, ptype
real (psb_dpk_) :: precisione,sigma
integer(psb_ipk_) :: dim_H,to_read
! sparse matrices
type(psb_dspmat_type) :: a, aux_a
type(psb_dspmat_type) :: a, b, aux_a
! dense matrices
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
real(psb_dpk_), pointer :: b_col_glob(:)
type(psb_d_vect_type) :: b_col, x_col, r_col
complex(psb_dpk_),allocatable :: eig(:),eigmin(:)
! communications data structure
type(psb_desc_type):: desc_a
integer(psb_ipk_) :: ictxt, iam, np
! solver paramters
@ -62,15 +66,14 @@ program d_file_spmv
character(len=20) :: name
character(len=2) :: filefmt
integer(psb_ipk_), parameter :: iunit=12
integer(psb_ipk_), parameter :: times=10
integer(psb_ipk_) :: times=0
integer(psb_ipk_) :: iparm(20)
! other variables
integer(psb_ipk_) :: i,info,j,m_problem
integer(psb_ipk_) :: internal, m,ii,nnzero
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
&scale,resmx,resmxp, flops, bdwdth
real(psb_dpk_) :: tt1, tt2, tflops
integer(psb_ipk_) :: nnzero
real(psb_dpk_) :: t1, t2, t3, t4
real(psb_dpk_) :: lambda, lambda2, norm
integer(psb_ipk_) :: nrhs, nrow, n_row, dim, nv, ne
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
@ -85,23 +88,34 @@ program d_file_spmv
endif
name='d_file_spmv'
name='power_file'
if(psb_get_errstatus() /= 0) goto 9999
info=psb_success_
info=psb_success_
call psb_set_errverbosity(2)
!
! Hello world
!
if (iam == psb_root_) then
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
write(*,*) 'This is the ',trim(name),' sample program'
read(psb_inp_unit,*) to_read
read(psb_inp_unit,*) mtrx_file
read(psb_inp_unit,*) filefmt
read(psb_inp_unit,*) ipart
read(psb_inp_unit,*) precisione
read(psb_inp_unit,*) dim_H
read(psb_inp_unit,*) sigma
read(psb_inp_unit,*) ptype
read(psb_inp_unit,*) kmethd
end if
call psb_bcast(ictxt,to_read)
call psb_bcast(ictxt,mtrx_file)
call psb_bcast(ictxt,filefmt)
call psb_bcast(ictxt,ipart)
call psb_bcast(ictxt,precisione)
call psb_bcast(ictxt,dim_H)
call psb_bcast(ictxt,sigma)
call psb_bcast(ictxt,ptype)
call psb_bcast(ictxt,kmethd)
rhs_file = 'NONE'
afmt = 'CSR'
call psb_barrier(ictxt)
@ -125,6 +139,9 @@ program d_file_spmv
! For Harwell-Boeing we have a single file which may or may not
! contain an RHS.
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
case ('AD')
call special_adj_read(aux_a,mtrx_file,to_read,iunit,info)
case default
info = -1
@ -144,8 +161,6 @@ program d_file_spmv
write(psb_err_unit,'("Ok, got an rhs ")')
b_col_glob =>aux_b(:,1)
else
write(psb_out_unit,'("Generating an rhs...")')
write(psb_out_unit,'(" ")')
call psb_realloc(m_problem,1,aux_b,ircode)
if (ircode /= 0) then
call psb_errpush(psb_err_alloc_dealloc_,name)
@ -175,20 +190,16 @@ program d_file_spmv
! switch over different partition types
if (ipart == 0) then
call psb_barrier(ictxt)
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
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, &
call psb_matdist(aux_a, a,ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else if (ipart == 2) then
if (iam==psb_root_) then
write(psb_out_unit,'("Partition type: graph")')
write(psb_out_unit,'(" ")')
! write(psb_err_unit,'("Build type: graph")')
call build_mtpart(aux_a,np)
endif
@ -199,89 +210,38 @@ program d_file_spmv
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
else
if (iam==psb_root_) write(psb_out_unit,'("Partition type: default block")')
call psb_matdist(aux_a, a, ictxt, &
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
end if
call psb_geall(x_col,desc_a,info)
call x_col%set(done)
call psb_geasb(x_col,desc_a,info)
t2 = psb_wtime() - t1
call psb_amx(ictxt, t2)
if (iam==psb_root_) then
write(psb_out_unit,'(" ")')
write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
write(psb_out_unit,'(" ")')
end if
call psb_barrier(ictxt)
t1 = psb_wtime()
do i=1,times
call psb_spmm(done,a,x_col,dzero,b_col,desc_a,info,'n')
end do
call psb_barrier(ictxt)
call psb_d_power_vect(a,x_col,lambda,precisione,iter,500,desc_a,info)
t2 = psb_wtime() - t1
call psb_amx(ictxt,t2)
! FIXME: cache flush needed here
call psb_barrier(ictxt)
tt1 = psb_wtime()
do i=1,times
call psb_spmm(done,a,x_col,dzero,b_col,desc_a,info,'t')
end do
t1 = psb_wtime()
call psb_d_laplacian(a,b)
call psb_d_arnoldi(b,dim_H,eig,desc_a,ictxt,info)
t3 = psb_wtime()-t1
t1 = psb_wtime()
call psb_d_shift_invert(b,dim_H,sigma,eigmin,ptype,kmethd,desc_a,ictxt,iam,info)
call psb_barrier(ictxt)
tt2 = psb_wtime() - tt1
call psb_amx(ictxt,tt2)
nr = desc_a%get_global_rows()
annz = a%get_nzeros()
amatsize = psb_sizeof(a)
descsize = psb_sizeof(desc_a)
call psb_sum(ictxt,annz)
call psb_sum(ictxt,amatsize)
call psb_sum(ictxt,descsize)
t4 = psb_wtime() - t1
t1=t2+t3+t4
if (iam==psb_root_) then
flops = 2.d0*times*annz
tflops=flops
write(psb_out_unit,'("Matrix: ",a)') mtrx_file
write(psb_out_unit,'("Test on : ",i20," processors")') np
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
write(psb_out_unit,'("Number of flops (",i0," prod) : ",F20.0," ")') times,flops
flops = flops / (t2)
tflops = tflops / (tt2)
write(psb_out_unit,'("Time for ",i0," products (s) : ",F20.3)')times, t2
write(psb_out_unit,'("Time per product (ms) : ",F20.3)') t2*1.d3/(1.d0*times)
write(psb_out_unit,'("MFLOPS : ",F20.3)') flops/1.d6
write(psb_out_unit,'("Time for ",i0," products (s) (trans.): ",F20.3)') times,tt2
write(psb_out_unit,'("Time per product (ms) (trans.): ",F20.3)') tt2*1.d3/(1.d0*times)
write(psb_out_unit,'("MFLOPS (trans.): ",F20.3)') tflops/1.d6
!
! This computation is valid for CSR
!
nbytes = nr*(2*psb_sizeof_dp + psb_sizeof_int)+&
& annz*(psb_sizeof_dp + psb_sizeof_int)
bdwdth = times*nbytes/(t2*1.d6)
write(psb_out_unit,*)
write(psb_out_unit,'("MBYTES/S : ",F20.3)') bdwdth
bdwdth = times*nbytes/(tt2*1.d6)
write(psb_out_unit,'("MBYTES/S (trans): ",F20.3)') bdwdth
write(psb_out_unit,'("Storage type for DESC_A: ",a)') desc_a%get_fmt()
open (15, FILE="plot_data.dat", position = 'append',ACTION="WRITE")
write (15,'(i20,F20.6,F20.6,F20.6,F20.6,F20.4)')aux_a%get_nzeros(),lambda,real(eig(dim_H)),real(eig(dim_H-1)),&
&real(eigmin(dim_H-1)),t1
close(15)
end if
call psb_gefree(b_col, desc_a,info)
call psb_gefree(x_col, desc_a,info)
call psb_spfree(a, desc_a,info)
call psb_spfree(b, desc_a,info)
call psb_spfree(aux_a, desc_a,info)
call psb_cdfree(desc_a,info)
9999 continue
@ -291,8 +251,42 @@ program d_file_spmv
call psb_exit(ictxt)
stop
end program d_file_spmv
contains
subroutine special_adj_read (a,filename,nnzero,iunit,info)
use psb_base_mod
use psb_eigen_mod, psb_protect_name => psb_d_adj_read
type(psb_dspmat_type), intent (inout) :: a
character(len=40) , intent(in):: filename
integer (psb_ipk_),intent(in) :: iunit
integer (psb_ipk_),intent(out) :: info
! reads a file containing the coordinate description of an adjacence
! sparse matrix (values are always 1) and stores it into 'a'
!
! on entry :
! filename : file containing the description of the matrix
! nnzero : number of elements you want to read
integer(psb_ipk_) :: i,nnzero,nrows
type(psb_d_coo_sparse_mat) :: acoo
open(iunit, FILE=filename, STATUS="OLD", ACTION="READ")
read(iunit, *) nrows
call acoo%allocate(nrows,nrows,nnzero)
do i = 1,nnzero
read(iunit, *) acoo%ia(i),acoo%ja(i)
acoo%val(i)=1.0
end do
close(UNIT=iunit)
call acoo%set_nzeros(nnzero)
call acoo%fix(info)
call a%mv_from(acoo)
call a%cscnv(info,type='csr')
end subroutine special_adj_read
end program maxA_and_lapl_extremums
Loading…
Cancel
Save