base/modules/Makefile
 base/modules/psb_c_mat_mod.f03
 base/modules/psb_d_csc_mat_mod.f03
 base/modules/psb_d_csr_mat_mod.f03
 base/modules/psb_d_mat_mod.f03
 base/modules/psb_s_mat_mod.f03
 base/modules/psb_tools_mod.f90
 base/modules/psb_z_mat_mod.f03
 base/psblas/psb_cdot.f90
 base/psblas/psb_ddot.f90
 base/serial/f03/Makefile
 base/serial/f03/psb_c_csr_impl.f03
 base/serial/f03/psb_d_csc_impl.f03
 base/tools/psb_cspasb.f90
 base/tools/psb_dspasb.f90
 test/fileread/runs/cfs.inp
 test/pargen/Makefile
 test/pargen/ppde.f90
 test/pargen/psb_d_csc_impl.f03
 test/pargen/psb_d_csc_mat_mod.f03
 util/psb_mat_dist_mod.f90

Added CSC to the basic formats.
psblas3-type-indexed
Salvatore Filippone 15 years ago
parent 4e4e779833
commit 142430a086

@ -8,10 +8,10 @@ UTIL_MODS = psb_string_mod.o \
psi_serial_mod.o psi_mod.o psb_ip_reord_mod.o\ psi_serial_mod.o psi_mod.o psb_ip_reord_mod.o\
psb_check_mod.o psb_gps_mod.o psb_linmap_mod.o psb_hash_mod.o\ psb_check_mod.o psb_gps_mod.o psb_linmap_mod.o psb_hash_mod.o\
psb_base_mat_mod.o psb_mat_mod.o\ psb_base_mat_mod.o psb_mat_mod.o\
psb_s_base_mat_mod.o psb_s_csr_mat_mod.o psb_s_mat_mod.o \ psb_s_base_mat_mod.o psb_s_csr_mat_mod.o psb_s_csc_mat_mod.o psb_s_mat_mod.o \
psb_d_base_mat_mod.o psb_d_csr_mat_mod.o psb_d_mat_mod.o \ psb_d_base_mat_mod.o psb_d_csr_mat_mod.o psb_d_csc_mat_mod.o psb_d_mat_mod.o \
psb_c_base_mat_mod.o psb_c_csr_mat_mod.o psb_c_mat_mod.o \ psb_c_base_mat_mod.o psb_c_csr_mat_mod.o psb_c_csc_mat_mod.o psb_c_mat_mod.o \
psb_z_base_mat_mod.o psb_z_csr_mat_mod.o psb_z_mat_mod.o psb_z_base_mat_mod.o psb_z_csr_mat_mod.o psb_z_csc_mat_mod.o psb_z_mat_mod.o
MODULES=$(BASIC_MODS) $(UTIL_MODS) MODULES=$(BASIC_MODS) $(UTIL_MODS)
@ -33,14 +33,14 @@ lib: $(BASIC_MODS) blacsmod $(UTIL_MODS) $(OBJS) $(LIBMOD)
psb_base_mat_mod.o: psb_string_mod.o psb_sort_mod.o psb_ip_reord_mod.o\ psb_base_mat_mod.o: psb_string_mod.o psb_sort_mod.o psb_ip_reord_mod.o\
psb_error_mod.o psi_serial_mod.o psb_error_mod.o psi_serial_mod.o
psb_s_base_mat_mod.o psb_d_base_mat_mod.o psb_c_base_mat_mod.o psb_z_base_mat_mod.o: psb_base_mat_mod.o psb_s_base_mat_mod.o psb_d_base_mat_mod.o psb_c_base_mat_mod.o psb_z_base_mat_mod.o: psb_base_mat_mod.o
psb_s_mat_mod.o: psb_s_base_mat_mod.o psb_s_csr_mat_mod.o psb_s_mat_mod.o: psb_s_base_mat_mod.o psb_s_csr_mat_mod.o psb_s_csc_mat_mod.o
psb_d_mat_mod.o: psb_d_base_mat_mod.o psb_d_csr_mat_mod.o psb_d_mat_mod.o: psb_d_base_mat_mod.o psb_d_csr_mat_mod.o psb_d_csc_mat_mod.o
psb_c_mat_mod.o: psb_c_base_mat_mod.o psb_c_csr_mat_mod.o psb_c_mat_mod.o: psb_c_base_mat_mod.o psb_c_csr_mat_mod.o psb_c_csc_mat_mod.o
psb_z_mat_mod.o: psb_z_base_mat_mod.o psb_z_csr_mat_mod.o psb_z_mat_mod.o: psb_z_base_mat_mod.o psb_z_csr_mat_mod.o psb_z_csc_mat_mod.o
psb_s_csr_mat_mod.o: psb_s_base_mat_mod.o psb_s_csc_mat_mod.o psb_s_csr_mat_mod.o: psb_s_base_mat_mod.o
psb_d_csr_mat_mod.o: psb_d_base_mat_mod.o psb_d_csc_mat_mod.o psb_d_csr_mat_mod.o: psb_d_base_mat_mod.o
psb_c_csr_mat_mod.o: psb_c_base_mat_mod.o psb_dccsc_mat_mod.o psb_c_csr_mat_mod.o: psb_c_base_mat_mod.o
psb_z_csr_mat_mod.o: psb_z_base_mat_mod.o psb_z_csc_mat_mod.o psb_z_csr_mat_mod.o: psb_z_base_mat_mod.o
psb_mat_mod.o: psb_s_mat_mod.o psb_d_mat_mod.o psb_c_mat_mod.o psb_z_mat_mod.o psb_mat_mod.o: psb_s_mat_mod.o psb_d_mat_mod.o psb_c_mat_mod.o psb_z_mat_mod.o
psb_realloc_mod.o : psb_error_mod.o psb_realloc_mod.o : psb_error_mod.o
psb_spmat_type.o : psb_realloc_mod.o psb_error_mod.o psb_const_mod.o psb_string_mod.o psb_sort_mod.o psb_spmat_type.o : psb_realloc_mod.o psb_error_mod.o psb_const_mod.o psb_string_mod.o psb_sort_mod.o

