base/Makefile
 base/comm/psb_chalo.f90
 base/comm/psb_dhalo.f90
 base/comm/psb_shalo.f90
 base/comm/psb_zhalo.f90
 base/modules/Makefile
 base/newserial/psbn_coo_mat.f03
 base/newserial/psbn_d_base_mat_mod.f03
 base/psblas/psb_casum.f90
 base/psblas/psb_caxpby.f90
 base/psblas/psb_cdot.f90
 base/psblas/psb_cnrm2.f90
 base/psblas/psb_dasum.f90
 base/psblas/psb_daxpby.f90
 base/psblas/psb_ddot.f90
 base/psblas/psb_dnrm2.f90
 base/psblas/psb_sasum.f90
 base/psblas/psb_saxpby.f90
 base/psblas/psb_sdot.f90
 base/psblas/psb_snrm2.f90
 base/psblas/psb_zasum.f90
 base/psblas/psb_zaxpby.f90
 base/psblas/psb_zdot.f90
 base/psblas/psb_znrm2.f90
 base/serial/dp/Makefile
 base/serial/f77/ccsmm.f
 base/serial/f77/scsmm.f
 configure.ac
 configure

Fixes for the handling of interface mismatch in the NAG compiler: use
-wmismatch=mpi_gather.... and save mismatch_all just for psb_penv and
psb_blacs. 
This enabled discovery of a number of minor (and not so minor)
errors..
Still waiting to hear about the bugs in F2003 mode.
psblas3-type-indexed
Salvatore Filippone 16 years ago
parent 302efc2c45
commit eddf493ae9

@ -7,11 +7,11 @@ LIBMOD=psb_base_mod$(.mod)
lib: lib:
(cd modules; make lib LIBNAME=$(BASELIBNAME) F90=$(MPF90) F90COPT="$(F90COPT) $(MPI_OPT)") (cd modules; make lib LIBNAME=$(BASELIBNAME) F90=$(MPF90) F90COPT="$(F90COPT) $(MPI_OPT)")
(cd serial; make lib LIBNAME=$(BASELIBNAME)) (cd serial; make lib LIBNAME=$(BASELIBNAME))
(cd newserial; make lib LIBNAME=$(BASELIBNAME) )
(cd comm; make lib LIBNAME=$(BASELIBNAME)) (cd comm; make lib LIBNAME=$(BASELIBNAME))
(cd internals; make lib LIBNAME=$(BASELIBNAME)) (cd internals; make lib LIBNAME=$(BASELIBNAME))
(cd tools; make lib LIBNAME=$(BASELIBNAME)) (cd tools; make lib LIBNAME=$(BASELIBNAME))
(cd psblas; make lib LIBNAME=$(BASELIBNAME)) (cd psblas; make lib LIBNAME=$(BASELIBNAME))
(cd newserial; make lib LIBNAME=$(BASELIBNAME) )
/bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR) /bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR)
/bin/cp -p $(LIBMOD) *$(.mod) $(LIBDIR) /bin/cp -p $(LIBMOD) *$(.mod) $(LIBDIR)

@ -156,7 +156,7 @@ subroutine psb_chalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data)
if(present(alpha)) then if(present(alpha)) then
if(alpha /= 1.d0) then if(alpha /= 1.d0) then
do i=0, k-1 do i=0, k-1
call zscal(nrow,alpha,x(1,jjx+i),1) call zscal(nrow,alpha,x(:,jjx+i),1)
end do end do
end if end if
end if end if

@ -158,7 +158,7 @@ subroutine psb_dhalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data)
if(present(alpha)) then if(present(alpha)) then
if(alpha /= 1.d0) then if(alpha /= 1.d0) then
do i=0, k-1 do i=0, k-1
call dscal(nrow,alpha,x(1,jjx+i),1) call dscal(nrow,alpha,x(:,jjx+i),1)
end do end do
end if end if
end if end if

@ -158,7 +158,7 @@ subroutine psb_shalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data)
if(present(alpha)) then if(present(alpha)) then
if(alpha /= 1.d0) then if(alpha /= 1.d0) then
do i=0, k-1 do i=0, k-1
call dscal(nrow,alpha,x(1,jjx+i),1) call dscal(nrow,alpha,x(:,jjx+i),1)
end do end do
end if end if
end if end if

