diff --git a/base/comm/internals/psi_cswapdata_a.F90 b/base/comm/internals/psi_cswapdata_a.F90 index 8b137397..844daa00 100644 --- a/base/comm/internals/psi_cswapdata_a.F90 +++ b/base/comm/internals/psi_cswapdata_a.F90 @@ -193,7 +193,7 @@ subroutine psi_cswapidxm(ctxt,icomm,flag,n,beta,y,idx, & logical, parameter :: usersend=.false. complex(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -680,7 +680,7 @@ subroutine psi_cswapidxv(ctxt,icomm,flag,beta,y,idx, & logical, parameter :: usersend=.false. complex(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_cswaptran_a.F90 b/base/comm/internals/psi_cswaptran_a.F90 index 3fa61d94..e46a556d 100644 --- a/base/comm/internals/psi_cswaptran_a.F90 +++ b/base/comm/internals/psi_cswaptran_a.F90 @@ -197,7 +197,7 @@ subroutine psi_ctranidxm(ctxt,icomm,flag,n,beta,y,idx,& logical, parameter :: usersend=.false. complex(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -691,7 +691,7 @@ subroutine psi_ctranidxv(ctxt,icomm,flag,beta,y,idx,& logical, parameter :: usersend=.false. complex(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_dswapdata_a.F90 b/base/comm/internals/psi_dswapdata_a.F90 index 6f1d4a10..d86025cf 100644 --- a/base/comm/internals/psi_dswapdata_a.F90 +++ b/base/comm/internals/psi_dswapdata_a.F90 @@ -193,7 +193,7 @@ subroutine psi_dswapidxm(ctxt,icomm,flag,n,beta,y,idx, & logical, parameter :: usersend=.false. real(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -680,7 +680,7 @@ subroutine psi_dswapidxv(ctxt,icomm,flag,beta,y,idx, & logical, parameter :: usersend=.false. real(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_dswaptran_a.F90 b/base/comm/internals/psi_dswaptran_a.F90 index df04c391..e5966c2e 100644 --- a/base/comm/internals/psi_dswaptran_a.F90 +++ b/base/comm/internals/psi_dswaptran_a.F90 @@ -197,7 +197,7 @@ subroutine psi_dtranidxm(ctxt,icomm,flag,n,beta,y,idx,& logical, parameter :: usersend=.false. real(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -691,7 +691,7 @@ subroutine psi_dtranidxv(ctxt,icomm,flag,beta,y,idx,& logical, parameter :: usersend=.false. real(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_eswapdata_a.F90 b/base/comm/internals/psi_eswapdata_a.F90 index 6e2d9557..d917b64c 100644 --- a/base/comm/internals/psi_eswapdata_a.F90 +++ b/base/comm/internals/psi_eswapdata_a.F90 @@ -193,7 +193,7 @@ subroutine psi_eswapidxm(ctxt,icomm,flag,n,beta,y,idx, & logical, parameter :: usersend=.false. integer(psb_epk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -680,7 +680,7 @@ subroutine psi_eswapidxv(ctxt,icomm,flag,beta,y,idx, & logical, parameter :: usersend=.false. integer(psb_epk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_eswaptran_a.F90 b/base/comm/internals/psi_eswaptran_a.F90 index e105c88b..67a92569 100644 --- a/base/comm/internals/psi_eswaptran_a.F90 +++ b/base/comm/internals/psi_eswaptran_a.F90 @@ -197,7 +197,7 @@ subroutine psi_etranidxm(ctxt,icomm,flag,n,beta,y,idx,& logical, parameter :: usersend=.false. integer(psb_epk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -691,7 +691,7 @@ subroutine psi_etranidxv(ctxt,icomm,flag,beta,y,idx,& logical, parameter :: usersend=.false. integer(psb_epk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_i2swapdata_a.F90 b/base/comm/internals/psi_i2swapdata_a.F90 index 4acdbc9e..3d82d5b1 100644 --- a/base/comm/internals/psi_i2swapdata_a.F90 +++ b/base/comm/internals/psi_i2swapdata_a.F90 @@ -193,7 +193,7 @@ subroutine psi_i2swapidxm(ctxt,icomm,flag,n,beta,y,idx, & logical, parameter :: usersend=.false. integer(psb_i2pk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -680,7 +680,7 @@ subroutine psi_i2swapidxv(ctxt,icomm,flag,beta,y,idx, & logical, parameter :: usersend=.false. integer(psb_i2pk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_i2swaptran_a.F90 b/base/comm/internals/psi_i2swaptran_a.F90 index f879702c..925e8a0c 100644 --- a/base/comm/internals/psi_i2swaptran_a.F90 +++ b/base/comm/internals/psi_i2swaptran_a.F90 @@ -197,7 +197,7 @@ subroutine psi_i2tranidxm(ctxt,icomm,flag,n,beta,y,idx,& logical, parameter :: usersend=.false. integer(psb_i2pk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -691,7 +691,7 @@ subroutine psi_i2tranidxv(ctxt,icomm,flag,beta,y,idx,& logical, parameter :: usersend=.false. integer(psb_i2pk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_mswapdata_a.F90 b/base/comm/internals/psi_mswapdata_a.F90 index 0a1a3a61..bda186b8 100644 --- a/base/comm/internals/psi_mswapdata_a.F90 +++ b/base/comm/internals/psi_mswapdata_a.F90 @@ -193,7 +193,7 @@ subroutine psi_mswapidxm(ctxt,icomm,flag,n,beta,y,idx, & logical, parameter :: usersend=.false. integer(psb_mpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -680,7 +680,7 @@ subroutine psi_mswapidxv(ctxt,icomm,flag,beta,y,idx, & logical, parameter :: usersend=.false. integer(psb_mpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_mswaptran_a.F90 b/base/comm/internals/psi_mswaptran_a.F90 index 8d6e0b52..65e3e6c7 100644 --- a/base/comm/internals/psi_mswaptran_a.F90 +++ b/base/comm/internals/psi_mswaptran_a.F90 @@ -197,7 +197,7 @@ subroutine psi_mtranidxm(ctxt,icomm,flag,n,beta,y,idx,& logical, parameter :: usersend=.false. integer(psb_mpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -691,7 +691,7 @@ subroutine psi_mtranidxv(ctxt,icomm,flag,beta,y,idx,& logical, parameter :: usersend=.false. integer(psb_mpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_sswapdata_a.F90 b/base/comm/internals/psi_sswapdata_a.F90 index 0f1f26da..ae456162 100644 --- a/base/comm/internals/psi_sswapdata_a.F90 +++ b/base/comm/internals/psi_sswapdata_a.F90 @@ -193,7 +193,7 @@ subroutine psi_sswapidxm(ctxt,icomm,flag,n,beta,y,idx, & logical, parameter :: usersend=.false. real(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -680,7 +680,7 @@ subroutine psi_sswapidxv(ctxt,icomm,flag,beta,y,idx, & logical, parameter :: usersend=.false. real(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_sswaptran_a.F90 b/base/comm/internals/psi_sswaptran_a.F90 index 10e741dd..f4f9513e 100644 --- a/base/comm/internals/psi_sswaptran_a.F90 +++ b/base/comm/internals/psi_sswaptran_a.F90 @@ -197,7 +197,7 @@ subroutine psi_stranidxm(ctxt,icomm,flag,n,beta,y,idx,& logical, parameter :: usersend=.false. real(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -691,7 +691,7 @@ subroutine psi_stranidxv(ctxt,icomm,flag,beta,y,idx,& logical, parameter :: usersend=.false. real(psb_spk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_zswapdata_a.F90 b/base/comm/internals/psi_zswapdata_a.F90 index f37dc1c7..c0ac76f5 100644 --- a/base/comm/internals/psi_zswapdata_a.F90 +++ b/base/comm/internals/psi_zswapdata_a.F90 @@ -193,7 +193,7 @@ subroutine psi_zswapidxm(ctxt,icomm,flag,n,beta,y,idx, & logical, parameter :: usersend=.false. complex(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -680,7 +680,7 @@ subroutine psi_zswapidxv(ctxt,icomm,flag,beta,y,idx, & logical, parameter :: usersend=.false. complex(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/comm/internals/psi_zswaptran_a.F90 b/base/comm/internals/psi_zswaptran_a.F90 index 8b4e4268..804acb6b 100644 --- a/base/comm/internals/psi_zswaptran_a.F90 +++ b/base/comm/internals/psi_zswaptran_a.F90 @@ -197,7 +197,7 @@ subroutine psi_ztranidxm(ctxt,icomm,flag,n,beta,y,idx,& logical, parameter :: usersend=.false. complex(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name @@ -691,7 +691,7 @@ subroutine psi_ztranidxv(ctxt,icomm,flag,beta,y,idx,& logical, parameter :: usersend=.false. complex(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf -#if !defined(FLANG) +#if !defined(PSB_CMP_FLANG) volatile :: sndbuf, rcvbuf #endif character(len=20) :: name diff --git a/base/modules/psb_const_mod.F90 b/base/modules/psb_const_mod.F90 index b4cacdca..d10bf974 100644 --- a/base/modules/psb_const_mod.F90 +++ b/base/modules/psb_const_mod.F90 @@ -35,7 +35,7 @@ module psb_const_mod use iso_fortran_env ! This is a 2-byte integer, just in case integer, parameter :: psb_i2pk_ = int16 - ! This is always a 4-byte integer, for MPI-related stuff + ! This is always a 4-byte integer. integer, parameter :: psb_mpk_ = int32 ! This is always an 8-byte integer. integer, parameter :: psb_epk_ = int64 @@ -51,7 +51,7 @@ module psb_const_mod ! This is a 2-byte integer, just in case integer, parameter :: i2ndig=4 integer, parameter :: psb_i2pk_ = selected_int_kind(i2ndig) - ! This is always a 4-byte integer, for MPI-related stuff + ! This is always a 4-byte integer. integer, parameter :: indig=8 integer, parameter :: psb_mpk_ = selected_int_kind(indig) ! This is always an 8-byte integer. diff --git a/base/modules/serial/psb_c_csc_mat_mod.f90 b/base/modules/serial/psb_c_csc_mat_mod.f90 index 5ccdd19a..d0f5a719 100644 --- a/base/modules/serial/psb_c_csc_mat_mod.f90 +++ b/base/modules/serial/psb_c_csc_mat_mod.f90 @@ -912,6 +912,23 @@ module psb_c_csc_mat_mod end subroutine psb_lc_csc_scals end interface + interface + subroutine psb_ccscspspmm(a,b,c,info) + import + implicit none + class(psb_c_csc_sparse_mat), intent(in) :: a,b + type(psb_c_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ccscspspmm + subroutine psb_lccscspspmm(a,b,c,info) + import + implicit none + class(psb_lc_csc_sparse_mat), intent(in) :: a,b + type(psb_lc_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lccscspspmm + end interface + contains ! == =================================== diff --git a/base/modules/serial/psb_c_csr_mat_mod.f90 b/base/modules/serial/psb_c_csr_mat_mod.f90 index a39c204b..3aa09667 100644 --- a/base/modules/serial/psb_c_csr_mat_mod.f90 +++ b/base/modules/serial/psb_c_csr_mat_mod.f90 @@ -1162,6 +1162,23 @@ module psb_c_csr_mat_mod end subroutine psb_lc_csr_aclsum end interface + ! Interfaces for SPSPMM + interface + subroutine psb_ccsrspspmm(a,b,c,info) + import + implicit none + class(psb_c_csr_sparse_mat), intent(in) :: a,b + type(psb_c_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ccsrspspmm + subroutine psb_lccsrspspmm(a,b,c,info) + import + implicit none + class(psb_lc_csr_sparse_mat), intent(in) :: a,b + type(psb_lc_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lccsrspspmm + end interface contains diff --git a/base/modules/serial/psb_c_mat_mod.F90 b/base/modules/serial/psb_c_mat_mod.F90 index 165a5451..91d8bf4d 100644 --- a/base/modules/serial/psb_c_mat_mod.F90 +++ b/base/modules/serial/psb_c_mat_mod.F90 @@ -78,6 +78,8 @@ ! module psb_c_mat_mod + use psb_c_vect_mod + use psb_i_vect_mod use psb_c_base_mat_mod use psb_c_csr_mat_mod, only : psb_c_csr_sparse_mat, psb_lc_csr_sparse_mat,& & psb_c_ecsr_sparse_mat @@ -661,9 +663,8 @@ module psb_c_mat_mod interface subroutine psb_c_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info) - use psb_c_vect_mod, only : psb_c_vect_type - use psb_i_vect_mod, only : psb_i_vect_type - import :: psb_ipk_, psb_lpk_, psb_cspmat_type + import :: psb_ipk_, psb_lpk_, psb_cspmat_type, & + & psb_c_vect_type, psb_i_vect_type class(psb_cspmat_type), intent(inout) :: a type(psb_c_vect_type), intent(inout) :: val type(psb_i_vect_type), intent(inout) :: ia, ja diff --git a/base/modules/serial/psb_c_serial_mod.f90 b/base/modules/serial/psb_c_serial_mod.f90 index 9c43f3e7..5ad71641 100644 --- a/base/modules/serial/psb_c_serial_mod.f90 +++ b/base/modules/serial/psb_c_serial_mod.f90 @@ -60,24 +60,8 @@ module psb_c_serial_mod type(psb_cspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_cspspmm - subroutine psb_ccsrspspmm(a,b,c,info) - use psb_c_mat_mod, only : psb_c_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_c_csr_sparse_mat), intent(in) :: a,b - type(psb_c_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_ccsrspspmm - subroutine psb_ccscspspmm(a,b,c,info) - use psb_c_mat_mod, only : psb_c_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_c_csc_sparse_mat), intent(in) :: a,b - type(psb_c_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_ccscspspmm - end interface - + end interface psb_spspmm + interface psb_symbmm subroutine psb_csymbmm(a,b,c,info) use psb_c_mat_mod, only : psb_cspmat_type @@ -114,6 +98,16 @@ module psb_c_serial_mod end subroutine psb_cbase_numbmm end interface psb_numbmm + interface psb_aplusat + subroutine psb_caplusat(ain,aout,info) + use psb_c_mat_mod, only : psb_cspmat_type + import :: psb_ipk_ + implicit none + type(psb_cspmat_type) :: ain, aout + integer(psb_ipk_) :: info + end subroutine psb_caplusat + end interface + interface psb_rwextd subroutine psb_crwextd(nr,a,info,b,rowscale) use psb_c_mat_mod, only : psb_cspmat_type @@ -232,22 +226,6 @@ module psb_c_serial_mod type(psb_lcspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lcspspmm - subroutine psb_lccsrspspmm(a,b,c,info) - use psb_c_mat_mod, only : psb_lc_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lc_csr_sparse_mat), intent(in) :: a,b - type(psb_lc_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lccsrspspmm - subroutine psb_lccscspspmm(a,b,c,info) - use psb_c_mat_mod, only : psb_lc_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lc_csc_sparse_mat), intent(in) :: a,b - type(psb_lc_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lccscspspmm end interface psb_spspmm interface psb_symbmm diff --git a/base/modules/serial/psb_d_csc_mat_mod.f90 b/base/modules/serial/psb_d_csc_mat_mod.f90 index 08d31256..9618536f 100644 --- a/base/modules/serial/psb_d_csc_mat_mod.f90 +++ b/base/modules/serial/psb_d_csc_mat_mod.f90 @@ -912,6 +912,23 @@ module psb_d_csc_mat_mod end subroutine psb_ld_csc_scals end interface + interface + subroutine psb_dcscspspmm(a,b,c,info) + import + implicit none + class(psb_d_csc_sparse_mat), intent(in) :: a,b + type(psb_d_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dcscspspmm + subroutine psb_ldcscspspmm(a,b,c,info) + import + implicit none + class(psb_ld_csc_sparse_mat), intent(in) :: a,b + type(psb_ld_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldcscspspmm + end interface + contains ! == =================================== diff --git a/base/modules/serial/psb_d_csr_mat_mod.f90 b/base/modules/serial/psb_d_csr_mat_mod.f90 index 0669725f..bee32af0 100644 --- a/base/modules/serial/psb_d_csr_mat_mod.f90 +++ b/base/modules/serial/psb_d_csr_mat_mod.f90 @@ -1162,6 +1162,23 @@ module psb_d_csr_mat_mod end subroutine psb_ld_csr_aclsum end interface + ! Interfaces for SPSPMM + interface + subroutine psb_dcsrspspmm(a,b,c,info) + import + implicit none + class(psb_d_csr_sparse_mat), intent(in) :: a,b + type(psb_d_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dcsrspspmm + subroutine psb_ldcsrspspmm(a,b,c,info) + import + implicit none + class(psb_ld_csr_sparse_mat), intent(in) :: a,b + type(psb_ld_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldcsrspspmm + end interface contains diff --git a/base/modules/serial/psb_d_mat_mod.F90 b/base/modules/serial/psb_d_mat_mod.F90 index a4318ba4..754196b7 100644 --- a/base/modules/serial/psb_d_mat_mod.F90 +++ b/base/modules/serial/psb_d_mat_mod.F90 @@ -78,6 +78,8 @@ ! module psb_d_mat_mod + use psb_d_vect_mod + use psb_i_vect_mod use psb_d_base_mat_mod use psb_d_csr_mat_mod, only : psb_d_csr_sparse_mat, psb_ld_csr_sparse_mat,& & psb_d_ecsr_sparse_mat @@ -661,9 +663,8 @@ module psb_d_mat_mod interface subroutine psb_d_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info) - use psb_d_vect_mod, only : psb_d_vect_type - use psb_i_vect_mod, only : psb_i_vect_type - import :: psb_ipk_, psb_lpk_, psb_dspmat_type + import :: psb_ipk_, psb_lpk_, psb_dspmat_type, & + & psb_d_vect_type, psb_i_vect_type class(psb_dspmat_type), intent(inout) :: a type(psb_d_vect_type), intent(inout) :: val type(psb_i_vect_type), intent(inout) :: ia, ja diff --git a/base/modules/serial/psb_d_serial_mod.f90 b/base/modules/serial/psb_d_serial_mod.f90 index 523282f5..6446a9f5 100644 --- a/base/modules/serial/psb_d_serial_mod.f90 +++ b/base/modules/serial/psb_d_serial_mod.f90 @@ -60,24 +60,8 @@ module psb_d_serial_mod type(psb_dspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_dspspmm - subroutine psb_dcsrspspmm(a,b,c,info) - use psb_d_mat_mod, only : psb_d_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_d_csr_sparse_mat), intent(in) :: a,b - type(psb_d_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_dcsrspspmm - subroutine psb_dcscspspmm(a,b,c,info) - use psb_d_mat_mod, only : psb_d_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_d_csc_sparse_mat), intent(in) :: a,b - type(psb_d_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_dcscspspmm - end interface - + end interface psb_spspmm + interface psb_symbmm subroutine psb_dsymbmm(a,b,c,info) use psb_d_mat_mod, only : psb_dspmat_type @@ -114,6 +98,16 @@ module psb_d_serial_mod end subroutine psb_dbase_numbmm end interface psb_numbmm + interface psb_aplusat + subroutine psb_daplusat(ain,aout,info) + use psb_d_mat_mod, only : psb_dspmat_type + import :: psb_ipk_ + implicit none + type(psb_dspmat_type) :: ain, aout + integer(psb_ipk_) :: info + end subroutine psb_daplusat + end interface + interface psb_rwextd subroutine psb_drwextd(nr,a,info,b,rowscale) use psb_d_mat_mod, only : psb_dspmat_type @@ -232,22 +226,6 @@ module psb_d_serial_mod type(psb_ldspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_ldspspmm - subroutine psb_ldcsrspspmm(a,b,c,info) - use psb_d_mat_mod, only : psb_ld_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ld_csr_sparse_mat), intent(in) :: a,b - type(psb_ld_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_ldcsrspspmm - subroutine psb_ldcscspspmm(a,b,c,info) - use psb_d_mat_mod, only : psb_ld_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ld_csc_sparse_mat), intent(in) :: a,b - type(psb_ld_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_ldcscspspmm end interface psb_spspmm interface psb_symbmm diff --git a/base/modules/serial/psb_s_csc_mat_mod.f90 b/base/modules/serial/psb_s_csc_mat_mod.f90 index db874600..75cccc9d 100644 --- a/base/modules/serial/psb_s_csc_mat_mod.f90 +++ b/base/modules/serial/psb_s_csc_mat_mod.f90 @@ -912,6 +912,23 @@ module psb_s_csc_mat_mod end subroutine psb_ls_csc_scals end interface + interface + subroutine psb_scscspspmm(a,b,c,info) + import + implicit none + class(psb_s_csc_sparse_mat), intent(in) :: a,b + type(psb_s_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_scscspspmm + subroutine psb_lscscspspmm(a,b,c,info) + import + implicit none + class(psb_ls_csc_sparse_mat), intent(in) :: a,b + type(psb_ls_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lscscspspmm + end interface + contains ! == =================================== diff --git a/base/modules/serial/psb_s_csr_mat_mod.f90 b/base/modules/serial/psb_s_csr_mat_mod.f90 index 356e5b32..b70b2dc6 100644 --- a/base/modules/serial/psb_s_csr_mat_mod.f90 +++ b/base/modules/serial/psb_s_csr_mat_mod.f90 @@ -1162,6 +1162,23 @@ module psb_s_csr_mat_mod end subroutine psb_ls_csr_aclsum end interface + ! Interfaces for SPSPMM + interface + subroutine psb_scsrspspmm(a,b,c,info) + import + implicit none + class(psb_s_csr_sparse_mat), intent(in) :: a,b + type(psb_s_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_scsrspspmm + subroutine psb_lscsrspspmm(a,b,c,info) + import + implicit none + class(psb_ls_csr_sparse_mat), intent(in) :: a,b + type(psb_ls_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lscsrspspmm + end interface contains diff --git a/base/modules/serial/psb_s_mat_mod.F90 b/base/modules/serial/psb_s_mat_mod.F90 index e342ed8c..ac619c03 100644 --- a/base/modules/serial/psb_s_mat_mod.F90 +++ b/base/modules/serial/psb_s_mat_mod.F90 @@ -78,6 +78,8 @@ ! module psb_s_mat_mod + use psb_s_vect_mod + use psb_i_vect_mod use psb_s_base_mat_mod use psb_s_csr_mat_mod, only : psb_s_csr_sparse_mat, psb_ls_csr_sparse_mat,& & psb_s_ecsr_sparse_mat @@ -661,9 +663,8 @@ module psb_s_mat_mod interface subroutine psb_s_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info) - use psb_s_vect_mod, only : psb_s_vect_type - use psb_i_vect_mod, only : psb_i_vect_type - import :: psb_ipk_, psb_lpk_, psb_sspmat_type + import :: psb_ipk_, psb_lpk_, psb_sspmat_type, & + & psb_s_vect_type, psb_i_vect_type class(psb_sspmat_type), intent(inout) :: a type(psb_s_vect_type), intent(inout) :: val type(psb_i_vect_type), intent(inout) :: ia, ja diff --git a/base/modules/serial/psb_s_serial_mod.f90 b/base/modules/serial/psb_s_serial_mod.f90 index 81583f64..c475ab8d 100644 --- a/base/modules/serial/psb_s_serial_mod.f90 +++ b/base/modules/serial/psb_s_serial_mod.f90 @@ -60,24 +60,8 @@ module psb_s_serial_mod type(psb_sspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_sspspmm - subroutine psb_scsrspspmm(a,b,c,info) - use psb_s_mat_mod, only : psb_s_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_s_csr_sparse_mat), intent(in) :: a,b - type(psb_s_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_scsrspspmm - subroutine psb_scscspspmm(a,b,c,info) - use psb_s_mat_mod, only : psb_s_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_s_csc_sparse_mat), intent(in) :: a,b - type(psb_s_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_scscspspmm - end interface - + end interface psb_spspmm + interface psb_symbmm subroutine psb_ssymbmm(a,b,c,info) use psb_s_mat_mod, only : psb_sspmat_type @@ -114,6 +98,16 @@ module psb_s_serial_mod end subroutine psb_sbase_numbmm end interface psb_numbmm + interface psb_aplusat + subroutine psb_saplusat(ain,aout,info) + use psb_s_mat_mod, only : psb_sspmat_type + import :: psb_ipk_ + implicit none + type(psb_sspmat_type) :: ain, aout + integer(psb_ipk_) :: info + end subroutine psb_saplusat + end interface + interface psb_rwextd subroutine psb_srwextd(nr,a,info,b,rowscale) use psb_s_mat_mod, only : psb_sspmat_type @@ -232,22 +226,6 @@ module psb_s_serial_mod type(psb_lsspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lsspspmm - subroutine psb_lscsrspspmm(a,b,c,info) - use psb_s_mat_mod, only : psb_ls_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ls_csr_sparse_mat), intent(in) :: a,b - type(psb_ls_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lscsrspspmm - subroutine psb_lscscspspmm(a,b,c,info) - use psb_s_mat_mod, only : psb_ls_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ls_csc_sparse_mat), intent(in) :: a,b - type(psb_ls_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lscscspspmm end interface psb_spspmm interface psb_symbmm diff --git a/base/modules/serial/psb_z_csc_mat_mod.f90 b/base/modules/serial/psb_z_csc_mat_mod.f90 index b9828f59..023bbf01 100644 --- a/base/modules/serial/psb_z_csc_mat_mod.f90 +++ b/base/modules/serial/psb_z_csc_mat_mod.f90 @@ -912,6 +912,23 @@ module psb_z_csc_mat_mod end subroutine psb_lz_csc_scals end interface + interface + subroutine psb_zcscspspmm(a,b,c,info) + import + implicit none + class(psb_z_csc_sparse_mat), intent(in) :: a,b + type(psb_z_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zcscspspmm + subroutine psb_lzcscspspmm(a,b,c,info) + import + implicit none + class(psb_lz_csc_sparse_mat), intent(in) :: a,b + type(psb_lz_csc_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzcscspspmm + end interface + contains ! == =================================== diff --git a/base/modules/serial/psb_z_csr_mat_mod.f90 b/base/modules/serial/psb_z_csr_mat_mod.f90 index 0bc66bcc..1703c6c8 100644 --- a/base/modules/serial/psb_z_csr_mat_mod.f90 +++ b/base/modules/serial/psb_z_csr_mat_mod.f90 @@ -1162,6 +1162,23 @@ module psb_z_csr_mat_mod end subroutine psb_lz_csr_aclsum end interface + ! Interfaces for SPSPMM + interface + subroutine psb_zcsrspspmm(a,b,c,info) + import + implicit none + class(psb_z_csr_sparse_mat), intent(in) :: a,b + type(psb_z_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zcsrspspmm + subroutine psb_lzcsrspspmm(a,b,c,info) + import + implicit none + class(psb_lz_csr_sparse_mat), intent(in) :: a,b + type(psb_lz_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzcsrspspmm + end interface contains diff --git a/base/modules/serial/psb_z_mat_mod.F90 b/base/modules/serial/psb_z_mat_mod.F90 index 47342aee..521e665a 100644 --- a/base/modules/serial/psb_z_mat_mod.F90 +++ b/base/modules/serial/psb_z_mat_mod.F90 @@ -78,6 +78,8 @@ ! module psb_z_mat_mod + use psb_z_vect_mod + use psb_i_vect_mod use psb_z_base_mat_mod use psb_z_csr_mat_mod, only : psb_z_csr_sparse_mat, psb_lz_csr_sparse_mat,& & psb_z_ecsr_sparse_mat @@ -661,9 +663,8 @@ module psb_z_mat_mod interface subroutine psb_z_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info) - use psb_z_vect_mod, only : psb_z_vect_type - use psb_i_vect_mod, only : psb_i_vect_type - import :: psb_ipk_, psb_lpk_, psb_zspmat_type + import :: psb_ipk_, psb_lpk_, psb_zspmat_type, & + & psb_z_vect_type, psb_i_vect_type class(psb_zspmat_type), intent(inout) :: a type(psb_z_vect_type), intent(inout) :: val type(psb_i_vect_type), intent(inout) :: ia, ja diff --git a/base/modules/serial/psb_z_serial_mod.f90 b/base/modules/serial/psb_z_serial_mod.f90 index dbfce00b..6339f5e1 100644 --- a/base/modules/serial/psb_z_serial_mod.f90 +++ b/base/modules/serial/psb_z_serial_mod.f90 @@ -60,24 +60,8 @@ module psb_z_serial_mod type(psb_zspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_zspspmm - subroutine psb_zcsrspspmm(a,b,c,info) - use psb_z_mat_mod, only : psb_z_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_z_csr_sparse_mat), intent(in) :: a,b - type(psb_z_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_zcsrspspmm - subroutine psb_zcscspspmm(a,b,c,info) - use psb_z_mat_mod, only : psb_z_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_z_csc_sparse_mat), intent(in) :: a,b - type(psb_z_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_zcscspspmm - end interface - + end interface psb_spspmm + interface psb_symbmm subroutine psb_zsymbmm(a,b,c,info) use psb_z_mat_mod, only : psb_zspmat_type @@ -114,6 +98,16 @@ module psb_z_serial_mod end subroutine psb_zbase_numbmm end interface psb_numbmm + interface psb_aplusat + subroutine psb_zaplusat(ain,aout,info) + use psb_z_mat_mod, only : psb_zspmat_type + import :: psb_ipk_ + implicit none + type(psb_zspmat_type) :: ain, aout + integer(psb_ipk_) :: info + end subroutine psb_zaplusat + end interface + interface psb_rwextd subroutine psb_zrwextd(nr,a,info,b,rowscale) use psb_z_mat_mod, only : psb_zspmat_type @@ -232,22 +226,6 @@ module psb_z_serial_mod type(psb_lzspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lzspspmm - subroutine psb_lzcsrspspmm(a,b,c,info) - use psb_z_mat_mod, only : psb_lz_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lz_csr_sparse_mat), intent(in) :: a,b - type(psb_lz_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lzcsrspspmm - subroutine psb_lzcscspspmm(a,b,c,info) - use psb_z_mat_mod, only : psb_lz_csc_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lz_csc_sparse_mat), intent(in) :: a,b - type(psb_lz_csc_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lzcscspspmm end interface psb_spspmm interface psb_symbmm diff --git a/base/serial/Makefile b/base/serial/Makefile index ec0e2c82..57e4bfa1 100644 --- a/base/serial/Makefile +++ b/base/serial/Makefile @@ -11,6 +11,7 @@ FOBJS = psb_lsame.o psi_m_serial_impl.o psi_e_serial_impl.o \ smmp.o lsmmp.o \ psb_sgeprt.o psb_dgeprt.o psb_cgeprt.o psb_zgeprt.o\ psb_spdot_srtd.o psb_aspxpby.o psb_spge_dot.o\ + psb_saplusat.o psb_daplusat.o psb_caplusat.o psb_zaplusat.o \ psb_samax_s.o psb_damax_s.o psb_camax_s.o psb_zamax_s.o \ psb_sasum_s.o psb_dasum_s.o psb_casum_s.o psb_zasum_s.o diff --git a/base/serial/impl/psb_c_csc_impl.F90 b/base/serial/impl/psb_c_csc_impl.F90 index 94744dcf..4073a1ac 100644 --- a/base/serial/impl/psb_c_csc_impl.F90 +++ b/base/serial/impl/psb_c_csc_impl.F90 @@ -2824,8 +2824,8 @@ subroutine psb_c_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_c_csc_print subroutine psb_ccscspspmm(a,b,c,info) - use psb_c_mat_mod - use psb_serial_mod, psb_protect_name => psb_ccscspspmm + use psb_c_csc_mat_mod, psb_protect_name => psb_ccscspspmm + use psb_serial_mod implicit none @@ -4664,8 +4664,8 @@ subroutine psb_lc_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_lc_csc_print subroutine psb_lccscspspmm(a,b,c,info) - use psb_c_mat_mod - use psb_serial_mod, psb_protect_name => psb_lccscspspmm + use psb_c_csc_mat_mod, psb_protect_name => psb_lccscspspmm + use psb_serial_mod implicit none diff --git a/base/serial/impl/psb_c_csr_impl.F90 b/base/serial/impl/psb_c_csr_impl.F90 index 904bc6e7..76b96288 100644 --- a/base/serial/impl/psb_c_csr_impl.F90 +++ b/base/serial/impl/psb_c_csr_impl.F90 @@ -3657,8 +3657,8 @@ end subroutine psb_c_cp_csr_from_fmt #if defined(PSB_OPENMP) subroutine psb_ccsrspspmm(a,b,c,info) - use psb_c_mat_mod - use psb_serial_mod, psb_protect_name => psb_ccsrspspmm + use psb_c_csr_mat_mod, psb_protect_name => psb_ccsrspspmm + use psb_serial_mod implicit none @@ -4204,8 +4204,8 @@ end subroutine psb_ccsrspspmm #else subroutine psb_ccsrspspmm(a,b,c,info) - use psb_c_mat_mod - use psb_serial_mod, psb_protect_name => psb_ccsrspspmm + use psb_c_csr_mat_mod, psb_protect_name => psb_ccsrspspmm + use psb_serial_mod implicit none @@ -6580,8 +6580,8 @@ end subroutine psb_lc_cp_csr_from_fmt !!$end subroutine psb_lc_csr_clean_zeros subroutine psb_lccsrspspmm(a,b,c,info) - use psb_c_mat_mod - use psb_serial_mod, psb_protect_name => psb_lccsrspspmm + use psb_c_csr_mat_mod, psb_protect_name => psb_lccsrspspmm + use psb_serial_mod implicit none diff --git a/base/serial/impl/psb_d_csc_impl.F90 b/base/serial/impl/psb_d_csc_impl.F90 index ba38e763..e91285cd 100644 --- a/base/serial/impl/psb_d_csc_impl.F90 +++ b/base/serial/impl/psb_d_csc_impl.F90 @@ -2824,8 +2824,8 @@ subroutine psb_d_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_d_csc_print subroutine psb_dcscspspmm(a,b,c,info) - use psb_d_mat_mod - use psb_serial_mod, psb_protect_name => psb_dcscspspmm + use psb_d_csc_mat_mod, psb_protect_name => psb_dcscspspmm + use psb_serial_mod implicit none @@ -4664,8 +4664,8 @@ subroutine psb_ld_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_ld_csc_print subroutine psb_ldcscspspmm(a,b,c,info) - use psb_d_mat_mod - use psb_serial_mod, psb_protect_name => psb_ldcscspspmm + use psb_d_csc_mat_mod, psb_protect_name => psb_ldcscspspmm + use psb_serial_mod implicit none diff --git a/base/serial/impl/psb_d_csr_impl.F90 b/base/serial/impl/psb_d_csr_impl.F90 index 952bb1e9..17d6bb8e 100644 --- a/base/serial/impl/psb_d_csr_impl.F90 +++ b/base/serial/impl/psb_d_csr_impl.F90 @@ -3657,8 +3657,8 @@ end subroutine psb_d_cp_csr_from_fmt #if defined(PSB_OPENMP) subroutine psb_dcsrspspmm(a,b,c,info) - use psb_d_mat_mod - use psb_serial_mod, psb_protect_name => psb_dcsrspspmm + use psb_d_csr_mat_mod, psb_protect_name => psb_dcsrspspmm + use psb_serial_mod implicit none @@ -4204,8 +4204,8 @@ end subroutine psb_dcsrspspmm #else subroutine psb_dcsrspspmm(a,b,c,info) - use psb_d_mat_mod - use psb_serial_mod, psb_protect_name => psb_dcsrspspmm + use psb_d_csr_mat_mod, psb_protect_name => psb_dcsrspspmm + use psb_serial_mod implicit none @@ -6580,8 +6580,8 @@ end subroutine psb_ld_cp_csr_from_fmt !!$end subroutine psb_ld_csr_clean_zeros subroutine psb_ldcsrspspmm(a,b,c,info) - use psb_d_mat_mod - use psb_serial_mod, psb_protect_name => psb_ldcsrspspmm + use psb_d_csr_mat_mod, psb_protect_name => psb_ldcsrspspmm + use psb_serial_mod implicit none diff --git a/base/serial/impl/psb_s_csc_impl.F90 b/base/serial/impl/psb_s_csc_impl.F90 index 73c11ce6..9dd32d58 100644 --- a/base/serial/impl/psb_s_csc_impl.F90 +++ b/base/serial/impl/psb_s_csc_impl.F90 @@ -2824,8 +2824,8 @@ subroutine psb_s_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_s_csc_print subroutine psb_scscspspmm(a,b,c,info) - use psb_s_mat_mod - use psb_serial_mod, psb_protect_name => psb_scscspspmm + use psb_s_csc_mat_mod, psb_protect_name => psb_scscspspmm + use psb_serial_mod implicit none @@ -4664,8 +4664,8 @@ subroutine psb_ls_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_ls_csc_print subroutine psb_lscscspspmm(a,b,c,info) - use psb_s_mat_mod - use psb_serial_mod, psb_protect_name => psb_lscscspspmm + use psb_s_csc_mat_mod, psb_protect_name => psb_lscscspspmm + use psb_serial_mod implicit none diff --git a/base/serial/impl/psb_s_csr_impl.F90 b/base/serial/impl/psb_s_csr_impl.F90 index f384ef33..5522bf85 100644 --- a/base/serial/impl/psb_s_csr_impl.F90 +++ b/base/serial/impl/psb_s_csr_impl.F90 @@ -3657,8 +3657,8 @@ end subroutine psb_s_cp_csr_from_fmt #if defined(PSB_OPENMP) subroutine psb_scsrspspmm(a,b,c,info) - use psb_s_mat_mod - use psb_serial_mod, psb_protect_name => psb_scsrspspmm + use psb_s_csr_mat_mod, psb_protect_name => psb_scsrspspmm + use psb_serial_mod implicit none @@ -4204,8 +4204,8 @@ end subroutine psb_scsrspspmm #else subroutine psb_scsrspspmm(a,b,c,info) - use psb_s_mat_mod - use psb_serial_mod, psb_protect_name => psb_scsrspspmm + use psb_s_csr_mat_mod, psb_protect_name => psb_scsrspspmm + use psb_serial_mod implicit none @@ -6580,8 +6580,8 @@ end subroutine psb_ls_cp_csr_from_fmt !!$end subroutine psb_ls_csr_clean_zeros subroutine psb_lscsrspspmm(a,b,c,info) - use psb_s_mat_mod - use psb_serial_mod, psb_protect_name => psb_lscsrspspmm + use psb_s_csr_mat_mod, psb_protect_name => psb_lscsrspspmm + use psb_serial_mod implicit none diff --git a/base/serial/impl/psb_z_csc_impl.F90 b/base/serial/impl/psb_z_csc_impl.F90 index 95de776d..4a06d8d8 100644 --- a/base/serial/impl/psb_z_csc_impl.F90 +++ b/base/serial/impl/psb_z_csc_impl.F90 @@ -2824,8 +2824,8 @@ subroutine psb_z_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_z_csc_print subroutine psb_zcscspspmm(a,b,c,info) - use psb_z_mat_mod - use psb_serial_mod, psb_protect_name => psb_zcscspspmm + use psb_z_csc_mat_mod, psb_protect_name => psb_zcscspspmm + use psb_serial_mod implicit none @@ -4664,8 +4664,8 @@ subroutine psb_lz_csc_print(iout,a,iv,head,ivr,ivc) end subroutine psb_lz_csc_print subroutine psb_lzcscspspmm(a,b,c,info) - use psb_z_mat_mod - use psb_serial_mod, psb_protect_name => psb_lzcscspspmm + use psb_z_csc_mat_mod, psb_protect_name => psb_lzcscspspmm + use psb_serial_mod implicit none diff --git a/base/serial/impl/psb_z_csr_impl.F90 b/base/serial/impl/psb_z_csr_impl.F90 index dd4be13a..ccd55f0a 100644 --- a/base/serial/impl/psb_z_csr_impl.F90 +++ b/base/serial/impl/psb_z_csr_impl.F90 @@ -3657,8 +3657,8 @@ end subroutine psb_z_cp_csr_from_fmt #if defined(PSB_OPENMP) subroutine psb_zcsrspspmm(a,b,c,info) - use psb_z_mat_mod - use psb_serial_mod, psb_protect_name => psb_zcsrspspmm + use psb_z_csr_mat_mod, psb_protect_name => psb_zcsrspspmm + use psb_serial_mod implicit none @@ -4204,8 +4204,8 @@ end subroutine psb_zcsrspspmm #else subroutine psb_zcsrspspmm(a,b,c,info) - use psb_z_mat_mod - use psb_serial_mod, psb_protect_name => psb_zcsrspspmm + use psb_z_csr_mat_mod, psb_protect_name => psb_zcsrspspmm + use psb_serial_mod implicit none @@ -6580,8 +6580,8 @@ end subroutine psb_lz_cp_csr_from_fmt !!$end subroutine psb_lz_csr_clean_zeros subroutine psb_lzcsrspspmm(a,b,c,info) - use psb_z_mat_mod - use psb_serial_mod, psb_protect_name => psb_lzcsrspspmm + use psb_z_csr_mat_mod, psb_protect_name => psb_lzcsrspspmm + use psb_serial_mod implicit none diff --git a/base/serial/psb_caplusat.f90 b/base/serial/psb_caplusat.f90 new file mode 100644 index 00000000..6beb7f17 --- /dev/null +++ b/base/serial/psb_caplusat.f90 @@ -0,0 +1,50 @@ +subroutine psb_caplusat(ain,aout,info) + use psb_c_mat_mod + + implicit none + type(psb_cspmat_type), intent(inout) :: ain + type(psb_cspmat_type), intent(out) :: aout + integer(psb_ipk_) :: info + + type(psb_c_coo_sparse_mat) :: acoo1, acoo2 + integer(psb_ipk_) :: nr, nc, nz1, nz2 + integer(psb_ipk_) :: err_act + character(len=20) :: name, ch_err + + name='psb_caplusat' + info = psb_success_ + call psb_erractionsave(err_act) + + + + nr = ain%get_nrows() + nc = ain%get_ncols() + + if (nr /= nc) then + info=psb_err_internal_error_ + call psb_errpush(info,name) + goto 9999 + end if + + call ain%cp_to(acoo1) + call acoo1%cp_to_coo(acoo2,info) + nz1 = acoo1%get_nzeros() + nz2 = acoo2%get_nzeros() + call acoo1%reallocate(nz1+nz2) + acoo1%ia(nz1+1:nz1+nz2) = acoo2%ja(1:nz2) + acoo1%ja(nz1+1:nz1+nz2) = acoo2%ia(1:nz2) + acoo1%val(nz1+1:nz1+nz2) = acoo2%val(1:nz2) + call acoo1%set_nrows(nr) + call acoo1%set_ncols(nr) + call acoo1%set_nzeros(nz1+nz2) + call aout%cp_from(acoo1) + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + + +end subroutine psb_caplusat diff --git a/base/serial/psb_cspspmm.f90 b/base/serial/psb_cspspmm.F90 similarity index 98% rename from base/serial/psb_cspspmm.f90 rename to base/serial/psb_cspspmm.F90 index 83f22012..64fedbfe 100644 --- a/base/serial/psb_cspspmm.f90 +++ b/base/serial/psb_cspspmm.F90 @@ -37,9 +37,9 @@ ! subroutine psb_cspspmm(a,b,c,info) use psb_mat_mod + use psb_c_csr_mat_mod + use psb_c_csc_mat_mod use psb_c_serial_mod, psb_protect_name => psb_cspspmm - implicit none - type(psb_cspmat_type), intent(in) :: a,b type(psb_cspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -48,6 +48,8 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + call psb_erractionsave(err_act) info = psb_success_ @@ -118,6 +120,8 @@ end subroutine psb_cspspmm subroutine psb_lcspspmm(a,b,c,info) use psb_mat_mod + use psb_c_csr_mat_mod + use psb_c_csc_mat_mod use psb_c_serial_mod, psb_protect_name => psb_lcspspmm implicit none @@ -129,6 +133,7 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_daplusat.f90 b/base/serial/psb_daplusat.f90 new file mode 100644 index 00000000..6ae0b462 --- /dev/null +++ b/base/serial/psb_daplusat.f90 @@ -0,0 +1,50 @@ +subroutine psb_daplusat(ain,aout,info) + use psb_d_mat_mod + + implicit none + type(psb_dspmat_type), intent(inout) :: ain + type(psb_dspmat_type), intent(out) :: aout + integer(psb_ipk_) :: info + + type(psb_d_coo_sparse_mat) :: acoo1, acoo2 + integer(psb_ipk_) :: nr, nc, nz1, nz2 + integer(psb_ipk_) :: err_act + character(len=20) :: name, ch_err + + name='psb_daplusat' + info = psb_success_ + call psb_erractionsave(err_act) + + + + nr = ain%get_nrows() + nc = ain%get_ncols() + + if (nr /= nc) then + info=psb_err_internal_error_ + call psb_errpush(info,name) + goto 9999 + end if + + call ain%cp_to(acoo1) + call acoo1%cp_to_coo(acoo2,info) + nz1 = acoo1%get_nzeros() + nz2 = acoo2%get_nzeros() + call acoo1%reallocate(nz1+nz2) + acoo1%ia(nz1+1:nz1+nz2) = acoo2%ja(1:nz2) + acoo1%ja(nz1+1:nz1+nz2) = acoo2%ia(1:nz2) + acoo1%val(nz1+1:nz1+nz2) = acoo2%val(1:nz2) + call acoo1%set_nrows(nr) + call acoo1%set_ncols(nr) + call acoo1%set_nzeros(nz1+nz2) + call aout%cp_from(acoo1) + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + + +end subroutine psb_daplusat diff --git a/base/serial/psb_dspspmm.f90 b/base/serial/psb_dspspmm.F90 similarity index 98% rename from base/serial/psb_dspspmm.f90 rename to base/serial/psb_dspspmm.F90 index e3e203d6..4b37df0e 100644 --- a/base/serial/psb_dspspmm.f90 +++ b/base/serial/psb_dspspmm.F90 @@ -37,9 +37,9 @@ ! subroutine psb_dspspmm(a,b,c,info) use psb_mat_mod + use psb_d_csr_mat_mod + use psb_d_csc_mat_mod use psb_d_serial_mod, psb_protect_name => psb_dspspmm - implicit none - type(psb_dspmat_type), intent(in) :: a,b type(psb_dspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -48,6 +48,8 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + call psb_erractionsave(err_act) info = psb_success_ @@ -118,6 +120,8 @@ end subroutine psb_dspspmm subroutine psb_ldspspmm(a,b,c,info) use psb_mat_mod + use psb_d_csr_mat_mod + use psb_d_csc_mat_mod use psb_d_serial_mod, psb_protect_name => psb_ldspspmm implicit none @@ -129,6 +133,7 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_saplusat.f90 b/base/serial/psb_saplusat.f90 new file mode 100644 index 00000000..3e9024d3 --- /dev/null +++ b/base/serial/psb_saplusat.f90 @@ -0,0 +1,50 @@ +subroutine psb_saplusat(ain,aout,info) + use psb_s_mat_mod + + implicit none + type(psb_sspmat_type), intent(inout) :: ain + type(psb_sspmat_type), intent(out) :: aout + integer(psb_ipk_) :: info + + type(psb_s_coo_sparse_mat) :: acoo1, acoo2 + integer(psb_ipk_) :: nr, nc, nz1, nz2 + integer(psb_ipk_) :: err_act + character(len=20) :: name, ch_err + + name='psb_saplusat' + info = psb_success_ + call psb_erractionsave(err_act) + + + + nr = ain%get_nrows() + nc = ain%get_ncols() + + if (nr /= nc) then + info=psb_err_internal_error_ + call psb_errpush(info,name) + goto 9999 + end if + + call ain%cp_to(acoo1) + call acoo1%cp_to_coo(acoo2,info) + nz1 = acoo1%get_nzeros() + nz2 = acoo2%get_nzeros() + call acoo1%reallocate(nz1+nz2) + acoo1%ia(nz1+1:nz1+nz2) = acoo2%ja(1:nz2) + acoo1%ja(nz1+1:nz1+nz2) = acoo2%ia(1:nz2) + acoo1%val(nz1+1:nz1+nz2) = acoo2%val(1:nz2) + call acoo1%set_nrows(nr) + call acoo1%set_ncols(nr) + call acoo1%set_nzeros(nz1+nz2) + call aout%cp_from(acoo1) + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + + +end subroutine psb_saplusat diff --git a/base/serial/psb_sspspmm.f90 b/base/serial/psb_sspspmm.F90 similarity index 98% rename from base/serial/psb_sspspmm.f90 rename to base/serial/psb_sspspmm.F90 index e1ae9af3..bc3352ee 100644 --- a/base/serial/psb_sspspmm.f90 +++ b/base/serial/psb_sspspmm.F90 @@ -37,9 +37,9 @@ ! subroutine psb_sspspmm(a,b,c,info) use psb_mat_mod + use psb_s_csr_mat_mod + use psb_s_csc_mat_mod use psb_s_serial_mod, psb_protect_name => psb_sspspmm - implicit none - type(psb_sspmat_type), intent(in) :: a,b type(psb_sspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -48,6 +48,8 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + call psb_erractionsave(err_act) info = psb_success_ @@ -118,6 +120,8 @@ end subroutine psb_sspspmm subroutine psb_lsspspmm(a,b,c,info) use psb_mat_mod + use psb_s_csr_mat_mod + use psb_s_csc_mat_mod use psb_s_serial_mod, psb_protect_name => psb_lsspspmm implicit none @@ -129,6 +133,7 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_zaplusat.f90 b/base/serial/psb_zaplusat.f90 new file mode 100644 index 00000000..cb418474 --- /dev/null +++ b/base/serial/psb_zaplusat.f90 @@ -0,0 +1,50 @@ +subroutine psb_zaplusat(ain,aout,info) + use psb_z_mat_mod + + implicit none + type(psb_zspmat_type), intent(inout) :: ain + type(psb_zspmat_type), intent(out) :: aout + integer(psb_ipk_) :: info + + type(psb_z_coo_sparse_mat) :: acoo1, acoo2 + integer(psb_ipk_) :: nr, nc, nz1, nz2 + integer(psb_ipk_) :: err_act + character(len=20) :: name, ch_err + + name='psb_zaplusat' + info = psb_success_ + call psb_erractionsave(err_act) + + + + nr = ain%get_nrows() + nc = ain%get_ncols() + + if (nr /= nc) then + info=psb_err_internal_error_ + call psb_errpush(info,name) + goto 9999 + end if + + call ain%cp_to(acoo1) + call acoo1%cp_to_coo(acoo2,info) + nz1 = acoo1%get_nzeros() + nz2 = acoo2%get_nzeros() + call acoo1%reallocate(nz1+nz2) + acoo1%ia(nz1+1:nz1+nz2) = acoo2%ja(1:nz2) + acoo1%ja(nz1+1:nz1+nz2) = acoo2%ia(1:nz2) + acoo1%val(nz1+1:nz1+nz2) = acoo2%val(1:nz2) + call acoo1%set_nrows(nr) + call acoo1%set_ncols(nr) + call acoo1%set_nzeros(nz1+nz2) + call aout%cp_from(acoo1) + + call psb_erractionrestore(err_act) + return + +9999 call psb_error_handler(err_act) + + return + + +end subroutine psb_zaplusat diff --git a/base/serial/psb_zspspmm.f90 b/base/serial/psb_zspspmm.F90 similarity index 98% rename from base/serial/psb_zspspmm.f90 rename to base/serial/psb_zspspmm.F90 index e7b3df44..a37bd013 100644 --- a/base/serial/psb_zspspmm.f90 +++ b/base/serial/psb_zspspmm.F90 @@ -37,9 +37,9 @@ ! subroutine psb_zspspmm(a,b,c,info) use psb_mat_mod + use psb_z_csr_mat_mod + use psb_z_csc_mat_mod use psb_z_serial_mod, psb_protect_name => psb_zspspmm - implicit none - type(psb_zspmat_type), intent(in) :: a,b type(psb_zspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -48,6 +48,8 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + call psb_erractionsave(err_act) info = psb_success_ @@ -118,6 +120,8 @@ end subroutine psb_zspspmm subroutine psb_lzspspmm(a,b,c,info) use psb_mat_mod + use psb_z_csr_mat_mod + use psb_z_csc_mat_mod use psb_z_serial_mod, psb_protect_name => psb_lzspspmm implicit none @@ -129,6 +133,7 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/tools/psb_c_par_csr_spspmm.f90 b/base/tools/psb_c_par_csr_spspmm.f90 index 2dbd00f0..0d8e5989 100644 --- a/base/tools/psb_c_par_csr_spspmm.f90 +++ b/base/tools/psb_c_par_csr_spspmm.f90 @@ -66,7 +66,8 @@ Subroutine psb_c_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_c_tools_mod, psb_protect_name => psb_c_par_csr_spspmm - use psb_c_serial_mod, only : psb_ccsrspspmm, psb_cbase_rwextd + use psb_c_csr_mat_mod, only : psb_ccsrspspmm + use psb_c_serial_mod, only : psb_cbase_rwextd Implicit None type(psb_c_csr_sparse_mat),intent(in) :: acsr @@ -166,7 +167,8 @@ Subroutine psb_lc_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_c_tools_mod, psb_protect_name => psb_lc_par_csr_spspmm - use psb_c_serial_mod, only : psb_lccsrspspmm, psb_lcbase_rwextd + use psb_c_csr_mat_mod, only : psb_lccsrspspmm + use psb_c_serial_mod, only : psb_lcbase_rwextd Implicit None type(psb_lc_csr_sparse_mat),intent(in) :: acsr diff --git a/base/tools/psb_d_par_csr_spspmm.f90 b/base/tools/psb_d_par_csr_spspmm.f90 index 3ed62f05..3ab67561 100644 --- a/base/tools/psb_d_par_csr_spspmm.f90 +++ b/base/tools/psb_d_par_csr_spspmm.f90 @@ -66,7 +66,8 @@ Subroutine psb_d_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_d_tools_mod, psb_protect_name => psb_d_par_csr_spspmm - use psb_d_serial_mod, only : psb_dcsrspspmm, psb_dbase_rwextd + use psb_d_csr_mat_mod, only : psb_dcsrspspmm + use psb_d_serial_mod, only : psb_dbase_rwextd Implicit None type(psb_d_csr_sparse_mat),intent(in) :: acsr @@ -166,7 +167,8 @@ Subroutine psb_ld_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_d_tools_mod, psb_protect_name => psb_ld_par_csr_spspmm - use psb_d_serial_mod, only : psb_ldcsrspspmm, psb_ldbase_rwextd + use psb_d_csr_mat_mod, only : psb_ldcsrspspmm + use psb_d_serial_mod, only : psb_ldbase_rwextd Implicit None type(psb_ld_csr_sparse_mat),intent(in) :: acsr diff --git a/base/tools/psb_s_par_csr_spspmm.f90 b/base/tools/psb_s_par_csr_spspmm.f90 index 4e70478f..17bf4e44 100644 --- a/base/tools/psb_s_par_csr_spspmm.f90 +++ b/base/tools/psb_s_par_csr_spspmm.f90 @@ -66,7 +66,8 @@ Subroutine psb_s_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_s_tools_mod, psb_protect_name => psb_s_par_csr_spspmm - use psb_s_serial_mod, only : psb_scsrspspmm, psb_sbase_rwextd + use psb_s_csr_mat_mod, only : psb_scsrspspmm + use psb_s_serial_mod, only : psb_sbase_rwextd Implicit None type(psb_s_csr_sparse_mat),intent(in) :: acsr @@ -166,7 +167,8 @@ Subroutine psb_ls_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_s_tools_mod, psb_protect_name => psb_ls_par_csr_spspmm - use psb_s_serial_mod, only : psb_lscsrspspmm, psb_lsbase_rwextd + use psb_s_csr_mat_mod, only : psb_lscsrspspmm + use psb_s_serial_mod, only : psb_lsbase_rwextd Implicit None type(psb_ls_csr_sparse_mat),intent(in) :: acsr diff --git a/base/tools/psb_z_par_csr_spspmm.f90 b/base/tools/psb_z_par_csr_spspmm.f90 index 5ccf58d3..6629aee2 100644 --- a/base/tools/psb_z_par_csr_spspmm.f90 +++ b/base/tools/psb_z_par_csr_spspmm.f90 @@ -66,7 +66,8 @@ Subroutine psb_z_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_z_tools_mod, psb_protect_name => psb_z_par_csr_spspmm - use psb_z_serial_mod, only : psb_zcsrspspmm, psb_zbase_rwextd + use psb_z_csr_mat_mod, only : psb_zcsrspspmm + use psb_z_serial_mod, only : psb_zbase_rwextd Implicit None type(psb_z_csr_sparse_mat),intent(in) :: acsr @@ -166,7 +167,8 @@ Subroutine psb_lz_par_csr_spspmm(acsr,desc_a,bcsr,ccsr,desc_c,info,data) use psb_comm_mod use psb_penv_mod use psb_z_tools_mod, psb_protect_name => psb_lz_par_csr_spspmm - use psb_z_serial_mod, only : psb_lzcsrspspmm, psb_lzbase_rwextd + use psb_z_csr_mat_mod, only : psb_lzcsrspspmm + use psb_z_serial_mod, only : psb_lzbase_rwextd Implicit None type(psb_lz_csr_sparse_mat),intent(in) :: acsr diff --git a/configure b/configure index 0658f499..388ffae9 100755 --- a/configure +++ b/configure @@ -6989,7 +6989,7 @@ if test x"$psblas_cv_fc" == "x" ; then # TODO : discover the exact conditions when the usage of -WF is needed. psblas_cv_define_prepend="-WF," if eval "$MPIFC -qversion 2>&1 | grep -e\"Version: 10\.\" 2>/dev/null"; then - FDEFINES="$psblas_cv_define_prepend-DXLF_10 $FDEFINES"; sed -e's/(0-9*).*/$1/p' + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_XLF_10 $FDEFINES"; sed -e's/(0-9*).*/$1/p' fi # Note : there could be problems with old xlf compiler versions ( <10.1 ) @@ -7005,7 +7005,7 @@ if test x"$psblas_cv_fc" == "x" ; then psblas_flang_version=`flang-new --version |grep flang| sed -e 's/^ *flang.* version *//gi'`; psblas_flang_shv=`flang-new --version |grep flang| sed -e 's/^ *flang.* version *//gi' | sed -e's/\./ /g' | awk '{print $1}'`; psblas_cv_define_prepend=""; - FDEFINES="$psblas_cv_define_prepend-DFLANG $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_FLANG $FDEFINES" psblas_shvs=`echo $psblas_flang_shv|sed -e's/^0-9*//g'`; if test x"$psblas_shvs" != x""; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Running with LLVM $psblas_flang_version ($psblas_flang_shv). " >&5 @@ -7024,7 +7024,7 @@ printf "%s\n" "$as_me: Running with LLVM $psblas_flang_version ($psblas_flang_ psblas_flang_shv=`flang --version |grep flang| sed -e 's/^ *flang.* version *//gi' | sed -e's/\./ /g' | awk '{print $1}'`; psblas_cv_fc="flang"; psblas_cv_define_prepend=""; - FDEFINES="$psblas_cv_define_prepend-DFLANG $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_FLANG $FDEFINES" psblas_shvs=`echo $psblas_flang_shv|sed -e's/^0-9*//g'`; if test x"$psblas_shvs" != x""; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Running with LLVM $psblas_flang_version ($psblas_flang_shv). " >&5 @@ -7037,7 +7037,7 @@ printf "%s\n" "$as_me: Running with LLVM $psblas_flang_version ($psblas_flang_ fi elif eval "$MPIFC -V 2>&1 | grep Intel.*Fortran.*Compiler 2>/dev/null" ; then # Intel compiler identification - + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_INTEL $FDEFINES" psblas_cv_fc="ifc"; elif eval "$MPIFC -v 2>&1 | grep NAG 2>/dev/null" ; then psblas_cv_fc="nag"; diff --git a/configure.ac b/configure.ac index 2f472dea..f3c78664 100644 --- a/configure.ac +++ b/configure.ac @@ -242,7 +242,7 @@ if test x"$psblas_cv_fc" == "x" ; then # TODO : discover the exact conditions when the usage of -WF is needed. psblas_cv_define_prepend="-WF," if eval "$MPIFC -qversion 2>&1 | grep -e\"Version: 10\.\" 2>/dev/null"; then - FDEFINES="$psblas_cv_define_prepend-DXLF_10 $FDEFINES"; sed -e's/([0-9]*).*/$1/p' + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_XLF_10 $FDEFINES"; sed -e's/([0-9]*).*/$1/p' fi # Note : there could be problems with old xlf compiler versions ( <10.1 ) @@ -258,7 +258,7 @@ if test x"$psblas_cv_fc" == "x" ; then psblas_flang_version=`flang-new --version |grep flang| sed -e 's/^ *flang.* version *//gi'`; psblas_flang_shv=`flang-new --version |grep flang| sed -e 's/^ *flang.* version *//gi' | sed -e's/\./ /g' | awk '{print $1}'`; psblas_cv_define_prepend=""; - FDEFINES="$psblas_cv_define_prepend-DFLANG $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_FLANG $FDEFINES" psblas_shvs=`echo $psblas_flang_shv|sed -e's/[^0-9]*//g'`; if test x"$psblas_shvs" != x""; then AC_MSG_NOTICE([[Running with LLVM $psblas_flang_version ($psblas_flang_shv). ]]) @@ -276,7 +276,7 @@ if test x"$psblas_cv_fc" == "x" ; then psblas_flang_shv=`flang --version |grep flang| sed -e 's/^ *flang.* version *//gi' | sed -e's/\./ /g' | awk '{print $1}'`; psblas_cv_fc="flang"; psblas_cv_define_prepend=""; - FDEFINES="$psblas_cv_define_prepend-DFLANG $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_FLANG $FDEFINES" psblas_shvs=`echo $psblas_flang_shv|sed -e's/[^0-9]*//g'`; if test x"$psblas_shvs" != x""; then AC_MSG_NOTICE([[Running with LLVM $psblas_flang_version ($psblas_flang_shv). ]]) @@ -288,7 +288,7 @@ if test x"$psblas_cv_fc" == "x" ; then fi elif eval "$MPIFC -V 2>&1 | grep Intel.*Fortran.*Compiler 2>/dev/null" ; then # Intel compiler identification - + FDEFINES="$psblas_cv_define_prepend-DPSB_CMP_INTEL $FDEFINES" psblas_cv_fc="ifc"; elif eval "$MPIFC -v 2>&1 | grep NAG 2>/dev/null" ; then psblas_cv_fc="nag"; diff --git a/linsolve/psb_base_linsolve_conv_mod.f90 b/linsolve/psb_base_linsolve_conv_mod.f90 index 8d36fb53..5eca2b82 100644 --- a/linsolve/psb_base_linsolve_conv_mod.f90 +++ b/linsolve/psb_base_linsolve_conv_mod.f90 @@ -76,7 +76,7 @@ contains character(len=*), intent(in) :: methdname integer(psb_ipk_), intent(in) :: me, itx, itrace real(psb_dpk_), intent(in) :: errnum, errden, eps - character(len=*), parameter :: fmt='(a18,1x,i4,3(2x,es15.9))' + character(len=*), parameter :: fmt='(a18,1x,i4,3(2x,es18.9))' integer(psb_ipk_), parameter :: outlen=18 character(len=len(methdname)) :: mname character(len=outlen) :: outname @@ -102,8 +102,8 @@ contains real(psb_dpk_), optional, intent(out) :: err integer(psb_ipk_), optional, intent(out) :: iter - character(len=*), parameter :: fmt='(a,2x,es15.9,1x,a,1x,i4,1x,a)' - character(len=*), parameter :: fmt1='(a,3(2x,es15.9))' + character(len=*), parameter :: fmt='(a,2x,es18.9,1x,a,1x,i4,1x,a)' + character(len=*), parameter :: fmt1='(a,3(2x,es18.9))' if (errden == dzero) then if (errnum > eps) then