@ -2,6 +2,7 @@ module psb_c_mat_mod
use psb_c_base_mat_mod use psb_c_base_mat_mod
use psb_c_csr_mat_mod use psb_c_csr_mat_mod
use psb_c_csc_mat_mod
type :: psb_c_sparse_mat type :: psb_c_sparse_mat
@ -1426,7 +1427,6 @@ contains
call a%set_dupl(psb_dupl_def_) call a%set_dupl(psb_dupl_def_)
end if end if
write(0,*)name,' ', present(mold), present(type),count( (/present(mold),present(type) /))
if (count( (/present(mold),present(type) /)) > 1) then if (count( (/present(mold),present(type) /)) > 1) then
info = 583 info = 583
call psb_errpush(info,name,a_err='TYPE, MOLD') call psb_errpush(info,name,a_err='TYPE, MOLD')

@ -54,8 +54,6 @@ module psb_d_csr_mat_mod
& d_mv_csr_to_fmt, d_mv_csr_from_fmt, & & d_mv_csr_to_fmt, d_mv_csr_from_fmt, &
& d_csr_scals, d_csr_scal, d_csr_trim, d_csr_csgetrow, d_csr_get_size, & & d_csr_scals, d_csr_scal, d_csr_trim, d_csr_csgetrow, d_csr_get_size, &
& d_csr_sizeof, d_csr_csgetptn, d_csr_get_nz_row, d_csr_reinit & d_csr_sizeof, d_csr_csgetptn, d_csr_get_nz_row, d_csr_reinit
!!$, &
!!$ & d_csr_mv_from, d_csr_mv_from
interface interface