@ -156,7 +156,7 @@ subroutine psb_zhalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data)
if(present(alpha)) then if(present(alpha)) then
if(alpha /= 1.d0) then if(alpha /= 1.d0) then
do i=0, k-1 do i=0, k-1
call zscal(nrow,alpha,x(1,jjx+i),1) call zscal(nrow,alpha,x(:,jjx+i),1)
end do end do
end if end if
end if end if

@ -1,12 +1,14 @@
include ../../Make.inc include ../../Make.inc
MODULES = psb_realloc_mod.o psb_string_mod.o psb_spmat_type.o \ BASIC_MODS= psb_const_mod.o psb_error_mod.o psb_realloc_mod.o
UTIL_MODS = psb_string_mod.o psb_spmat_type.o \
psb_desc_type.o psb_sort_mod.o psb_penv_mod.o \ psb_desc_type.o psb_sort_mod.o psb_penv_mod.o \
psb_serial_mod.o psb_tools_mod.o psb_blacs_mod.o \ psb_serial_mod.o psb_tools_mod.o psb_blacs_mod.o \
psb_error_mod.o psb_const_mod.o psb_linmap_type_mod.o \ psb_linmap_type_mod.o psb_comm_mod.o psb_psblas_mod.o \
psb_comm_mod.o psb_psblas_mod.o psi_serial_mod.o psi_mod.o \ psi_serial_mod.o psi_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
MODULES=$(BASIC_MODS) $(UTIL_MODS)
LIBMOD=psb_base_mod$(.mod) LIBMOD=psb_base_mod$(.mod)
OBJS = error.o psb_base_mod.o $(EXTRA_COBJS) cutil.o OBJS = error.o psb_base_mod.o $(EXTRA_COBJS) cutil.o
@ -15,7 +17,7 @@ CINCLUDES=-I.
FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG). FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG).
lib: blacsmod $(MODULES) $(OBJS) $(LIBMOD) lib: $(BASIC_MODS) blacsmod $(UTIL_MODS) $(OBJS) $(LIBMOD)
$(AR) $(LIBDIR)/$(LIBNAME) $(MODULES) $(OBJS) $(MPFOBJS) $(AR) $(LIBDIR)/$(LIBNAME) $(MODULES) $(OBJS) $(MPFOBJS)
$(RANLIB) $(LIBDIR)/$(LIBNAME) $(RANLIB) $(LIBDIR)/$(LIBNAME)
/bin/cp -p $(LIBMOD) $(LIBDIR) /bin/cp -p $(LIBMOD) $(LIBDIR)
@ -43,7 +45,7 @@ psb_base_mod.o: $(MODULES)
blacsmod: blacsmod:
(make psb_blacs_mod.o F90COPT="$(F90COPT) $(EXTRA_OPT)") (make psb_blacs_mod.o psb_penv_mod.o F90COPT="$(F90COPT) $(EXTRA_OPT)")
clean: clean:

@ -5,8 +5,6 @@ module psbn_d_coo_sparse_mat_mod
type, extends(psbn_d_base_sparse_mat) :: psbn_d_coo_sparse_mat type, extends(psbn_d_base_sparse_mat) :: psbn_d_coo_sparse_mat
integer :: nnz integer :: nnz
logical :: sorted
integer, allocatable :: ia(:), ja(:) integer, allocatable :: ia(:), ja(:)
real(psb_dpk_), allocatable :: val(:) real(psb_dpk_), allocatable :: val(:)

@ -100,8 +100,8 @@ contains
subroutine d_base_cssm(alpha,a,x,beta,y,info,trans) subroutine d_base_cssm(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
class(psbn_d_base_sparse_mat), intent(in) :: a class(psbn_d_base_sparse_mat), intent(in) :: a
real(kind(1.d0)), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(kind(1.d0)), intent(inout) :: y(:,:) real(psb_dpk_), intent(inout) :: y(:,:)
integer, intent(out) :: info integer, intent(out) :: info
character, optional, intent(in) :: trans character, optional, intent(in) :: trans
@ -126,8 +126,8 @@ contains
subroutine d_base_cssv(alpha,a,x,beta,y,info,trans) subroutine d_base_cssv(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
class(psbn_d_base_sparse_mat), intent(in) :: a class(psbn_d_base_sparse_mat), intent(in) :: a
real(kind(1.d0)), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(kind(1.d0)), intent(inout) :: y(:) real(psb_dpk_), intent(inout) :: y(:)
integer, intent(out) :: info integer, intent(out) :: info
character, optional, intent(in) :: trans character, optional, intent(in) :: trans

@ -112,7 +112,7 @@ function psb_casum (x,desc_a, info, jx)
! compute local max ! compute local max
if ((m /= 0)) then if ((m /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
asum=scasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix,jjx),ione) asum=scasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix:,jjx),ione)
! adjust asum because overlapped elements are computed more than once ! adjust asum 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)

