mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-17 03:12:15 +00:00
psblas3:
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.
This commit is contained in:
+1
-1
@@ -7,11 +7,11 @@ LIBMOD=psb_base_mod$(.mod)
|
||||
lib:
|
||||
(cd modules; make lib LIBNAME=$(BASELIBNAME) F90=$(MPF90) F90COPT="$(F90COPT) $(MPI_OPT)")
|
||||
(cd serial; make lib LIBNAME=$(BASELIBNAME))
|
||||
(cd newserial; make lib LIBNAME=$(BASELIBNAME) )
|
||||
(cd comm; make lib LIBNAME=$(BASELIBNAME))
|
||||
(cd internals; make lib LIBNAME=$(BASELIBNAME))
|
||||
(cd tools; 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 $(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(alpha /= 1.d0) then
|
||||
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 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(alpha /= 1.d0) then
|
||||
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 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(alpha /= 1.d0) then
|
||||
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 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(alpha /= 1.d0) then
|
||||
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 if
|
||||
end if
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
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_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_comm_mod.o psb_psblas_mod.o psi_serial_mod.o psi_mod.o \
|
||||
psb_linmap_type_mod.o psb_comm_mod.o psb_psblas_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
|
||||
|
||||
MODULES=$(BASIC_MODS) $(UTIL_MODS)
|
||||
|
||||
LIBMOD=psb_base_mod$(.mod)
|
||||
OBJS = error.o psb_base_mod.o $(EXTRA_COBJS) cutil.o
|
||||
@@ -15,7 +17,7 @@ CINCLUDES=-I.
|
||||
FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG).
|
||||
|
||||
|
||||
lib: blacsmod $(MODULES) $(OBJS) $(LIBMOD)
|
||||
lib: $(BASIC_MODS) blacsmod $(UTIL_MODS) $(OBJS) $(LIBMOD)
|
||||
$(AR) $(LIBDIR)/$(LIBNAME) $(MODULES) $(OBJS) $(MPFOBJS)
|
||||
$(RANLIB) $(LIBDIR)/$(LIBNAME)
|
||||
/bin/cp -p $(LIBMOD) $(LIBDIR)
|
||||
@@ -43,7 +45,7 @@ psb_base_mod.o: $(MODULES)
|
||||
|
||||
|
||||
blacsmod:
|
||||
(make psb_blacs_mod.o F90COPT="$(F90COPT) $(EXTRA_OPT)")
|
||||
(make psb_blacs_mod.o psb_penv_mod.o F90COPT="$(F90COPT) $(EXTRA_OPT)")
|
||||
|
||||
|
||||
clean:
|
||||
|
||||
@@ -5,8 +5,6 @@ module psbn_d_coo_sparse_mat_mod
|
||||
type, extends(psbn_d_base_sparse_mat) :: psbn_d_coo_sparse_mat
|
||||
|
||||
integer :: nnz
|
||||
logical :: sorted
|
||||
|
||||
integer, allocatable :: ia(:), ja(:)
|
||||
real(psb_dpk_), allocatable :: val(:)
|
||||
|
||||
|
||||
@@ -100,8 +100,8 @@ contains
|
||||
subroutine d_base_cssm(alpha,a,x,beta,y,info,trans)
|
||||
use psb_error_mod
|
||||
class(psbn_d_base_sparse_mat), intent(in) :: a
|
||||
real(kind(1.d0)), intent(in) :: alpha, beta, x(:,:)
|
||||
real(kind(1.d0)), intent(inout) :: y(:,:)
|
||||
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
|
||||
real(psb_dpk_), intent(inout) :: y(:,:)
|
||||
integer, intent(out) :: info
|
||||
character, optional, intent(in) :: trans
|
||||
|
||||
@@ -126,8 +126,8 @@ contains
|
||||
subroutine d_base_cssv(alpha,a,x,beta,y,info,trans)
|
||||
use psb_error_mod
|
||||
class(psbn_d_base_sparse_mat), intent(in) :: a
|
||||
real(kind(1.d0)), intent(in) :: alpha, beta, x(:)
|
||||
real(kind(1.d0)), intent(inout) :: y(:)
|
||||
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
|
||||
real(psb_dpk_), intent(inout) :: y(:)
|
||||
integer, intent(out) :: info
|
||||
character, optional, intent(in) :: trans
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ function psb_casum (x,desc_a, info, jx)
|
||||
! compute local max
|
||||
if ((m /= 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
|
||||
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(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
call caxpby(psb_cd_get_local_cols(desc_a),in,&
|
||||
& alpha,x(iix,jjx),size(x,1),beta,&
|
||||
& y(iiy,jjy),size(y,1),info)
|
||||
& alpha,x(iix:,jjx),size(x,1),beta,&
|
||||
& y(iiy:,jjy),size(y,1),info)
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ function psb_cdot(x, y,desc_a, info, jx, jy)
|
||||
if(m /= 0) then
|
||||
if(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,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
|
||||
do j=1,k
|
||||
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
|
||||
end do
|
||||
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 (psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,1)
|
||||
|
||||
@@ -108,7 +108,7 @@ function psb_dasum (x,desc_a, info, jx)
|
||||
! compute local max
|
||||
if ((m /= 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
|
||||
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(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
call daxpby(psb_cd_get_local_rows(desc_a),in,&
|
||||
& alpha,x(iix,jjx),size(x,1),beta,&
|
||||
& y(iiy,jjy),size(y,1),info)
|
||||
& alpha,x(iix:,jjx),size(x,1),beta,&
|
||||
& y(iiy:,jjy),size(y,1),info)
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ function psb_ddot(x, y,desc_a, info, jx, jy)
|
||||
if(m /= 0) then
|
||||
if(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,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
|
||||
do j=1,k
|
||||
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
|
||||
end do
|
||||
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 (psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,1)
|
||||
|
||||
@@ -108,7 +108,7 @@ function psb_sasum (x,desc_a, info, jx)
|
||||
! compute local max
|
||||
if ((m /= 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
|
||||
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(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
call saxpby(psb_cd_get_local_rows(desc_a),in,&
|
||||
& alpha,x(iix,jjx),size(x,1),beta,&
|
||||
& y(iiy,jjy),size(y,1),info)
|
||||
& alpha,x(iix:,jjx),size(x,1),beta,&
|
||||
& y(iiy:,jjy),size(y,1),info)
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ function psb_sdot(x, y,desc_a, info, jx, jy)
|
||||
if(m /= 0) then
|
||||
if(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,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
|
||||
do j=1,k
|
||||
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
|
||||
end do
|
||||
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 (psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,1)
|
||||
|
||||
@@ -112,7 +112,7 @@ function psb_zasum (x,desc_a, info, jx)
|
||||
! compute local max
|
||||
if ((m /= 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
|
||||
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(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
call zaxpby(psb_cd_get_local_cols(desc_a),in,&
|
||||
& alpha,x(iix,jjx),size(x,1),beta,&
|
||||
& y(iiy,jjy),size(y,1),info)
|
||||
& alpha,x(iix:,jjx),size(x,1),beta,&
|
||||
& y(iiy:,jjy),size(y,1),info)
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ function psb_zdot(x, y,desc_a, info, jx, jy)
|
||||
if(m /= 0) then
|
||||
if(psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,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
|
||||
do j=1,k
|
||||
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
|
||||
end do
|
||||
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 (psb_cd_get_local_rows(desc_a) > 0) then
|
||||
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
|
||||
do i=1,size(desc_a%ovrlap_elem,1)
|
||||
|
||||
+10
-5
@@ -3,13 +3,15 @@ include ../../../Make.inc
|
||||
# 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 \
|
||||
Max_nnzero.o dcoco.o dcocr.o dcrco.o djdcox.o djdco.o dvtfg.o dgind_tri.o \
|
||||
gen_block.o\
|
||||
scrjd.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\
|
||||
zcoco.o zcocr.o zcrco.o zcrcr.o zcrjd.o zgindex.o zgind_tri.o
|
||||
scrco.o scrcr.o scocr.o scoco.o sgindex.o sgind_tri.o\
|
||||
ccoco.o ccocr.o ccrco.o ccrcr.o cgindex.o cgind_tri.o\
|
||||
zcoco.o zcocr.o zcrco.o zcrcr.o zgindex.o zgind_tri.o\
|
||||
$(XOBJS)
|
||||
|
||||
#
|
||||
# dgind_tri.o
|
||||
@@ -34,10 +36,13 @@ LIBFILE=$(LIBDIR)/$(LIBNAME)
|
||||
#
|
||||
|
||||
|
||||
lib: $(FOBJS)
|
||||
lib: xobjs $(FOBJS)
|
||||
$(AR) $(LIBDIR)/$(LIBNAME) $(OBJS)
|
||||
$(RANLIB) $(LIBDIR)/$(LIBNAME)
|
||||
|
||||
xobjs:
|
||||
(make $(XOBJS) FCOPT="$(FCOPT) $(EXTRA_OPT)")
|
||||
|
||||
clean: cleanobjs
|
||||
|
||||
veryclean: cleanobjs
|
||||
|
||||
@@ -296,9 +296,9 @@ C
|
||||
C Both right and left permutation required
|
||||
C
|
||||
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,
|
||||
& 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)))
|
||||
IF(IERROR .NE. 0) THEN
|
||||
IF (IERROR.EQ.3010) THEN
|
||||
@@ -313,7 +313,7 @@ C
|
||||
C Only right permutation required
|
||||
C
|
||||
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,
|
||||
& WORK,K,BETA,C,LDC,WORK(P),LWORKS,IERROR)
|
||||
LWORKS = INT(REAL(WORK(P)))
|
||||
@@ -330,7 +330,7 @@ C Only left permutation required
|
||||
C
|
||||
P=LWORKC+1
|
||||
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)))
|
||||
IF(IERROR .NE. 0) THEN
|
||||
IF (IERROR.EQ.3010) THEN
|
||||
|
||||
@@ -297,9 +297,9 @@ C
|
||||
C Both right and left permutation required
|
||||
C
|
||||
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,
|
||||
& 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))
|
||||
IF(IERROR .NE. 0) THEN
|
||||
IERROR=4011
|
||||
@@ -312,7 +312,7 @@ C
|
||||
C Only right permutation required
|
||||
C
|
||||
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,
|
||||
& WORK,K,BETA,C,LDC,WORK(P),LWORKS,IERROR)
|
||||
LWORKS = INT(WORK(P))
|
||||
@@ -327,7 +327,7 @@ C Only left permutation required
|
||||
C
|
||||
P=LWORKC+1
|
||||
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))
|
||||
IF(IERROR .NE. 0) THEN
|
||||
IERROR=4011
|
||||
|
||||
@@ -7119,7 +7119,7 @@ if test "X$FCOPT" == "X" ; then
|
||||
fi
|
||||
if test "X$psblas_cv_fc" == X"nag" ; then
|
||||
# Add needed options
|
||||
FCOPT="$FCOPT -mismatch -dcfuns -f2003"
|
||||
FCOPT="$FCOPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
|
||||
fi
|
||||
FFLAGS="${FCOPT}"
|
||||
|
||||
@@ -7152,7 +7152,7 @@ else
|
||||
fi
|
||||
if test "X$psblas_cv_fc" == X"nag" ; then
|
||||
# Add needed options
|
||||
F90COPT="$F90COPT -mismatch -dcfuns -f2003"
|
||||
F90COPT="$F90COPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
|
||||
EXTRA_OPT="-mismatch_all"
|
||||
F03COPT="${F90COPT}"
|
||||
else
|
||||
|
||||
+2
-2
@@ -399,7 +399,7 @@ if test "X$FCOPT" == "X" ; then
|
||||
fi
|
||||
if test "X$psblas_cv_fc" == X"nag" ; then
|
||||
# Add needed options
|
||||
FCOPT="$FCOPT -mismatch -dcfuns -f2003"
|
||||
FCOPT="$FCOPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
|
||||
fi
|
||||
FFLAGS="${FCOPT}"
|
||||
|
||||
@@ -432,7 +432,7 @@ else
|
||||
fi
|
||||
if test "X$psblas_cv_fc" == X"nag" ; then
|
||||
# Add needed options
|
||||
F90COPT="$F90COPT -mismatch -dcfuns -f2003"
|
||||
F90COPT="$F90COPT -dcfuns -f2003 -wmismatch=mpi_scatterv,mpi_alltoallv,mpi_gatherv"
|
||||
EXTRA_OPT="-mismatch_all"
|
||||
F03COPT="${F90COPT}"
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user