@ -2,6 +2,7 @@ module psb_d_mat_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csr_mat_mod use psb_d_csr_mat_mod
use psb_d_csc_mat_mod
type :: psb_d_sparse_mat type :: psb_d_sparse_mat
@ -1485,7 +1486,6 @@ contains
call a%set_dupl(psb_dupl_def_) call a%set_dupl(psb_dupl_def_)
end if end if
write(0,*)name,' ', present(mold), present(type),count( (/present(mold),present(type) /))
if (count( (/present(mold),present(type) /)) > 1) then if (count( (/present(mold),present(type) /)) > 1) then
info = 583 info = 583
call psb_errpush(info,name,a_err='TYPE, MOLD') call psb_errpush(info,name,a_err='TYPE, MOLD')

@ -2,6 +2,7 @@ module psb_s_mat_mod
use psb_s_base_mat_mod use psb_s_base_mat_mod
use psb_s_csr_mat_mod use psb_s_csr_mat_mod
use psb_s_csc_mat_mod
type :: psb_s_sparse_mat type :: psb_s_sparse_mat

@ -593,7 +593,7 @@ Module psb_tools_mod
character(len=*), optional, intent(in) :: afmt character(len=*), optional, intent(in) :: afmt
class(psb_d_base_sparse_mat), intent(in), optional :: mold class(psb_d_base_sparse_mat), intent(in), optional :: mold
end subroutine psb_dspasb end subroutine psb_dspasb
subroutine psb_cspasb(a,desc_a, info, afmt, upd, dupl) subroutine psb_cspasb(a,desc_a, info, afmt, upd, dupl,mold)
use psb_descriptor_type use psb_descriptor_type
use psb_mat_mod use psb_mat_mod
type(psb_c_sparse_mat), intent (inout) :: a type(psb_c_sparse_mat), intent (inout) :: a
@ -601,8 +601,9 @@ Module psb_tools_mod
integer, intent(out) :: info integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt character(len=*), optional, intent(in) :: afmt
class(psb_c_base_sparse_mat), intent(in), optional :: mold
end subroutine psb_cspasb end subroutine psb_cspasb
subroutine psb_zspasb(a,desc_a, info, afmt, upd, dupl) subroutine psb_zspasb(a,desc_a, info, afmt, upd, dupl,mold)
use psb_descriptor_type use psb_descriptor_type
use psb_mat_mod use psb_mat_mod
type(psb_z_sparse_mat), intent (inout) :: a type(psb_z_sparse_mat), intent (inout) :: a
@ -610,6 +611,7 @@ Module psb_tools_mod
integer, intent(out) :: info integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt character(len=*), optional, intent(in) :: afmt
class(psb_z_base_sparse_mat), intent(in), optional :: mold
end subroutine psb_zspasb end subroutine psb_zspasb
end interface end interface

@ -2,6 +2,7 @@ module psb_z_mat_mod
use psb_z_base_mat_mod use psb_z_base_mat_mod
use psb_z_csr_mat_mod use psb_z_csr_mat_mod
use psb_z_csc_mat_mod
type :: psb_z_sparse_mat type :: psb_z_sparse_mat