@ -136,8 +136,8 @@ subroutine psb_caxpby(alpha, x, beta,y,desc_a,info, n, jx, jy)
if ((in /= 0)) then if ((in /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
call caxpby(psb_cd_get_local_cols(desc_a),in,& call caxpby(psb_cd_get_local_cols(desc_a),in,&
& alpha,x(iix,jjx),size(x,1),beta,& & alpha,x(iix:,jjx),size(x,1),beta,&
& y(iiy,jjy),size(y,1),info) & y(iiy:,jjy),size(y,1),info)
end if end if
end if end if

@ -123,7 +123,7 @@ function psb_cdot(x, y,desc_a, info, jx, jy)
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
dot_local = cdotc(psb_cd_get_local_rows(desc_a),& dot_local = cdotc(psb_cd_get_local_rows(desc_a),&
& x(iix,jjx),ione,y(iiy,jjy),ione) & 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)
@ -540,7 +540,7 @@ subroutine psb_cmdots(res, x, y, desc_a, info)
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 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(psb_cd_get_local_rows(desc_a),&
& 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)

@ -103,7 +103,7 @@ function psb_cnrm2(x, desc_a, info, jx)
if(m /= 0) then if(m /= 0) then
if (psb_cd_get_local_rows(desc_a) > 0) then if (psb_cd_get_local_rows(desc_a) > 0) then
ndim = psb_cd_get_local_rows(desc_a) ndim = psb_cd_get_local_rows(desc_a)
nrm2 = scnrm2( ndim, x(iix,jjx), ione ) nrm2 = scnrm2( ndim, x(iix:,jjx), ione )
! adjust because overlapped elements are computed more than once ! adjust 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)

@ -108,7 +108,7 @@ function psb_dasum (x,desc_a, info, jx)
! compute local max ! compute local max
if ((m /= 0)) then if ((m /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
asum=dasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix,jjx),ione) asum=dasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix:,jjx),ione)
! adjust asum because overlapped elements are computed more than once ! adjust asum 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)

@ -137,8 +137,8 @@ subroutine psb_daxpby(alpha, x, beta,y,desc_a,info, n, jx, jy)
if ((in /= 0)) then if ((in /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
call daxpby(psb_cd_get_local_rows(desc_a),in,& call daxpby(psb_cd_get_local_rows(desc_a),in,&
& alpha,x(iix,jjx),size(x,1),beta,& & alpha,x(iix:,jjx),size(x,1),beta,&
& y(iiy,jjy),size(y,1),info) & y(iiy:,jjy),size(y,1),info)
end if end if
end if end if

@ -123,7 +123,7 @@ function psb_ddot(x, y,desc_a, info, jx, jy)
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
dot_local = ddot(psb_cd_get_local_rows(desc_a),& dot_local = ddot(psb_cd_get_local_rows(desc_a),&
& x(iix,jjx),ione,y(iiy,jjy),ione) & 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)
@ -540,7 +540,7 @@ subroutine psb_dmdots(res, x, y, desc_a, info)
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 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(psb_cd_get_local_rows(desc_a),&
& 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)

@ -102,7 +102,7 @@ function psb_dnrm2(x, desc_a, info, jx)
if(m /= 0) then if(m /= 0) then
if (psb_cd_get_local_rows(desc_a) > 0) then if (psb_cd_get_local_rows(desc_a) > 0) then
ndim = psb_cd_get_local_rows(desc_a) ndim = psb_cd_get_local_rows(desc_a)
nrm2 = dnrm2( ndim, x(iix,jjx), ione ) nrm2 = dnrm2( ndim, x(iix:,jjx), ione )
! adjust because overlapped elements are computed more than once ! adjust 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)

@ -108,7 +108,7 @@ function psb_sasum (x,desc_a, info, jx)
! compute local max ! compute local max
if ((m /= 0)) then if ((m /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
asum=sasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix,jjx),ione) asum=sasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix:,jjx),ione)
! adjust asum because overlapped elements are computed more than once ! adjust asum 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)

