Merge branch 'dev-intel' into development

pull/28/head
sfilippone 8 months ago
commit f78c056a48

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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.

@ -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
! == ===================================

@ -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

@ -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

@ -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

@ -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
! == ===================================

@ -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

@ -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

@ -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

@ -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
! == ===================================

@ -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

@ -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

@ -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

@ -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
! == ===================================

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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_

@ -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

@ -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_

@ -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

@ -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_

@ -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

@ -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_

@ -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

@ -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

@ -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

@ -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

8
configure vendored

@ -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";

@ -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";

@ -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

Loading…
Cancel
Save