@ -63,7 +63,7 @@ function psb_cdot(x, y,desc_a, info, jx, jy)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, ijx, iy, ijy, iiy, jjy, i, m & err_act, iix, jjx, ix, ijx, iy, ijy, iiy, jjy, i, m, nr
complex(psb_spk_) :: dot_local complex(psb_spk_) :: dot_local
complex(psb_spk_) :: cdotc complex(psb_spk_) :: cdotc
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -121,9 +121,9 @@ function psb_cdot(x, y,desc_a, info, jx, jy)
end if end if
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
dot_local = cdotc(psb_cd_get_local_rows(desc_a),& if(nr > 0) then
& x(iix:,jjx),ione,y(iiy:,jjy),ione) dot_local = cdotc(nr, x(iix:,jjx),ione,y(iiy:,jjy),ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)
idx = desc_a%ovrlap_elem(i,1) idx = desc_a%ovrlap_elem(i,1)
@ -215,7 +215,7 @@ function psb_cdotv(x, y,desc_a, info)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, jx, iy, jy, iiy, jjy, i, m & err_act, iix, jjx, ix, jx, iy, jy, iiy, jjy, i, m, nr
complex(psb_spk_) :: dot_local complex(psb_spk_) :: dot_local
complex(psb_spk_) :: cdotc complex(psb_spk_) :: cdotc
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -258,9 +258,9 @@ function psb_cdotv(x, y,desc_a, info)
end if end if
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
dot_local = cdotc(psb_cd_get_local_rows(desc_a),& if(nr > 0) then
& x,ione,y,ione) dot_local = cdotc(nr, x,ione,y,ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)
idx = desc_a%ovrlap_elem(i,1) idx = desc_a%ovrlap_elem(i,1)
@ -352,7 +352,7 @@ subroutine psb_cdotvs(res, x, y,desc_a, info)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m & err_act, iix, jjx, ix, iy, iiy, jjy, i, m,nr
complex(psb_spk_) :: dot_local complex(psb_spk_) :: dot_local
complex(psb_spk_) :: cdotc complex(psb_spk_) :: cdotc
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -392,9 +392,9 @@ subroutine psb_cdotvs(res, x, y,desc_a, info)
end if end if
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
dot_local = cdotc(psb_cd_get_local_rows(desc_a),& if(nr > 0) then
& x,ione,y,ione) dot_local = cdotc(nr, x,ione,y,ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)
idx = desc_a%ovrlap_elem(i,1) idx = desc_a%ovrlap_elem(i,1)
@ -487,7 +487,7 @@ subroutine psb_cmdots(res, x, y, desc_a, info)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m, j, k & err_act, iix, jjx, ix, iy, iiy, jjy, i, m, j, k, nr
complex(psb_spk_),allocatable :: dot_local(:) complex(psb_spk_),allocatable :: dot_local(:)
complex(psb_spk_) :: cdotc complex(psb_spk_) :: cdotc
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -537,10 +537,10 @@ subroutine psb_cmdots(res, x, y, desc_a, info)
allocate(dot_local(k)) allocate(dot_local(k))
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
if(nr > 0) then
do j=1,k do j=1,k
dot_local(j) = cdotc(psb_cd_get_local_rows(desc_a),& dot_local(j) = cdotc(nr, x(1:,j),ione,y(1:,j),ione)
& x(1:,j),ione,y(1:,j),ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
end do end do
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)

@ -63,7 +63,7 @@ function psb_ddot(x, y,desc_a, info, jx, jy)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, ijx, iy, ijy, iiy, jjy, i, m & err_act, iix, jjx, ix, ijx, iy, ijy, iiy, jjy, i, m, nr
real(psb_dpk_) :: dot_local real(psb_dpk_) :: dot_local
real(psb_dpk_) :: ddot real(psb_dpk_) :: ddot
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -121,9 +121,9 @@ function psb_ddot(x, y,desc_a, info, jx, jy)
end if end if
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
dot_local = ddot(psb_cd_get_local_rows(desc_a),& if(nr > 0) then
& x(iix:,jjx),ione,y(iiy:,jjy),ione) dot_local = ddot(nr, x(iix:,jjx),ione,y(iiy:,jjy),ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)
idx = desc_a%ovrlap_elem(i,1) idx = desc_a%ovrlap_elem(i,1)
@ -215,7 +215,7 @@ function psb_ddotv(x, y,desc_a, info)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, jx, iy, jy, iiy, jjy, i, m & err_act, iix, jjx, ix, jx, iy, jy, iiy, jjy, i, m, nr
real(psb_dpk_) :: dot_local real(psb_dpk_) :: dot_local
real(psb_dpk_) :: ddot real(psb_dpk_) :: ddot
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -258,9 +258,10 @@ function psb_ddotv(x, y,desc_a, info)
end if end if
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
dot_local = ddot(psb_cd_get_local_rows(desc_a),& if(nr > 0) then
& x,ione,y,ione) dot_local = ddot(nr, x,ione,y,ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)
idx = desc_a%ovrlap_elem(i,1) idx = desc_a%ovrlap_elem(i,1)
@ -352,7 +353,7 @@ subroutine psb_ddotvs(res, x, y,desc_a, info)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m & err_act, iix, jjx, ix, iy, iiy, jjy, i, m, nr
real(psb_dpk_) :: dot_local real(psb_dpk_) :: dot_local
real(psb_dpk_) :: ddot real(psb_dpk_) :: ddot
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -392,9 +393,9 @@ subroutine psb_ddotvs(res, x, y,desc_a, info)
end if end if
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
dot_local = ddot(psb_cd_get_local_rows(desc_a),& if(nr > 0) then
& x,ione,y,ione) dot_local = ddot(nr, x,ione,y,ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)
idx = desc_a%ovrlap_elem(i,1) idx = desc_a%ovrlap_elem(i,1)
@ -487,7 +488,7 @@ subroutine psb_dmdots(res, x, y, desc_a, info)
! locals ! locals
integer :: ictxt, np, me, idx, ndm,& integer :: ictxt, np, me, idx, ndm,&
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m, j, k & err_act, iix, jjx, ix, iy, iiy, jjy, i, m, j, k, nr
real(psb_dpk_),allocatable :: dot_local(:) real(psb_dpk_),allocatable :: dot_local(:)
real(psb_dpk_) :: ddot real(psb_dpk_) :: ddot
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -537,10 +538,10 @@ subroutine psb_dmdots(res, x, y, desc_a, info)
allocate(dot_local(k)) allocate(dot_local(k))
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then nr = psb_cd_get_local_rows(desc_a)
if(nr > 0) then
do j=1,k do j=1,k
dot_local(j) = ddot(psb_cd_get_local_rows(desc_a),& dot_local(j) = ddot(nr,x(1:,j),ione,y(1:,j),ione)
& x(1:,j),ione,y(1:,j),ione)
! adjust dot_local because overlapped elements are computed more than once ! adjust dot_local because overlapped elements are computed more than once
end do end do
do i=1,size(desc_a%ovrlap_elem,1) do i=1,size(desc_a%ovrlap_elem,1)