@ -137,8 +137,8 @@ subroutine psb_saxpby(alpha, x, beta,y,desc_a,info, n, jx, jy)
if ((in /= 0)) then if ((in /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
call saxpby(psb_cd_get_local_rows(desc_a),in,& call saxpby(psb_cd_get_local_rows(desc_a),in,&
& alpha,x(iix,jjx),size(x,1),beta,& & alpha,x(iix:,jjx),size(x,1),beta,&
& y(iiy,jjy),size(y,1),info) & y(iiy:,jjy),size(y,1),info)
end if end if
end if end if

@ -123,7 +123,7 @@ function psb_sdot(x, y,desc_a, info, jx, jy)
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
dot_local = sdot(psb_cd_get_local_rows(desc_a),& dot_local = sdot(psb_cd_get_local_rows(desc_a),&
& x(iix,jjx),ione,y(iiy,jjy),ione) & 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)
@ -540,7 +540,7 @@ subroutine psb_smdots(res, x, y, desc_a, info)
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
do j=1,k do j=1,k
dot_local(j) = sdot(psb_cd_get_local_rows(desc_a),& dot_local(j) = sdot(psb_cd_get_local_rows(desc_a),&
& 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)

@ -102,7 +102,7 @@ function psb_snrm2(x, desc_a, info, jx)
if(m /= 0) then if(m /= 0) then
if (psb_cd_get_local_rows(desc_a) > 0) then if (psb_cd_get_local_rows(desc_a) > 0) then
ndim = psb_cd_get_local_rows(desc_a) ndim = psb_cd_get_local_rows(desc_a)
nrm2 = snrm2( ndim, x(iix,jjx), ione ) nrm2 = snrm2( ndim, x(iix:,jjx), ione )
! adjust because overlapped elements are computed more than once ! adjust 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)

@ -112,7 +112,7 @@ function psb_zasum (x,desc_a, info, jx)
! compute local max ! compute local max
if ((m /= 0)) then if ((m /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
asum=dzasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix,jjx),ione) asum=dzasum(psb_cd_get_local_rows(desc_a)-iix+1,x(iix:,jjx),ione)
! adjust asum because overlapped elements are computed more than once ! adjust asum 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)

@ -136,8 +136,8 @@ subroutine psb_zaxpby(alpha, x, beta,y,desc_a,info, n, jx, jy)
if ((in /= 0)) then if ((in /= 0)) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
call zaxpby(psb_cd_get_local_cols(desc_a),in,& call zaxpby(psb_cd_get_local_cols(desc_a),in,&
& alpha,x(iix,jjx),size(x,1),beta,& & alpha,x(iix:,jjx),size(x,1),beta,&
& y(iiy,jjy),size(y,1),info) & y(iiy:,jjy),size(y,1),info)
end if end if
end if end if

@ -123,7 +123,7 @@ function psb_zdot(x, y,desc_a, info, jx, jy)
if(m /= 0) then if(m /= 0) then
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
dot_local = zdotc(psb_cd_get_local_rows(desc_a),& dot_local = zdotc(psb_cd_get_local_rows(desc_a),&
& x(iix,jjx),ione,y(iiy,jjy),ione) & 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)
@ -540,7 +540,7 @@ subroutine psb_zmdots(res, x, y, desc_a, info)
if(psb_cd_get_local_rows(desc_a) > 0) then if(psb_cd_get_local_rows(desc_a) > 0) then
do j=1,k do j=1,k
dot_local(j) = zdotc(psb_cd_get_local_rows(desc_a),& dot_local(j) = zdotc(psb_cd_get_local_rows(desc_a),&
& 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)

@ -103,7 +103,7 @@ function psb_znrm2(x, desc_a, info, jx)
if(m /= 0) then if(m /= 0) then
if (psb_cd_get_local_rows(desc_a) > 0) then if (psb_cd_get_local_rows(desc_a) > 0) then
ndim = psb_cd_get_local_rows(desc_a) ndim = psb_cd_get_local_rows(desc_a)
nrm2 = dznrm2( ndim, x(iix,jjx), ione ) nrm2 = dznrm2( ndim, x(iix:,jjx), ione )
! adjust because overlapped elements are computed more than once ! adjust 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)

@ -3,13 +3,15 @@ include ../../../Make.inc
# The object files # The object files
# #
FOBJS = dcrcr.o dcrjd.o dgblock.o partition.o \ XOBJS = scrjd.o dcrjd.o ccrjd.o zcrjd.o
FOBJS = dcrcr.o dgblock.o partition.o \
dgindex.o djadrp.o djadrp1.o dcsrrp.o dcsrp1.o check_dim.o \ dgindex.o djadrp.o djadrp1.o dcsrrp.o dcsrp1.o check_dim.o \
Max_nnzero.o dcoco.o dcocr.o dcrco.o djdcox.o djdco.o dvtfg.o dgind_tri.o \ Max_nnzero.o dcoco.o dcocr.o dcrco.o djdcox.o djdco.o dvtfg.o dgind_tri.o \
gen_block.o\ gen_block.o\
scrjd.o scrco.o scrcr.o scocr.o scoco.o sgindex.o sgind_tri.o\ scrco.o scrcr.o scocr.o scoco.o sgindex.o sgind_tri.o\
ccoco.o ccocr.o ccrco.o ccrcr.o ccrjd.o cgindex.o cgind_tri.o\ ccoco.o ccocr.o ccrco.o ccrcr.o cgindex.o cgind_tri.o\
zcoco.o zcocr.o zcrco.o zcrcr.o zcrjd.o zgindex.o zgind_tri.o zcoco.o zcocr.o zcrco.o zcrcr.o zgindex.o zgind_tri.o\
$(XOBJS)
# #
# dgind_tri.o # dgind_tri.o
@ -34,10 +36,13 @@ LIBFILE=$(LIBDIR)/$(LIBNAME)
# #
lib: $(FOBJS) lib: xobjs $(FOBJS)
$(AR) $(LIBDIR)/$(LIBNAME) $(OBJS) $(AR) $(LIBDIR)/$(LIBNAME) $(OBJS)
$(RANLIB) $(LIBDIR)/$(LIBNAME) $(RANLIB) $(LIBDIR)/$(LIBNAME)
xobjs:
(make $(XOBJS) FCOPT="$(FCOPT) $(EXTRA_OPT)")
clean: cleanobjs clean: cleanobjs
veryclean: cleanobjs veryclean: cleanobjs

@ -296,9 +296,9 @@ C
C Both right and left permutation required C Both right and left permutation required
C C
P=LWORKB+1 P=LWORKB+1
CALL CLPUPD(K,N,PR,B,LDB,ZZERO,WORK,K) CALL CLPUPD(K,N,PR,B,LDB,CZERO,WORK,K)
CALL CSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA, CALL CSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA,
& WORK,K,ZZERO,WORK(P),M,WORK(P+LWORKC),LWORKS,IERROR) & WORK,K,CZERO,WORK(P),M,WORK(P+LWORKC),LWORKS,IERROR)
LWORKS = INT(REAL(WORK(P+LWORKC))) LWORKS = INT(REAL(WORK(P+LWORKC)))
IF(IERROR .NE. 0) THEN IF(IERROR .NE. 0) THEN
IF (IERROR.EQ.3010) THEN IF (IERROR.EQ.3010) THEN
@ -313,7 +313,7 @@ C
C Only right permutation required C Only right permutation required
C C
P=LWORKB+1 P=LWORKB+1
CALL CLPUPD(K,N,PR,B,LDB,ZZERO,WORK,K) CALL CLPUPD(K,N,PR,B,LDB,CZERO,WORK,K)
CALL CSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA, CALL CSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA,
& WORK,K,BETA,C,LDC,WORK(P),LWORKS,IERROR) & WORK,K,BETA,C,LDC,WORK(P),LWORKS,IERROR)
LWORKS = INT(REAL(WORK(P))) LWORKS = INT(REAL(WORK(P)))
@ -330,7 +330,7 @@ C Only left permutation required
C C
P=LWORKC+1 P=LWORKC+1
CALL CSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA, CALL CSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA,
& B,LDB,ZZERO,WORK,M,WORK(P),LWORKS,IERROR) & B,LDB,CZERO,WORK,M,WORK(P),LWORKS,IERROR)
LWORKS = INT(REAL(WORK(P))) LWORKS = INT(REAL(WORK(P)))
IF(IERROR .NE. 0) THEN IF(IERROR .NE. 0) THEN
IF (IERROR.EQ.3010) THEN IF (IERROR.EQ.3010) THEN