@ -3,8 +3,9 @@ include ../../../Make.inc
# #
# The object files # The object files
# #
FOBJS = psb_s_csr_impl.o psb_s_coo_impl.o psb_d_csr_impl.o psb_d_coo_impl.o\ FOBJS = psb_s_csr_impl.o psb_c_csr_impl.o psb_d_csr_impl.o psb_z_csr_impl.o\
psb_c_csr_impl.o psb_c_coo_impl.o psb_z_csr_impl.o psb_z_coo_impl.o psb_s_coo_impl.o psb_c_coo_impl.o psb_d_coo_impl.o psb_z_coo_impl.o\
psb_s_csc_impl.o psb_c_csc_impl.o psb_d_csc_impl.o psb_z_csc_impl.o
OBJS=$(FOBJS) OBJS=$(FOBJS)

@ -50,7 +50,7 @@ subroutine c_csr_csmv_impl(alpha,a,x,beta,y,info,trans)
tra = (psb_toupper(trans_)=='T') tra = (psb_toupper(trans_)=='T')
ctra = (psb_toupper(trans_)=='C') ctra = (psb_toupper(trans_)=='C')
if (tra) then if (tra.or.ctra) then
m = a%get_ncols() m = a%get_ncols()
n = a%get_nrows() n = a%get_nrows()
else else

@ -226,7 +226,7 @@ subroutine d_csc_csmv_impl(alpha,a,x,beta,y,info,trans)
end do end do
end if end if
if (alpha.eq.done) then if (alpha == done) then
do i=1,n do i=1,n
do j=a%icp(i), a%icp(i+1)-1 do j=a%icp(i), a%icp(i+1)-1
@ -235,7 +235,7 @@ subroutine d_csc_csmv_impl(alpha,a,x,beta,y,info,trans)
end do end do
enddo enddo
else if (alpha.eq.-done) then else if (alpha == -done) then
do i=1,n do i=1,n
do j=a%icp(i), a%icp(i+1)-1 do j=a%icp(i), a%icp(i+1)-1
@ -496,7 +496,7 @@ subroutine d_csc_csmm_impl(alpha,a,x,beta,y,info,trans)
end do end do
end if end if
if (alpha.eq.done) then if (alpha == done) then
do i=1,n do i=1,n
do j=a%icp(i), a%icp(i+1)-1 do j=a%icp(i), a%icp(i+1)-1
@ -505,7 +505,7 @@ subroutine d_csc_csmm_impl(alpha,a,x,beta,y,info,trans)
end do end do
enddo enddo
else if (alpha.eq.-done) then else if (alpha == -done) then
do i=1,n do i=1,n
do j=a%icp(i), a%icp(i+1)-1 do j=a%icp(i), a%icp(i+1)-1

@ -119,7 +119,6 @@ subroutine psb_cspasb(a,desc_a, info, afmt, upd, dupl,mold)
call a%set_ncols(n_col) call a%set_ncols(n_col)
end if end if
write(0,*)name,' ', present(mold), present(afmt),count( (/present(mold),present(afmt) /))
call a%cscnv(info,type=afmt,dupl=dupl, mold=mold) call a%cscnv(info,type=afmt,dupl=dupl, mold=mold)

@ -118,7 +118,6 @@ subroutine psb_dspasb(a,desc_a, info, afmt, upd, dupl, mold)
call a%set_ncols(n_col) call a%set_ncols(n_col)
end if end if
write(0,*)name,' ', present(mold), present(afmt),count( (/present(mold),present(afmt) /))
call a%cscnv(info,type=afmt,dupl=dupl, mold=mold) call a%cscnv(info,type=afmt,dupl=dupl, mold=mold)

@ -3,7 +3,7 @@ young1c.mtx This (and others) from: http://math.nist.gov/MatrixMarket/
NONE http://www.cise.ufl.edu/research/sparse/matrices/index.html NONE http://www.cise.ufl.edu/research/sparse/matrices/index.html
MM File format: MM: Matrix Market HB: Harwell-Boeing. MM File format: MM: Matrix Market HB: Harwell-Boeing.
BICGSTAB Iterative method: BiCGSTAB CGS RGMRES BiCGSTABL BICG CG BICGSTAB Iterative method: BiCGSTAB CGS RGMRES BiCGSTABL BICG CG
DIAG Preconditioner NONE DIAG BJAC BJAC Preconditioner NONE DIAG BJAC
CSR Storage format CSR COO JAD CSR Storage format CSR COO JAD
0 IPART: Partition method 0: BLK 2: graph (with Metis) 0 IPART: Partition method 0: BLK 2: graph (with Metis)
2 ISTOPC 2 ISTOPC

@ -16,11 +16,10 @@ EXEDIR=./runs
all: ppde spde all: ppde spde
ppde: ppde.o psb_d_csc_impl.o psb_d_csc_mat_mod.o ppde: ppde.o
$(F90LINK) -pg ppde.o psb_d_csc_impl.o psb_d_csc_mat_mod.o -o ppde $(PSBLAS_LIB) $(LDLIBS) $(F90LINK) -pg ppde.o -o ppde $(PSBLAS_LIB) $(LDLIBS)
/bin/mv ppde $(EXEDIR) /bin/mv ppde $(EXEDIR)
psb_d_csc_impl.o ppde.o: psb_d_csc_mat_mod.o
spde: spde.o spde: spde.o
$(F90LINK) spde.o -o spde $(PSBLAS_LIB) $(LDLIBS) $(F90LINK) spde.o -o spde $(PSBLAS_LIB) $(LDLIBS)

@ -341,7 +341,6 @@ contains
! !
use psb_base_mod use psb_base_mod
use psb_d_mat_mod use psb_d_mat_mod
use psb_d_csc_mat_mod
implicit none implicit none
integer :: idim integer :: idim
integer, parameter :: nb=20 integer, parameter :: nb=20

@ -1324,7 +1324,6 @@ contains
goto 9999 goto 9999
end if end if
write(0,*)name,' Calling spasb',psb_dupl_err_,' ',afmt
call psb_barrier(ictxt) call psb_barrier(ictxt)
t2 = psb_wtime() t2 = psb_wtime()
call psb_spasb(a,desc_a,info,dupl=psb_dupl_err_,afmt=afmt) call psb_spasb(a,desc_a,info,dupl=psb_dupl_err_,afmt=afmt)

Loading…
Cancel
Save