@ -297,9 +297,9 @@ C
C Both right and left permutation required C Both right and left permutation required
C C
P=LWORKB+1 P=LWORKB+1
CALL SLPUPD(K,N,PR,B,LDB,DZERO,WORK,K) CALL SLPUPD(K,N,PR,B,LDB,SZERO,WORK,K)
CALL SSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA, CALL SSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA,
& WORK,K,DZERO,WORK(P),M,WORK(P+LWORKC),LWORKS,IERROR) & WORK,K,SZERO,WORK(P),M,WORK(P+LWORKC),LWORKS,IERROR)
LWORKS = INT(WORK(P+LWORKC)) LWORKS = INT(WORK(P+LWORKC))
IF(IERROR .NE. 0) THEN IF(IERROR .NE. 0) THEN
IERROR=4011 IERROR=4011
@ -312,7 +312,7 @@ C
C Only right permutation required C Only right permutation required
C C
P=LWORKB+1 P=LWORKB+1
CALL SLPUPD(K,N,PR,B,LDB,DZERO,WORK,K) CALL SLPUPD(K,N,PR,B,LDB,SZERO,WORK,K)
CALL SSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA, CALL SSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA,
& WORK,K,BETA,C,LDC,WORK(P),LWORKS,IERROR) & WORK,K,BETA,C,LDC,WORK(P),LWORKS,IERROR)
LWORKS = INT(WORK(P)) LWORKS = INT(WORK(P))
@ -327,7 +327,7 @@ C Only left permutation required
C C
P=LWORKC+1 P=LWORKC+1
CALL SSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA, CALL SSWMM(TRANS,M,N,K,ALPHA,FIDA,DESCRA,A,IA1,IA2,INFOA,
& B,LDB,DZERO,WORK,M,WORK(P),LWORKS,IERROR) & B,LDB,SZERO,WORK,M,WORK(P),LWORKS,IERROR)
LWORKS = INT(WORK(P)) LWORKS = INT(WORK(P))
IF(IERROR .NE. 0) THEN IF(IERROR .NE. 0) THEN
IERROR=4011 IERROR=4011

4
configure vendored

@ -7119,7 +7119,7 @@ if test "X$FCOPT" == "X" ; then
fi fi
if test "X$psblas_cv_fc" == X"nag" ; then if test "X$psblas_cv_fc" == X"nag" ; then
# Add needed options # Add needed options
FCOPT="$FCOPT -mismatch -dcfuns -f2003" FCOPT="$FCOPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
fi fi
FFLAGS="${FCOPT}" FFLAGS="${FCOPT}"
@ -7152,7 +7152,7 @@ else
fi fi
if test "X$psblas_cv_fc" == X"nag" ; then if test "X$psblas_cv_fc" == X"nag" ; then
# Add needed options # Add needed options
F90COPT="$F90COPT -mismatch -dcfuns -f2003" F90COPT="$F90COPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
EXTRA_OPT="-mismatch_all" EXTRA_OPT="-mismatch_all"
F03COPT="${F90COPT}" F03COPT="${F90COPT}"
else else

@ -399,7 +399,7 @@ if test "X$FCOPT" == "X" ; then
fi fi
if test "X$psblas_cv_fc" == X"nag" ; then if test "X$psblas_cv_fc" == X"nag" ; then
# Add needed options # Add needed options
FCOPT="$FCOPT -mismatch -dcfuns -f2003" FCOPT="$FCOPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
fi fi
FFLAGS="${FCOPT}" FFLAGS="${FCOPT}"
@ -432,7 +432,7 @@ else
fi fi
if test "X$psblas_cv_fc" == X"nag" ; then if test "X$psblas_cv_fc" == X"nag" ; then
# Add needed options # Add needed options
F90COPT="$F90COPT -mismatch -dcfuns -f2003" F90COPT="$F90COPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
EXTRA_OPT="-mismatch_all" EXTRA_OPT="-mismatch_all"
F03COPT="${F90COPT}" F03COPT="${F90COPT}"
else else

Loading…
Cancel
Save