From 727dc13a98448053b50f6c243dcb8e425bb6a1a5 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 18 Sep 2025 17:02:11 +0200 Subject: [PATCH 01/12] First attempt at a fix for INTEL --- base/modules/serial/psb_c_serial_mod.f90 | 6 +++- base/modules/serial/psb_d_serial_mod.f90 | 6 +++- base/modules/serial/psb_s_serial_mod.f90 | 6 +++- base/modules/serial/psb_z_serial_mod.f90 | 6 +++- base/serial/psb_cspspmm.f90 | 42 ++++++++++++++++++++++-- base/serial/psb_dspspmm.f90 | 42 ++++++++++++++++++++++-- base/serial/psb_sspspmm.f90 | 42 ++++++++++++++++++++++-- base/serial/psb_zspspmm.f90 | 42 ++++++++++++++++++++++-- 8 files changed, 176 insertions(+), 16 deletions(-) diff --git a/base/modules/serial/psb_c_serial_mod.f90 b/base/modules/serial/psb_c_serial_mod.f90 index 9c43f3e7..9da008c6 100644 --- a/base/modules/serial/psb_c_serial_mod.f90 +++ b/base/modules/serial/psb_c_serial_mod.f90 @@ -60,6 +60,8 @@ module psb_c_serial_mod type(psb_cspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_cspspmm + end interface psb_spspmm + interface subroutine psb_ccsrspspmm(a,b,c,info) use psb_c_mat_mod, only : psb_c_csr_sparse_mat import :: psb_ipk_ @@ -232,6 +234,8 @@ module psb_c_serial_mod type(psb_lcspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lcspspmm + end interface psb_spspmm + interface subroutine psb_lccsrspspmm(a,b,c,info) use psb_c_mat_mod, only : psb_lc_csr_sparse_mat import :: psb_ipk_ @@ -248,7 +252,7 @@ module psb_c_serial_mod type(psb_lc_csc_sparse_mat), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lccscspspmm - end interface psb_spspmm + end interface interface psb_symbmm subroutine psb_lcsymbmm(a,b,c,info) diff --git a/base/modules/serial/psb_d_serial_mod.f90 b/base/modules/serial/psb_d_serial_mod.f90 index 523282f5..09344b70 100644 --- a/base/modules/serial/psb_d_serial_mod.f90 +++ b/base/modules/serial/psb_d_serial_mod.f90 @@ -60,6 +60,8 @@ module psb_d_serial_mod type(psb_dspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_dspspmm + end interface psb_spspmm + interface subroutine psb_dcsrspspmm(a,b,c,info) use psb_d_mat_mod, only : psb_d_csr_sparse_mat import :: psb_ipk_ @@ -232,6 +234,8 @@ module psb_d_serial_mod type(psb_ldspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_ldspspmm + end interface psb_spspmm + interface subroutine psb_ldcsrspspmm(a,b,c,info) use psb_d_mat_mod, only : psb_ld_csr_sparse_mat import :: psb_ipk_ @@ -248,7 +252,7 @@ module psb_d_serial_mod type(psb_ld_csc_sparse_mat), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_ldcscspspmm - end interface psb_spspmm + end interface interface psb_symbmm subroutine psb_ldsymbmm(a,b,c,info) diff --git a/base/modules/serial/psb_s_serial_mod.f90 b/base/modules/serial/psb_s_serial_mod.f90 index 81583f64..da19d9ec 100644 --- a/base/modules/serial/psb_s_serial_mod.f90 +++ b/base/modules/serial/psb_s_serial_mod.f90 @@ -60,6 +60,8 @@ module psb_s_serial_mod type(psb_sspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_sspspmm + end interface psb_spspmm + interface subroutine psb_scsrspspmm(a,b,c,info) use psb_s_mat_mod, only : psb_s_csr_sparse_mat import :: psb_ipk_ @@ -232,6 +234,8 @@ module psb_s_serial_mod type(psb_lsspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lsspspmm + end interface psb_spspmm + interface subroutine psb_lscsrspspmm(a,b,c,info) use psb_s_mat_mod, only : psb_ls_csr_sparse_mat import :: psb_ipk_ @@ -248,7 +252,7 @@ module psb_s_serial_mod type(psb_ls_csc_sparse_mat), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lscscspspmm - end interface psb_spspmm + end interface interface psb_symbmm subroutine psb_lssymbmm(a,b,c,info) diff --git a/base/modules/serial/psb_z_serial_mod.f90 b/base/modules/serial/psb_z_serial_mod.f90 index dbfce00b..70a3b42c 100644 --- a/base/modules/serial/psb_z_serial_mod.f90 +++ b/base/modules/serial/psb_z_serial_mod.f90 @@ -60,6 +60,8 @@ module psb_z_serial_mod type(psb_zspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_zspspmm + end interface psb_spspmm + interface subroutine psb_zcsrspspmm(a,b,c,info) use psb_z_mat_mod, only : psb_z_csr_sparse_mat import :: psb_ipk_ @@ -232,6 +234,8 @@ module psb_z_serial_mod type(psb_lzspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lzspspmm + end interface psb_spspmm + interface subroutine psb_lzcsrspspmm(a,b,c,info) use psb_z_mat_mod, only : psb_lz_csr_sparse_mat import :: psb_ipk_ @@ -248,7 +252,7 @@ module psb_z_serial_mod type(psb_lz_csc_sparse_mat), intent(out) :: c integer(psb_ipk_), intent(out) :: info end subroutine psb_lzcscspspmm - end interface psb_spspmm + end interface interface psb_symbmm subroutine psb_lzsymbmm(a,b,c,info) diff --git a/base/serial/psb_cspspmm.f90 b/base/serial/psb_cspspmm.f90 index 83f22012..cdd45c3a 100644 --- a/base/serial/psb_cspspmm.f90 +++ b/base/serial/psb_cspspmm.f90 @@ -37,7 +37,7 @@ ! subroutine psb_cspspmm(a,b,c,info) use psb_mat_mod - use psb_c_serial_mod, psb_protect_name => psb_cspspmm + !use psb_c_serial_mod, psb_protect_name => psb_cspspmm implicit none type(psb_cspmat_type), intent(in) :: a,b @@ -48,6 +48,24 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -118,7 +136,7 @@ end subroutine psb_cspspmm subroutine psb_lcspspmm(a,b,c,info) use psb_mat_mod - use psb_c_serial_mod, psb_protect_name => psb_lcspspmm +! use psb_c_serial_mod, psb_protect_name => psb_lcspspmm implicit none type(psb_lcspmat_type), intent(in) :: a,b @@ -129,7 +147,25 @@ 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) + interface + 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 + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then diff --git a/base/serial/psb_dspspmm.f90 b/base/serial/psb_dspspmm.f90 index e3e203d6..82c3b3f5 100644 --- a/base/serial/psb_dspspmm.f90 +++ b/base/serial/psb_dspspmm.f90 @@ -37,7 +37,7 @@ ! subroutine psb_dspspmm(a,b,c,info) use psb_mat_mod - use psb_d_serial_mod, psb_protect_name => psb_dspspmm + !use psb_d_serial_mod, psb_protect_name => psb_dspspmm implicit none type(psb_dspmat_type), intent(in) :: a,b @@ -48,6 +48,24 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -118,7 +136,7 @@ end subroutine psb_dspspmm subroutine psb_ldspspmm(a,b,c,info) use psb_mat_mod - use psb_d_serial_mod, psb_protect_name => psb_ldspspmm +! use psb_d_serial_mod, psb_protect_name => psb_ldspspmm implicit none type(psb_ldspmat_type), intent(in) :: a,b @@ -129,7 +147,25 @@ 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) + interface + 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 + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then diff --git a/base/serial/psb_sspspmm.f90 b/base/serial/psb_sspspmm.f90 index e1ae9af3..792fb265 100644 --- a/base/serial/psb_sspspmm.f90 +++ b/base/serial/psb_sspspmm.f90 @@ -37,7 +37,7 @@ ! subroutine psb_sspspmm(a,b,c,info) use psb_mat_mod - use psb_s_serial_mod, psb_protect_name => psb_sspspmm + !use psb_s_serial_mod, psb_protect_name => psb_sspspmm implicit none type(psb_sspmat_type), intent(in) :: a,b @@ -48,6 +48,24 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -118,7 +136,7 @@ end subroutine psb_sspspmm subroutine psb_lsspspmm(a,b,c,info) use psb_mat_mod - use psb_s_serial_mod, psb_protect_name => psb_lsspspmm +! use psb_s_serial_mod, psb_protect_name => psb_lsspspmm implicit none type(psb_lsspmat_type), intent(in) :: a,b @@ -129,7 +147,25 @@ 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) + interface + 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 + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then diff --git a/base/serial/psb_zspspmm.f90 b/base/serial/psb_zspspmm.f90 index e7b3df44..932ae20a 100644 --- a/base/serial/psb_zspspmm.f90 +++ b/base/serial/psb_zspspmm.f90 @@ -37,7 +37,7 @@ ! subroutine psb_zspspmm(a,b,c,info) use psb_mat_mod - use psb_z_serial_mod, psb_protect_name => psb_zspspmm + !use psb_z_serial_mod, psb_protect_name => psb_zspspmm implicit none type(psb_zspmat_type), intent(in) :: a,b @@ -48,6 +48,24 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -118,7 +136,7 @@ end subroutine psb_zspspmm subroutine psb_lzspspmm(a,b,c,info) use psb_mat_mod - use psb_z_serial_mod, psb_protect_name => psb_lzspspmm +! use psb_z_serial_mod, psb_protect_name => psb_lzspspmm implicit none type(psb_lzspmat_type), intent(in) :: a,b @@ -129,7 +147,25 @@ 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) + interface + 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 + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then From dc25c789ef9aaa9b1e49fb5d145721fd9098f12a Mon Sep 17 00:00:00 2001 From: sfilippone Date: Thu, 18 Sep 2025 20:27:26 +0200 Subject: [PATCH 02/12] Fixes for Intel compilation take 2. To be completed. --- base/modules/penv/psi_penv_mod.F90 | 70 +++++++++++----------- base/modules/serial/psb_c_csc_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_c_csr_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_c_serial_mod.f90 | 38 +----------- base/modules/serial/psb_d_csc_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_d_csr_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_d_serial_mod.f90 | 38 +----------- base/modules/serial/psb_s_csc_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_s_csr_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_s_serial_mod.f90 | 38 +----------- base/modules/serial/psb_z_csc_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_z_csr_mat_mod.f90 | 17 ++++++ base/modules/serial/psb_z_serial_mod.f90 | 38 +----------- base/serial/impl/psb_c_csc_impl.F90 | 8 +-- base/serial/impl/psb_c_csr_impl.F90 | 12 ++-- base/serial/impl/psb_d_csc_impl.F90 | 8 +-- base/serial/impl/psb_d_csr_impl.F90 | 12 ++-- base/serial/impl/psb_s_csc_impl.F90 | 8 +-- base/serial/impl/psb_s_csr_impl.F90 | 12 ++-- base/serial/impl/psb_z_csc_impl.F90 | 8 +-- base/serial/impl/psb_z_csr_impl.F90 | 12 ++-- base/serial/psb_cspspmm.f90 | 72 +++++++++++------------ base/serial/psb_dspspmm.f90 | 72 +++++++++++------------ base/serial/psb_sspspmm.f90 | 72 +++++++++++------------ base/serial/psb_zspspmm.f90 | 72 +++++++++++------------ base/tools/psb_c_par_csr_spspmm.f90 | 6 +- base/tools/psb_d_par_csr_spspmm.f90 | 6 +- base/tools/psb_s_par_csr_spspmm.f90 | 6 +- base/tools/psb_z_par_csr_spspmm.f90 | 6 +- 29 files changed, 376 insertions(+), 374 deletions(-) diff --git a/base/modules/penv/psi_penv_mod.F90 b/base/modules/penv/psi_penv_mod.F90 index 7091411d..249fd9b1 100644 --- a/base/modules/penv/psi_penv_mod.F90 +++ b/base/modules/penv/psi_penv_mod.F90 @@ -180,43 +180,45 @@ module psi_penv_mod use psb_const_mod use iso_c_binding - integer(psb_mpk_), parameter:: psb_int_tag = 543987 - integer(psb_mpk_), parameter:: psb_real_tag = psb_int_tag + 1 - integer(psb_mpk_), parameter:: psb_double_tag = psb_real_tag + 1 - integer(psb_mpk_), parameter:: psb_complex_tag = psb_double_tag + 1 - integer(psb_mpk_), parameter:: psb_dcomplex_tag = psb_complex_tag + 1 - integer(psb_mpk_), parameter:: psb_logical_tag = psb_dcomplex_tag + 1 - integer(psb_mpk_), parameter:: psb_char_tag = psb_logical_tag + 1 - integer(psb_mpk_), parameter:: psb_int8_tag = psb_char_tag + 1 - integer(psb_mpk_), parameter:: psb_int2_tag = psb_int8_tag + 1 - integer(psb_mpk_), parameter:: psb_int4_tag = psb_int2_tag + 1 - integer(psb_mpk_), parameter:: psb_long_tag = psb_int4_tag + 1 - - integer(psb_mpk_), parameter:: psb_int_swap_tag = psb_int_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_real_swap_tag = psb_real_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_double_swap_tag = psb_double_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_complex_swap_tag = psb_complex_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_dcomplex_swap_tag = psb_dcomplex_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_logical_swap_tag = psb_logical_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_char_swap_tag = psb_char_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_int8_swap_tag = psb_int8_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_int2_swap_tag = psb_int2_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_int4_swap_tag = psb_int4_tag + psb_int_tag - integer(psb_mpk_), parameter:: psb_long_swap_tag = psb_long_tag + psb_int_tag + integer(psb_mpk_), parameter :: psb_int_tag = 100 + integer(psb_mpk_), parameter :: psb_real_tag = psb_int_tag + 1 + integer(psb_mpk_), parameter :: psb_double_tag = psb_real_tag + 1 + integer(psb_mpk_), parameter :: psb_complex_tag = psb_double_tag + 1 + integer(psb_mpk_), parameter :: psb_dcomplex_tag = psb_complex_tag + 1 + integer(psb_mpk_), parameter :: psb_logical_tag = psb_dcomplex_tag + 1 + integer(psb_mpk_), parameter :: psb_char_tag = psb_logical_tag + 1 + integer(psb_mpk_), parameter :: psb_int8_tag = psb_char_tag + 1 + integer(psb_mpk_), parameter :: psb_int2_tag = psb_int8_tag + 1 + integer(psb_mpk_), parameter :: psb_int4_tag = psb_int2_tag + 1 + integer(psb_mpk_), parameter :: psb_long_tag = psb_int4_tag + 1 + + integer(psb_mpk_), parameter :: psb_max_simple_tag = psb_long_tag + 2 + + integer(psb_mpk_), parameter :: psb_int_swap_tag = psb_max_simple_tag + 1 + integer(psb_mpk_), parameter :: psb_real_swap_tag = psb_int_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_double_swap_tag = psb_real_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_complex_swap_tag = psb_double_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_dcomplex_swap_tag = psb_complex_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_logical_swap_tag = psb_dcomplex_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_char_swap_tag = psb_logical_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_int8_swap_tag = psb_char_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_int2_swap_tag = psb_int8_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_int4_swap_tag = psb_int2_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_long_swap_tag = psb_int4_swap_tag + 1 - integer(psb_mpk_), private, parameter:: psb_int_type = 987543 - integer(psb_mpk_), private, parameter:: psb_real_type = psb_int_type + 1 - integer(psb_mpk_), private, parameter:: psb_double_type = psb_real_type + 1 - integer(psb_mpk_), private, parameter:: psb_complex_type = psb_double_type + 1 - integer(psb_mpk_), private, parameter:: psb_dcomplex_type = psb_complex_type + 1 - integer(psb_mpk_), private, parameter:: psb_logical_type = psb_dcomplex_type + 1 - integer(psb_mpk_), private, parameter:: psb_char_type = psb_logical_type + 1 - integer(psb_mpk_), private, parameter:: psb_int8_type = psb_char_type + 1 - integer(psb_mpk_), private, parameter:: psb_int2_type = psb_int8_type + 1 - integer(psb_mpk_), private, parameter:: psb_int4_type = psb_int2_type + 1 - integer(psb_mpk_), private, parameter:: psb_long_type = psb_int4_type + 1 + integer(psb_mpk_), private, parameter :: psb_int_type = 200 + integer(psb_mpk_), private, parameter :: psb_real_type = psb_int_type + 1 + integer(psb_mpk_), private, parameter :: psb_double_type = psb_real_type + 1 + integer(psb_mpk_), private, parameter :: psb_complex_type = psb_double_type + 1 + integer(psb_mpk_), private, parameter :: psb_dcomplex_type = psb_complex_type + 1 + integer(psb_mpk_), private, parameter :: psb_logical_type = psb_dcomplex_type + 1 + integer(psb_mpk_), private, parameter :: psb_char_type = psb_logical_type + 1 + integer(psb_mpk_), private, parameter :: psb_int8_type = psb_char_type + 1 + integer(psb_mpk_), private, parameter :: psb_int2_type = psb_int8_type + 1 + integer(psb_mpk_), private, parameter :: psb_int4_type = psb_int2_type + 1 + integer(psb_mpk_), private, parameter :: psb_long_type = psb_int4_type + 1 type psb_buffer_node integer(psb_mpk_) :: request 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_serial_mod.f90 b/base/modules/serial/psb_c_serial_mod.f90 index 9da008c6..24fba38e 100644 --- a/base/modules/serial/psb_c_serial_mod.f90 +++ b/base/modules/serial/psb_c_serial_mod.f90 @@ -61,25 +61,7 @@ module psb_c_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_cspspmm end interface psb_spspmm - interface - 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 - + interface psb_symbmm subroutine psb_csymbmm(a,b,c,info) use psb_c_mat_mod, only : psb_cspmat_type @@ -235,24 +217,6 @@ module psb_c_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_lcspspmm end interface psb_spspmm - interface - 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 interface psb_symbmm subroutine psb_lcsymbmm(a,b,c,info) 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_serial_mod.f90 b/base/modules/serial/psb_d_serial_mod.f90 index 09344b70..1c186cf7 100644 --- a/base/modules/serial/psb_d_serial_mod.f90 +++ b/base/modules/serial/psb_d_serial_mod.f90 @@ -61,25 +61,7 @@ module psb_d_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_dspspmm end interface psb_spspmm - interface - 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 - + interface psb_symbmm subroutine psb_dsymbmm(a,b,c,info) use psb_d_mat_mod, only : psb_dspmat_type @@ -235,24 +217,6 @@ module psb_d_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_ldspspmm end interface psb_spspmm - interface - 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 interface psb_symbmm subroutine psb_ldsymbmm(a,b,c,info) 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_serial_mod.f90 b/base/modules/serial/psb_s_serial_mod.f90 index da19d9ec..9872e53e 100644 --- a/base/modules/serial/psb_s_serial_mod.f90 +++ b/base/modules/serial/psb_s_serial_mod.f90 @@ -61,25 +61,7 @@ module psb_s_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_sspspmm end interface psb_spspmm - interface - 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 - + interface psb_symbmm subroutine psb_ssymbmm(a,b,c,info) use psb_s_mat_mod, only : psb_sspmat_type @@ -235,24 +217,6 @@ module psb_s_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_lsspspmm end interface psb_spspmm - interface - 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 interface psb_symbmm subroutine psb_lssymbmm(a,b,c,info) 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_serial_mod.f90 b/base/modules/serial/psb_z_serial_mod.f90 index 70a3b42c..fa0b3ef2 100644 --- a/base/modules/serial/psb_z_serial_mod.f90 +++ b/base/modules/serial/psb_z_serial_mod.f90 @@ -61,25 +61,7 @@ module psb_z_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_zspspmm end interface psb_spspmm - interface - 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 - + interface psb_symbmm subroutine psb_zsymbmm(a,b,c,info) use psb_z_mat_mod, only : psb_zspmat_type @@ -235,24 +217,6 @@ module psb_z_serial_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_lzspspmm end interface psb_spspmm - interface - 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 interface psb_symbmm subroutine psb_lzsymbmm(a,b,c,info) 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_cspspmm.f90 b/base/serial/psb_cspspmm.f90 index cdd45c3a..7e81c99c 100644 --- a/base/serial/psb_cspspmm.f90 +++ b/base/serial/psb_cspspmm.f90 @@ -48,24 +48,24 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -147,24 +147,24 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_dspspmm.f90 b/base/serial/psb_dspspmm.f90 index 82c3b3f5..682c2628 100644 --- a/base/serial/psb_dspspmm.f90 +++ b/base/serial/psb_dspspmm.f90 @@ -48,24 +48,24 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -147,24 +147,24 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_sspspmm.f90 b/base/serial/psb_sspspmm.f90 index 792fb265..f193a442 100644 --- a/base/serial/psb_sspspmm.f90 +++ b/base/serial/psb_sspspmm.f90 @@ -48,24 +48,24 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -147,24 +147,24 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_zspspmm.f90 b/base/serial/psb_zspspmm.f90 index 932ae20a..b0a02cdc 100644 --- a/base/serial/psb_zspspmm.f90 +++ b/base/serial/psb_zspspmm.f90 @@ -48,24 +48,24 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -147,24 +147,24 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - interface - 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 +!!$ interface +!!$ 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 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 From 6140b8c9e9e3265c3c35886cbbe721db8af2a22a Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 08:52:40 +0200 Subject: [PATCH 03/12] Minor comment changes --- base/modules/psb_const_mod.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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. From 0d69cdb005aa94a41f21e3436a6a1988cabb0c1d Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 08:53:15 +0200 Subject: [PATCH 04/12] Further changes to constants for intel --- base/modules/penv/psi_penv_mod.F90 | 128 +++-------------------------- 1 file changed, 12 insertions(+), 116 deletions(-) diff --git a/base/modules/penv/psi_penv_mod.F90 b/base/modules/penv/psi_penv_mod.F90 index 249fd9b1..2792d22e 100644 --- a/base/modules/penv/psi_penv_mod.F90 +++ b/base/modules/penv/psi_penv_mod.F90 @@ -49,7 +49,9 @@ module mpi integer(psb_mpk_), parameter :: mpi_integer4 = 10 integer(psb_mpk_), parameter :: mpi_comm_null = -1 integer(psb_mpk_), parameter :: mpi_comm_world = 1 - + + integer(psb_mpk_), parameter :: mpi_address_kind = psb_epk_ + !real(psb_dpk_), external :: mpi_wtime interface @@ -179,7 +181,15 @@ end module mpi module psi_penv_mod use psb_const_mod use iso_c_binding - +#ifdef PSB_MPI_MOD + use mpi +#endif +#ifdef PSB_MPI_H + include 'mpif.h' +#endif + + integer(psb_mpk_), parameter :: psb_apk_ = mpi_address_kind + integer(psb_mpk_), parameter :: psb_int_tag = 100 integer(psb_mpk_), parameter :: psb_real_tag = psb_int_tag + 1 integer(psb_mpk_), parameter :: psb_double_tag = psb_real_tag + 1 @@ -343,13 +353,7 @@ contains end subroutine psb_init_queue subroutine psb_wait_buffer(node, info) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_buffer_node), intent(inout) :: node integer(psb_ipk_), intent(out) :: info integer(psb_mpk_) :: status(mpi_status_size),minfo @@ -359,13 +363,7 @@ contains end subroutine psb_wait_buffer subroutine psb_test_buffer(node, flag, info) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_buffer_node), intent(inout) :: node logical, intent(out) :: flag integer(psb_ipk_), intent(out) :: info @@ -478,13 +476,7 @@ contains ! ! !!!!!!!!!!!!!!!!! subroutine psi_msnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest integer(psb_mpk_), allocatable, intent(inout) :: buffer(:) @@ -517,13 +509,7 @@ contains subroutine psi_esnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest integer(psb_epk_), allocatable, intent(inout) :: buffer(:) @@ -554,13 +540,7 @@ contains end subroutine psi_esnd subroutine psi_i2snd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest integer(psb_i2pk_), allocatable, intent(inout) :: buffer(:) @@ -591,13 +571,7 @@ contains end subroutine psi_i2snd subroutine psi_ssnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest real(psb_spk_), allocatable, intent(inout) :: buffer(:) @@ -628,13 +602,7 @@ contains end subroutine psi_ssnd subroutine psi_dsnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest real(psb_dpk_), allocatable, intent(inout) :: buffer(:) @@ -665,13 +633,7 @@ contains end subroutine psi_dsnd subroutine psi_csnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest complex(psb_spk_), allocatable, intent(inout) :: buffer(:) @@ -702,13 +664,7 @@ contains end subroutine psi_csnd subroutine psi_zsnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest complex(psb_dpk_), allocatable, intent(inout) :: buffer(:) @@ -740,13 +696,7 @@ contains subroutine psi_logsnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest logical, allocatable, intent(inout) :: buffer(:) @@ -778,13 +728,7 @@ contains subroutine psi_hsnd(ctxt,tag,dest,buffer,mesg_queue) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: tag, dest character(len=1), allocatable, intent(inout) :: buffer(:) @@ -853,13 +797,7 @@ contains end subroutine psi_get_sizes subroutine psi_register_mpi_extras(info) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif integer(psb_mpk_) :: info info = 0 @@ -943,13 +881,7 @@ contains use psb_mat_mod use psb_vect_mod ! !$ use psb_rsb_mod -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type), intent(out) :: ctxt type(psb_ctxt_type), intent(in), optional :: basectxt integer(psb_mpk_), intent(in), optional :: np, ids(:), extcomm @@ -1082,13 +1014,7 @@ contains use psb_mat_mod use psb_vect_mod ! !$ use psb_rsb_mod -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type), intent(inout) :: ctxt logical, intent(in), optional :: close logical :: close_ @@ -1156,13 +1082,7 @@ contains subroutine psb_barrier_mpik(ctxt) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type), intent(in) :: ctxt integer(psb_mpk_) :: info @@ -1177,13 +1097,7 @@ contains function psb_wtime() use psb_const_mod ! use mpi_constants -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif real(psb_dpk_) :: psb_wtime psb_wtime = mpi_wtime() @@ -1212,13 +1126,7 @@ contains subroutine psb_info_mpik(ctxt,iam,np) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type), intent(in) :: ctxt integer(psb_mpk_), intent(out) :: iam, np @@ -1271,13 +1179,7 @@ contains function psb_m_get_mpi_comm(ctxt) result(comm) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: comm comm = mpi_comm_null @@ -1293,13 +1195,7 @@ contains end function psb_m_get_mpi_rank subroutine psb_get_mpicomm(ctxt,comm) -#ifdef PSB_MPI_MOD - use mpi -#endif implicit none -#ifdef PSB_MPI_H - include 'mpif.h' -#endif type(psb_ctxt_type) :: ctxt integer(psb_mpk_) :: comm comm = mpi_comm_null From 42b8daae8c5b808a1b90818ebe727c14d48851b2 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 09:34:34 +0200 Subject: [PATCH 05/12] Use mpi_comm_get_attr to set tag values --- base/modules/penv/psi_penv_mod.F90 | 98 +++++++++++++++++++----------- 1 file changed, 64 insertions(+), 34 deletions(-) diff --git a/base/modules/penv/psi_penv_mod.F90 b/base/modules/penv/psi_penv_mod.F90 index 2792d22e..320df941 100644 --- a/base/modules/penv/psi_penv_mod.F90 +++ b/base/modules/penv/psi_penv_mod.F90 @@ -189,33 +189,32 @@ module psi_penv_mod #endif integer(psb_mpk_), parameter :: psb_apk_ = mpi_address_kind - - integer(psb_mpk_), parameter :: psb_int_tag = 100 - integer(psb_mpk_), parameter :: psb_real_tag = psb_int_tag + 1 - integer(psb_mpk_), parameter :: psb_double_tag = psb_real_tag + 1 - integer(psb_mpk_), parameter :: psb_complex_tag = psb_double_tag + 1 - integer(psb_mpk_), parameter :: psb_dcomplex_tag = psb_complex_tag + 1 - integer(psb_mpk_), parameter :: psb_logical_tag = psb_dcomplex_tag + 1 - integer(psb_mpk_), parameter :: psb_char_tag = psb_logical_tag + 1 - integer(psb_mpk_), parameter :: psb_int8_tag = psb_char_tag + 1 - integer(psb_mpk_), parameter :: psb_int2_tag = psb_int8_tag + 1 - integer(psb_mpk_), parameter :: psb_int4_tag = psb_int2_tag + 1 - integer(psb_mpk_), parameter :: psb_long_tag = psb_int4_tag + 1 - - integer(psb_mpk_), parameter :: psb_max_simple_tag = psb_long_tag + 2 - - integer(psb_mpk_), parameter :: psb_int_swap_tag = psb_max_simple_tag + 1 - integer(psb_mpk_), parameter :: psb_real_swap_tag = psb_int_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_double_swap_tag = psb_real_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_complex_swap_tag = psb_double_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_dcomplex_swap_tag = psb_complex_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_logical_swap_tag = psb_dcomplex_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_char_swap_tag = psb_logical_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_int8_swap_tag = psb_char_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_int2_swap_tag = psb_int8_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_int4_swap_tag = psb_int2_swap_tag + 1 - integer(psb_mpk_), parameter :: psb_long_swap_tag = psb_int4_swap_tag + 1 + integer(psb_mpk_), parameter :: psb_tag_space = 200 + + integer(psb_mpk_), save :: psb_int_tag + integer(psb_mpk_), save :: psb_real_tag + integer(psb_mpk_), save :: psb_double_tag + integer(psb_mpk_), save :: psb_complex_tag + integer(psb_mpk_), save :: psb_dcomplex_tag + integer(psb_mpk_), save :: psb_logical_tag + integer(psb_mpk_), save :: psb_char_tag + integer(psb_mpk_), save :: psb_int8_tag + integer(psb_mpk_), save :: psb_int2_tag + integer(psb_mpk_), save :: psb_int4_tag + integer(psb_mpk_), save :: psb_long_tag + integer(psb_mpk_), save :: psb_max_simple_tag + integer(psb_mpk_), save :: psb_int_swap_tag + integer(psb_mpk_), save :: psb_real_swap_tag + integer(psb_mpk_), save :: psb_double_swap_tag + integer(psb_mpk_), save :: psb_complex_swap_tag + integer(psb_mpk_), save :: psb_dcomplex_swap_tag + integer(psb_mpk_), save :: psb_logical_swap_tag + integer(psb_mpk_), save :: psb_char_swap_tag + integer(psb_mpk_), save :: psb_int8_swap_tag + integer(psb_mpk_), save :: psb_int2_swap_tag + integer(psb_mpk_), save :: psb_int4_swap_tag + integer(psb_mpk_), save :: psb_long_swap_tag integer(psb_mpk_), private, parameter :: psb_int_type = 200 @@ -316,7 +315,7 @@ module psi_penv_mod #endif - private :: psi_get_sizes, psi_register_mpi_extras + private :: psi_get_sizes, psi_register_mpi_const private :: psi_i2amx_op, psi_i2amn_op private :: psi_iamx_op, psi_iamn_op private :: psi_mamx_op, psi_mamn_op @@ -796,10 +795,12 @@ contains end subroutine psi_get_sizes - subroutine psi_register_mpi_extras(info) + subroutine psi_register_mpi_const(comm,info) implicit none - integer(psb_mpk_) :: info - + integer(psb_mpk_) :: comm,info + integer(psb_mpk_) :: ierror + integer(psb_apk_) :: tag_value + logical :: flag info = 0 #if 0 if (info == 0) call mpi_type_create_f90_integer(psb_ipk_, psb_mpi_ipk_ ,info) @@ -837,6 +838,7 @@ contains #endif #if defined(PSB_SERIAL_MPI) + tag_value = HUGE(psb_tag_space)/2 #else if (info == 0) call mpi_op_create(psi_i2amx_op,.true.,mpi_i2amx_op,info) if (info == 0) call mpi_op_create(psi_i2amn_op,.true.,mpi_i2amn_op,info) @@ -854,9 +856,37 @@ contains if (info == 0) call mpi_op_create(psi_zamn_op,.true.,mpi_zamn_op,info) if (info == 0) call mpi_op_create(psi_snrm2_op,.true.,mpi_snrm2_op,info) if (info == 0) call mpi_op_create(psi_dnrm2_op,.true.,mpi_dnrm2_op,info) + if (info == 0) call mpi_comm_get_attr(comm,mpi_tag_ub,tag_value,flag,ierror) + if ((ierror/=0).or.(.not.flag)) then + tag_value = 0 + info = psb_err_internal_error_ + end if #endif - - end subroutine psi_register_mpi_extras + psb_int_tag = tag_value - psb_tag_space + psb_real_tag = psb_int_tag + 1 + psb_double_tag = psb_real_tag + 1 + psb_complex_tag = psb_double_tag + 1 + psb_dcomplex_tag = psb_complex_tag + 1 + psb_logical_tag = psb_dcomplex_tag + 1 + psb_char_tag = psb_logical_tag + 1 + psb_int8_tag = psb_char_tag + 1 + psb_int2_tag = psb_int8_tag + 1 + psb_int4_tag = psb_int2_tag + 1 + psb_long_tag = psb_int4_tag + 1 + psb_max_simple_tag = psb_long_tag + 2 + psb_int_swap_tag = psb_max_simple_tag + 1 + psb_real_swap_tag = psb_int_swap_tag + 1 + psb_double_swap_tag = psb_real_swap_tag + 1 + psb_complex_swap_tag = psb_double_swap_tag + 1 + psb_dcomplex_swap_tag = psb_complex_swap_tag + 1 + psb_logical_swap_tag = psb_dcomplex_swap_tag + 1 + psb_char_swap_tag = psb_logical_swap_tag + 1 + psb_int8_swap_tag = psb_char_swap_tag + 1 + psb_int2_swap_tag = psb_int8_swap_tag + 1 + psb_int4_swap_tag = psb_int2_swap_tag + 1 + psb_long_swap_tag = psb_int4_swap_tag + 1 + + end subroutine psi_register_mpi_const #if (defined(PSB_IPK4) && defined(PSB_LPK8))||defined(PSB_IPK8) subroutine psb_info_epk(ctxt,iam,np) @@ -899,7 +929,7 @@ contains ctxt%ctxt = nctxt ! allocate on assignment nctxt = nctxt + 1 - call psi_register_mpi_extras(info) + call psi_register_mpi_const(nctxt,info) call psi_get_sizes() #else @@ -988,7 +1018,7 @@ contains if (info == 0) then ctxt%ctxt = icomm ! allocate on assignment end if - call psi_register_mpi_extras(info) + call psi_register_mpi_const(icomm,info) call psi_get_sizes() !if (ctxt == mpi_comm_null) return if (.not.allocated(ctxt%ctxt)) return From 2539b6c715ab9e07b0ff9704e8d43b102d40561a Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 09:51:19 +0200 Subject: [PATCH 06/12] Fix interface location and use in spspmm --- base/serial/psb_cspspmm.f90 | 46 ++++++------------------------------- base/serial/psb_dspspmm.f90 | 46 ++++++------------------------------- base/serial/psb_sspspmm.f90 | 46 ++++++------------------------------- base/serial/psb_zspspmm.f90 | 46 ++++++------------------------------- 4 files changed, 28 insertions(+), 156 deletions(-) diff --git a/base/serial/psb_cspspmm.f90 b/base/serial/psb_cspspmm.f90 index 7e81c99c..a62bbcf6 100644 --- a/base/serial/psb_cspspmm.f90 +++ b/base/serial/psb_cspspmm.f90 @@ -37,7 +37,9 @@ ! subroutine psb_cspspmm(a,b,c,info) use psb_mat_mod - !use psb_c_serial_mod, psb_protect_name => psb_cspspmm + 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 @@ -48,24 +50,6 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -136,7 +120,9 @@ end subroutine psb_cspspmm subroutine psb_lcspspmm(a,b,c,info) use psb_mat_mod -! use psb_c_serial_mod, psb_protect_name => psb_lcspspmm + use psb_c_csr_mat_mod + use psb_c_csc_mat_mod + use psb_c_serial_mod, psb_protect_name => psb_lcspspmm implicit none type(psb_lcspmat_type), intent(in) :: a,b @@ -147,25 +133,7 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 - call psb_erractionsave(err_act) + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then diff --git a/base/serial/psb_dspspmm.f90 b/base/serial/psb_dspspmm.f90 index 682c2628..60059208 100644 --- a/base/serial/psb_dspspmm.f90 +++ b/base/serial/psb_dspspmm.f90 @@ -37,7 +37,9 @@ ! subroutine psb_dspspmm(a,b,c,info) use psb_mat_mod - !use psb_d_serial_mod, psb_protect_name => psb_dspspmm + 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 @@ -48,24 +50,6 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -136,7 +120,9 @@ end subroutine psb_dspspmm subroutine psb_ldspspmm(a,b,c,info) use psb_mat_mod -! use psb_d_serial_mod, psb_protect_name => psb_ldspspmm + use psb_d_csr_mat_mod + use psb_d_csc_mat_mod + use psb_d_serial_mod, psb_protect_name => psb_ldspspmm implicit none type(psb_ldspmat_type), intent(in) :: a,b @@ -147,25 +133,7 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 - call psb_erractionsave(err_act) + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then diff --git a/base/serial/psb_sspspmm.f90 b/base/serial/psb_sspspmm.f90 index f193a442..6c05fb79 100644 --- a/base/serial/psb_sspspmm.f90 +++ b/base/serial/psb_sspspmm.f90 @@ -37,7 +37,9 @@ ! subroutine psb_sspspmm(a,b,c,info) use psb_mat_mod - !use psb_s_serial_mod, psb_protect_name => psb_sspspmm + 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 @@ -48,24 +50,6 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -136,7 +120,9 @@ end subroutine psb_sspspmm subroutine psb_lsspspmm(a,b,c,info) use psb_mat_mod -! use psb_s_serial_mod, psb_protect_name => psb_lsspspmm + use psb_s_csr_mat_mod + use psb_s_csc_mat_mod + use psb_s_serial_mod, psb_protect_name => psb_lsspspmm implicit none type(psb_lsspmat_type), intent(in) :: a,b @@ -147,25 +133,7 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 - call psb_erractionsave(err_act) + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then diff --git a/base/serial/psb_zspspmm.f90 b/base/serial/psb_zspspmm.f90 index b0a02cdc..97ef2c81 100644 --- a/base/serial/psb_zspspmm.f90 +++ b/base/serial/psb_zspspmm.f90 @@ -37,7 +37,9 @@ ! subroutine psb_zspspmm(a,b,c,info) use psb_mat_mod - !use psb_z_serial_mod, psb_protect_name => psb_zspspmm + 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 @@ -48,24 +50,6 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 call psb_erractionsave(err_act) info = psb_success_ @@ -136,7 +120,9 @@ end subroutine psb_zspspmm subroutine psb_lzspspmm(a,b,c,info) use psb_mat_mod -! use psb_z_serial_mod, psb_protect_name => psb_lzspspmm + use psb_z_csr_mat_mod + use psb_z_csc_mat_mod + use psb_z_serial_mod, psb_protect_name => psb_lzspspmm implicit none type(psb_lzspmat_type), intent(in) :: a,b @@ -147,25 +133,7 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -!!$ interface -!!$ 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 - call psb_erractionsave(err_act) + call psb_erractionsave(err_act) info = psb_success_ if ((a%is_null()) .or.(b%is_null())) then From 13d4bc39d5a0a47869b33db6d52a1e5a8094bebd Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 10:29:30 +0200 Subject: [PATCH 07/12] Update WRITE format string --- linsolve/psb_base_linsolve_conv_mod.f90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 From 23261bafe63affcb8d61ad3d241ec3a222ff77ee Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 10:35:20 +0200 Subject: [PATCH 08/12] Restore funny fix for intel --- base/serial/psb_cspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- base/serial/psb_dspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- base/serial/psb_sspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- base/serial/psb_zspspmm.f90 | 122 +++++++++++++++++++++++++++++++++--- 4 files changed, 456 insertions(+), 32 deletions(-) diff --git a/base/serial/psb_cspspmm.f90 b/base/serial/psb_cspspmm.f90 index a62bbcf6..1ceed43d 100644 --- a/base/serial/psb_cspspmm.f90 +++ b/base/serial/psb_cspspmm.f90 @@ -37,11 +37,10 @@ ! 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 - +!!$ use psb_c_csr_mat_mod +!!$ use psb_c_csc_mat_mod + !use psb_c_serial_mod, psb_protect_name => psb_cspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_cspmat_type), intent(in) :: a,b type(psb_cspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_csymbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_cspmat_type + import :: psb_ipk_ + implicit none + type(psb_cspmat_type), intent(in) :: a,b + type(psb_cspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_csymbmm + subroutine psb_cbase_symbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_c_base_sparse_mat, psb_c_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_c_base_sparse_mat), intent(in) :: a,b + type(psb_c_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_cbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_cnumbmm(a,b,c) + use psb_c_mat_mod, only : psb_cspmat_type + import :: psb_ipk_ + implicit none + type(psb_cspmat_type), intent(in) :: a,b + type(psb_cspmat_type), intent(inout) :: c + end subroutine psb_cnumbmm + subroutine psb_cbase_numbmm(a,b,c) + use psb_c_mat_mod, only : psb_c_base_sparse_mat, psb_c_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_c_base_sparse_mat), intent(in) :: a,b + type(psb_c_csr_sparse_mat), intent(inout) :: c + end subroutine psb_cbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -120,9 +173,9 @@ 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 +!!$ use psb_c_csr_mat_mod +!!$ use psb_c_csc_mat_mod + !use psb_c_serial_mod, psb_protect_name => psb_lcspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_lcspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_lcsymbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_lcspmat_type + import :: psb_ipk_ + implicit none + type(psb_lcspmat_type), intent(in) :: a,b + type(psb_lcspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lcsymbmm + subroutine psb_lcbase_symbmm(a,b,c,info) + use psb_c_mat_mod, only : psb_lc_base_sparse_mat, psb_lc_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lc_base_sparse_mat), intent(in) :: a,b + type(psb_lc_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lcbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_lcnumbmm(a,b,c) + use psb_c_mat_mod, only : psb_lcspmat_type + import :: psb_ipk_ + implicit none + type(psb_lcspmat_type), intent(in) :: a,b + type(psb_lcspmat_type), intent(inout) :: c + end subroutine psb_lcnumbmm + subroutine psb_lcbase_numbmm(a,b,c) + use psb_c_mat_mod, only : psb_lc_base_sparse_mat, psb_lc_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lc_base_sparse_mat), intent(in) :: a,b + type(psb_lc_csr_sparse_mat), intent(inout) :: c + end subroutine psb_lcbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_dspspmm.f90 b/base/serial/psb_dspspmm.f90 index 60059208..216313e0 100644 --- a/base/serial/psb_dspspmm.f90 +++ b/base/serial/psb_dspspmm.f90 @@ -37,11 +37,10 @@ ! 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 - +!!$ use psb_d_csr_mat_mod +!!$ use psb_d_csc_mat_mod + !use psb_d_serial_mod, psb_protect_name => psb_dspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_dspmat_type), intent(in) :: a,b type(psb_dspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_dsymbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_dspmat_type + import :: psb_ipk_ + implicit none + type(psb_dspmat_type), intent(in) :: a,b + type(psb_dspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dsymbmm + subroutine psb_dbase_symbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_d_base_sparse_mat, psb_d_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_d_base_sparse_mat), intent(in) :: a,b + type(psb_d_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_dbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_dnumbmm(a,b,c) + use psb_d_mat_mod, only : psb_dspmat_type + import :: psb_ipk_ + implicit none + type(psb_dspmat_type), intent(in) :: a,b + type(psb_dspmat_type), intent(inout) :: c + end subroutine psb_dnumbmm + subroutine psb_dbase_numbmm(a,b,c) + use psb_d_mat_mod, only : psb_d_base_sparse_mat, psb_d_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_d_base_sparse_mat), intent(in) :: a,b + type(psb_d_csr_sparse_mat), intent(inout) :: c + end subroutine psb_dbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -120,9 +173,9 @@ 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 +!!$ use psb_d_csr_mat_mod +!!$ use psb_d_csc_mat_mod + !use psb_d_serial_mod, psb_protect_name => psb_ldspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_ldspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_ldsymbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_ldspmat_type + import :: psb_ipk_ + implicit none + type(psb_ldspmat_type), intent(in) :: a,b + type(psb_ldspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldsymbmm + subroutine psb_ldbase_symbmm(a,b,c,info) + use psb_d_mat_mod, only : psb_ld_base_sparse_mat, psb_ld_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ld_base_sparse_mat), intent(in) :: a,b + type(psb_ld_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ldbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_ldnumbmm(a,b,c) + use psb_d_mat_mod, only : psb_ldspmat_type + import :: psb_ipk_ + implicit none + type(psb_ldspmat_type), intent(in) :: a,b + type(psb_ldspmat_type), intent(inout) :: c + end subroutine psb_ldnumbmm + subroutine psb_ldbase_numbmm(a,b,c) + use psb_d_mat_mod, only : psb_ld_base_sparse_mat, psb_ld_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ld_base_sparse_mat), intent(in) :: a,b + type(psb_ld_csr_sparse_mat), intent(inout) :: c + end subroutine psb_ldbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_sspspmm.f90 b/base/serial/psb_sspspmm.f90 index 6c05fb79..4dc5df40 100644 --- a/base/serial/psb_sspspmm.f90 +++ b/base/serial/psb_sspspmm.f90 @@ -37,11 +37,10 @@ ! 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 - +!!$ use psb_s_csr_mat_mod +!!$ use psb_s_csc_mat_mod + !use psb_s_serial_mod, psb_protect_name => psb_sspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_sspmat_type), intent(in) :: a,b type(psb_sspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_ssymbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_sspmat_type + import :: psb_ipk_ + implicit none + type(psb_sspmat_type), intent(in) :: a,b + type(psb_sspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_ssymbmm + subroutine psb_sbase_symbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_s_base_sparse_mat, psb_s_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_s_base_sparse_mat), intent(in) :: a,b + type(psb_s_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_sbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_snumbmm(a,b,c) + use psb_s_mat_mod, only : psb_sspmat_type + import :: psb_ipk_ + implicit none + type(psb_sspmat_type), intent(in) :: a,b + type(psb_sspmat_type), intent(inout) :: c + end subroutine psb_snumbmm + subroutine psb_sbase_numbmm(a,b,c) + use psb_s_mat_mod, only : psb_s_base_sparse_mat, psb_s_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_s_base_sparse_mat), intent(in) :: a,b + type(psb_s_csr_sparse_mat), intent(inout) :: c + end subroutine psb_sbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -120,9 +173,9 @@ 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 +!!$ use psb_s_csr_mat_mod +!!$ use psb_s_csc_mat_mod + !use psb_s_serial_mod, psb_protect_name => psb_lsspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_lsspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_lssymbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_lsspmat_type + import :: psb_ipk_ + implicit none + type(psb_lsspmat_type), intent(in) :: a,b + type(psb_lsspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lssymbmm + subroutine psb_lsbase_symbmm(a,b,c,info) + use psb_s_mat_mod, only : psb_ls_base_sparse_mat, psb_ls_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ls_base_sparse_mat), intent(in) :: a,b + type(psb_ls_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lsbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_lsnumbmm(a,b,c) + use psb_s_mat_mod, only : psb_lsspmat_type + import :: psb_ipk_ + implicit none + type(psb_lsspmat_type), intent(in) :: a,b + type(psb_lsspmat_type), intent(inout) :: c + end subroutine psb_lsnumbmm + subroutine psb_lsbase_numbmm(a,b,c) + use psb_s_mat_mod, only : psb_ls_base_sparse_mat, psb_ls_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_ls_base_sparse_mat), intent(in) :: a,b + type(psb_ls_csr_sparse_mat), intent(inout) :: c + end subroutine psb_lsbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_zspspmm.f90 b/base/serial/psb_zspspmm.f90 index 97ef2c81..831e4b9c 100644 --- a/base/serial/psb_zspspmm.f90 +++ b/base/serial/psb_zspspmm.f90 @@ -37,11 +37,10 @@ ! 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 - +!!$ use psb_z_csr_mat_mod +!!$ use psb_z_csc_mat_mod + !use psb_z_serial_mod, psb_protect_name => psb_zspspmm, only : psb_symbmm, psb_numbmm implicit none + type(psb_zspmat_type), intent(in) :: a,b type(psb_zspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -50,6 +49,60 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + + interface psb_symbmm + subroutine psb_zsymbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_zspmat_type + import :: psb_ipk_ + implicit none + type(psb_zspmat_type), intent(in) :: a,b + type(psb_zspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zsymbmm + subroutine psb_zbase_symbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_z_base_sparse_mat, psb_z_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_z_base_sparse_mat), intent(in) :: a,b + type(psb_z_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_zbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_znumbmm(a,b,c) + use psb_z_mat_mod, only : psb_zspmat_type + import :: psb_ipk_ + implicit none + type(psb_zspmat_type), intent(in) :: a,b + type(psb_zspmat_type), intent(inout) :: c + end subroutine psb_znumbmm + subroutine psb_zbase_numbmm(a,b,c) + use psb_z_mat_mod, only : psb_z_base_sparse_mat, psb_z_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_z_base_sparse_mat), intent(in) :: a,b + type(psb_z_csr_sparse_mat), intent(inout) :: c + end subroutine psb_zbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ @@ -120,9 +173,9 @@ 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 +!!$ use psb_z_csr_mat_mod +!!$ use psb_z_csc_mat_mod + !use psb_z_serial_mod, psb_protect_name => psb_lzspspmm, only : psb_symbmm, psb_numbmm implicit none type(psb_lzspmat_type), intent(in) :: a,b @@ -133,6 +186,59 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm + interface psb_symbmm + subroutine psb_lzsymbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_lzspmat_type + import :: psb_ipk_ + implicit none + type(psb_lzspmat_type), intent(in) :: a,b + type(psb_lzspmat_type), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzsymbmm + subroutine psb_lzbase_symbmm(a,b,c,info) + use psb_z_mat_mod, only : psb_lz_base_sparse_mat, psb_lz_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lz_base_sparse_mat), intent(in) :: a,b + type(psb_lz_csr_sparse_mat), intent(out) :: c + integer(psb_ipk_), intent(out) :: info + end subroutine psb_lzbase_symbmm + end interface psb_symbmm + + interface psb_numbmm + subroutine psb_lznumbmm(a,b,c) + use psb_z_mat_mod, only : psb_lzspmat_type + import :: psb_ipk_ + implicit none + type(psb_lzspmat_type), intent(in) :: a,b + type(psb_lzspmat_type), intent(inout) :: c + end subroutine psb_lznumbmm + subroutine psb_lzbase_numbmm(a,b,c) + use psb_z_mat_mod, only : psb_lz_base_sparse_mat, psb_lz_csr_sparse_mat + import :: psb_ipk_ + implicit none + class(psb_lz_base_sparse_mat), intent(in) :: a,b + type(psb_lz_csr_sparse_mat), intent(inout) :: c + end subroutine psb_lzbase_numbmm + end interface psb_numbmm + interface + 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 call psb_erractionsave(err_act) info = psb_success_ From 5a0ef22cc2bba59b9fb73f38b00f5ebf8e809f8c Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 10:55:49 +0200 Subject: [PATCH 09/12] Rename spspmm --- base/serial/{psb_cspspmm.f90 => psb_cspspmm.F90} | 0 base/serial/{psb_dspspmm.f90 => psb_dspspmm.F90} | 0 base/serial/{psb_sspspmm.f90 => psb_sspspmm.F90} | 0 base/serial/{psb_zspspmm.f90 => psb_zspspmm.F90} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename base/serial/{psb_cspspmm.f90 => psb_cspspmm.F90} (100%) rename base/serial/{psb_dspspmm.f90 => psb_dspspmm.F90} (100%) rename base/serial/{psb_sspspmm.f90 => psb_sspspmm.F90} (100%) rename base/serial/{psb_zspspmm.f90 => psb_zspspmm.F90} (100%) diff --git a/base/serial/psb_cspspmm.f90 b/base/serial/psb_cspspmm.F90 similarity index 100% rename from base/serial/psb_cspspmm.f90 rename to base/serial/psb_cspspmm.F90 diff --git a/base/serial/psb_dspspmm.f90 b/base/serial/psb_dspspmm.F90 similarity index 100% rename from base/serial/psb_dspspmm.f90 rename to base/serial/psb_dspspmm.F90 diff --git a/base/serial/psb_sspspmm.f90 b/base/serial/psb_sspspmm.F90 similarity index 100% rename from base/serial/psb_sspspmm.f90 rename to base/serial/psb_sspspmm.F90 diff --git a/base/serial/psb_zspspmm.f90 b/base/serial/psb_zspspmm.F90 similarity index 100% rename from base/serial/psb_zspspmm.f90 rename to base/serial/psb_zspspmm.F90 From aa308390745e5c0df04eed808eda0e01d5691bab Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 19 Sep 2025 12:18:11 +0200 Subject: [PATCH 10/12] Fix define for compilers, and INTEL fix. --- base/comm/internals/psi_cswapdata_a.F90 | 4 ++-- base/comm/internals/psi_cswaptran_a.F90 | 4 ++-- base/comm/internals/psi_dswapdata_a.F90 | 4 ++-- base/comm/internals/psi_dswaptran_a.F90 | 4 ++-- base/comm/internals/psi_eswapdata_a.F90 | 4 ++-- base/comm/internals/psi_eswaptran_a.F90 | 4 ++-- base/comm/internals/psi_i2swapdata_a.F90 | 4 ++-- base/comm/internals/psi_i2swaptran_a.F90 | 4 ++-- base/comm/internals/psi_mswapdata_a.F90 | 4 ++-- base/comm/internals/psi_mswaptran_a.F90 | 4 ++-- base/comm/internals/psi_sswapdata_a.F90 | 4 ++-- base/comm/internals/psi_sswaptran_a.F90 | 4 ++-- base/comm/internals/psi_zswapdata_a.F90 | 4 ++-- base/comm/internals/psi_zswaptran_a.F90 | 4 ++-- base/serial/psb_cspspmm.F90 | 25 ++++++++++++++++-------- base/serial/psb_dspspmm.F90 | 25 ++++++++++++++++-------- base/serial/psb_sspspmm.F90 | 25 ++++++++++++++++-------- base/serial/psb_zspspmm.F90 | 25 ++++++++++++++++-------- configure | 8 ++++---- configure.ac | 8 ++++---- 20 files changed, 104 insertions(+), 68 deletions(-) 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/serial/psb_cspspmm.F90 b/base/serial/psb_cspspmm.F90 index 1ceed43d..865c1922 100644 --- a/base/serial/psb_cspspmm.F90 +++ b/base/serial/psb_cspspmm.F90 @@ -37,10 +37,11 @@ ! 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, only : psb_symbmm, psb_numbmm implicit none - +#if !defined(PSB_CMP_INTEL) + use psb_c_csr_mat_mod + use psb_c_csc_mat_mod + use psb_c_serial_mod, psb_protect_name => psb_cspspmm +#endif type(psb_cspmat_type), intent(in) :: a,b type(psb_cspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -49,7 +50,8 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - + +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_csymbmm(a,b,c,info) use psb_c_mat_mod, only : psb_cspmat_type @@ -103,6 +105,8 @@ subroutine psb_cspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_ccscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ @@ -173,9 +177,11 @@ 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, only : psb_symbmm, psb_numbmm +#if !defined(PSB_CMP_INTEL) + use psb_c_csr_mat_mod + use psb_c_csc_mat_mod + use psb_c_serial_mod, psb_protect_name => psb_lcspspmm +#endif implicit none type(psb_lcspmat_type), intent(in) :: a,b @@ -186,6 +192,7 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_lcsymbmm(a,b,c,info) use psb_c_mat_mod, only : psb_lcspmat_type @@ -239,6 +246,8 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_lccscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_dspspmm.F90 b/base/serial/psb_dspspmm.F90 index 216313e0..f7e37fe7 100644 --- a/base/serial/psb_dspspmm.F90 +++ b/base/serial/psb_dspspmm.F90 @@ -37,10 +37,11 @@ ! 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, only : psb_symbmm, psb_numbmm implicit none - +#if !defined(PSB_CMP_INTEL) + use psb_d_csr_mat_mod + use psb_d_csc_mat_mod + use psb_d_serial_mod, psb_protect_name => psb_dspspmm +#endif type(psb_dspmat_type), intent(in) :: a,b type(psb_dspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -49,7 +50,8 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - + +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_dsymbmm(a,b,c,info) use psb_d_mat_mod, only : psb_dspmat_type @@ -103,6 +105,8 @@ subroutine psb_dspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_dcscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ @@ -173,9 +177,11 @@ 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, only : psb_symbmm, psb_numbmm +#if !defined(PSB_CMP_INTEL) + use psb_d_csr_mat_mod + use psb_d_csc_mat_mod + use psb_d_serial_mod, psb_protect_name => psb_ldspspmm +#endif implicit none type(psb_ldspmat_type), intent(in) :: a,b @@ -186,6 +192,7 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_ldsymbmm(a,b,c,info) use psb_d_mat_mod, only : psb_ldspmat_type @@ -239,6 +246,8 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_ldcscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_sspspmm.F90 b/base/serial/psb_sspspmm.F90 index 4dc5df40..4af56176 100644 --- a/base/serial/psb_sspspmm.F90 +++ b/base/serial/psb_sspspmm.F90 @@ -37,10 +37,11 @@ ! 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, only : psb_symbmm, psb_numbmm implicit none - +#if !defined(PSB_CMP_INTEL) + use psb_s_csr_mat_mod + use psb_s_csc_mat_mod + use psb_s_serial_mod, psb_protect_name => psb_sspspmm +#endif type(psb_sspmat_type), intent(in) :: a,b type(psb_sspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -49,7 +50,8 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - + +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_ssymbmm(a,b,c,info) use psb_s_mat_mod, only : psb_sspmat_type @@ -103,6 +105,8 @@ subroutine psb_sspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_scscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ @@ -173,9 +177,11 @@ 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, only : psb_symbmm, psb_numbmm +#if !defined(PSB_CMP_INTEL) + use psb_s_csr_mat_mod + use psb_s_csc_mat_mod + use psb_s_serial_mod, psb_protect_name => psb_lsspspmm +#endif implicit none type(psb_lsspmat_type), intent(in) :: a,b @@ -186,6 +192,7 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_lssymbmm(a,b,c,info) use psb_s_mat_mod, only : psb_lsspmat_type @@ -239,6 +246,8 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_lscscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_zspspmm.F90 b/base/serial/psb_zspspmm.F90 index 831e4b9c..95d1e112 100644 --- a/base/serial/psb_zspspmm.F90 +++ b/base/serial/psb_zspspmm.F90 @@ -37,10 +37,11 @@ ! 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, only : psb_symbmm, psb_numbmm implicit none - +#if !defined(PSB_CMP_INTEL) + use psb_z_csr_mat_mod + use psb_z_csc_mat_mod + use psb_z_serial_mod, psb_protect_name => psb_zspspmm +#endif type(psb_zspmat_type), intent(in) :: a,b type(psb_zspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -49,7 +50,8 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm - + +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_zsymbmm(a,b,c,info) use psb_z_mat_mod, only : psb_zspmat_type @@ -103,6 +105,8 @@ subroutine psb_zspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_zcscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ @@ -173,9 +177,11 @@ 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, only : psb_symbmm, psb_numbmm +#if !defined(PSB_CMP_INTEL) + use psb_z_csr_mat_mod + use psb_z_csc_mat_mod + use psb_z_serial_mod, psb_protect_name => psb_lzspspmm +#endif implicit none type(psb_lzspmat_type), intent(in) :: a,b @@ -186,6 +192,7 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm +#if defined(PSB_CMP_INTEL) interface psb_symbmm subroutine psb_lzsymbmm(a,b,c,info) use psb_z_mat_mod, only : psb_lzspmat_type @@ -239,6 +246,8 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_), intent(out) :: info end subroutine psb_lzcscspspmm end interface +#endif + call psb_erractionsave(err_act) info = psb_success_ 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"; From 0239569e2b06295a2e4611791806ca917ff0f005 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 23 Sep 2025 13:10:49 +0200 Subject: [PATCH 11/12] Final fixes for compilation with INTEL --- base/modules/serial/psb_c_mat_mod.F90 | 7 ++-- base/modules/serial/psb_c_serial_mod.f90 | 10 +++++ base/modules/serial/psb_d_mat_mod.F90 | 7 ++-- base/modules/serial/psb_d_serial_mod.f90 | 10 +++++ base/modules/serial/psb_s_mat_mod.F90 | 7 ++-- base/modules/serial/psb_s_serial_mod.f90 | 10 +++++ base/modules/serial/psb_z_mat_mod.F90 | 7 ++-- base/modules/serial/psb_z_serial_mod.f90 | 10 +++++ base/serial/Makefile | 1 + base/serial/psb_caplusat.f90 | 50 ++++++++++++++++++++++++ base/serial/psb_daplusat.f90 | 50 ++++++++++++++++++++++++ base/serial/psb_saplusat.f90 | 50 ++++++++++++++++++++++++ base/serial/psb_zaplusat.f90 | 50 ++++++++++++++++++++++++ 13 files changed, 257 insertions(+), 12 deletions(-) create mode 100644 base/serial/psb_caplusat.f90 create mode 100644 base/serial/psb_daplusat.f90 create mode 100644 base/serial/psb_saplusat.f90 create mode 100644 base/serial/psb_zaplusat.f90 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 24fba38e..5ad71641 100644 --- a/base/modules/serial/psb_c_serial_mod.f90 +++ b/base/modules/serial/psb_c_serial_mod.f90 @@ -98,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 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 1c186cf7..6446a9f5 100644 --- a/base/modules/serial/psb_d_serial_mod.f90 +++ b/base/modules/serial/psb_d_serial_mod.f90 @@ -98,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 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 9872e53e..c475ab8d 100644 --- a/base/modules/serial/psb_s_serial_mod.f90 +++ b/base/modules/serial/psb_s_serial_mod.f90 @@ -98,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 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 fa0b3ef2..6339f5e1 100644 --- a/base/modules/serial/psb_z_serial_mod.f90 +++ b/base/modules/serial/psb_z_serial_mod.f90 @@ -98,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 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/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_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_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_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 From e25d25460ed67855172cd301b59602910beadc2d Mon Sep 17 00:00:00 2001 From: sfilippone Date: Tue, 23 Sep 2025 13:38:27 +0200 Subject: [PATCH 12/12] Revert one INTEL fix no longer needed --- base/serial/psb_cspspmm.F90 | 114 ------------------------------------ base/serial/psb_dspspmm.F90 | 114 ------------------------------------ base/serial/psb_sspspmm.F90 | 114 ------------------------------------ base/serial/psb_zspspmm.F90 | 114 ------------------------------------ 4 files changed, 456 deletions(-) diff --git a/base/serial/psb_cspspmm.F90 b/base/serial/psb_cspspmm.F90 index 865c1922..64fedbfe 100644 --- a/base/serial/psb_cspspmm.F90 +++ b/base/serial/psb_cspspmm.F90 @@ -37,11 +37,9 @@ ! subroutine psb_cspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_c_csr_mat_mod use psb_c_csc_mat_mod use psb_c_serial_mod, psb_protect_name => psb_cspspmm -#endif type(psb_cspmat_type), intent(in) :: a,b type(psb_cspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -51,61 +49,6 @@ subroutine psb_cspspmm(a,b,c,info) character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_csymbmm(a,b,c,info) - use psb_c_mat_mod, only : psb_cspmat_type - import :: psb_ipk_ - implicit none - type(psb_cspmat_type), intent(in) :: a,b - type(psb_cspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_csymbmm - subroutine psb_cbase_symbmm(a,b,c,info) - use psb_c_mat_mod, only : psb_c_base_sparse_mat, psb_c_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_c_base_sparse_mat), intent(in) :: a,b - type(psb_c_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_cbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_cnumbmm(a,b,c) - use psb_c_mat_mod, only : psb_cspmat_type - import :: psb_ipk_ - implicit none - type(psb_cspmat_type), intent(in) :: a,b - type(psb_cspmat_type), intent(inout) :: c - end subroutine psb_cnumbmm - subroutine psb_cbase_numbmm(a,b,c) - use psb_c_mat_mod, only : psb_c_base_sparse_mat, psb_c_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_c_base_sparse_mat), intent(in) :: a,b - type(psb_c_csr_sparse_mat), intent(inout) :: c - end subroutine psb_cbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_ @@ -177,11 +120,9 @@ end subroutine psb_cspspmm subroutine psb_lcspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_c_csr_mat_mod use psb_c_csc_mat_mod use psb_c_serial_mod, psb_protect_name => psb_lcspspmm -#endif implicit none type(psb_lcspmat_type), intent(in) :: a,b @@ -192,61 +133,6 @@ subroutine psb_lcspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_lcsymbmm(a,b,c,info) - use psb_c_mat_mod, only : psb_lcspmat_type - import :: psb_ipk_ - implicit none - type(psb_lcspmat_type), intent(in) :: a,b - type(psb_lcspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lcsymbmm - subroutine psb_lcbase_symbmm(a,b,c,info) - use psb_c_mat_mod, only : psb_lc_base_sparse_mat, psb_lc_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lc_base_sparse_mat), intent(in) :: a,b - type(psb_lc_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lcbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_lcnumbmm(a,b,c) - use psb_c_mat_mod, only : psb_lcspmat_type - import :: psb_ipk_ - implicit none - type(psb_lcspmat_type), intent(in) :: a,b - type(psb_lcspmat_type), intent(inout) :: c - end subroutine psb_lcnumbmm - subroutine psb_lcbase_numbmm(a,b,c) - use psb_c_mat_mod, only : psb_lc_base_sparse_mat, psb_lc_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lc_base_sparse_mat), intent(in) :: a,b - type(psb_lc_csr_sparse_mat), intent(inout) :: c - end subroutine psb_lcbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_dspspmm.F90 b/base/serial/psb_dspspmm.F90 index f7e37fe7..4b37df0e 100644 --- a/base/serial/psb_dspspmm.F90 +++ b/base/serial/psb_dspspmm.F90 @@ -37,11 +37,9 @@ ! subroutine psb_dspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_d_csr_mat_mod use psb_d_csc_mat_mod use psb_d_serial_mod, psb_protect_name => psb_dspspmm -#endif type(psb_dspmat_type), intent(in) :: a,b type(psb_dspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -51,61 +49,6 @@ subroutine psb_dspspmm(a,b,c,info) character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_dsymbmm(a,b,c,info) - use psb_d_mat_mod, only : psb_dspmat_type - import :: psb_ipk_ - implicit none - type(psb_dspmat_type), intent(in) :: a,b - type(psb_dspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_dsymbmm - subroutine psb_dbase_symbmm(a,b,c,info) - use psb_d_mat_mod, only : psb_d_base_sparse_mat, psb_d_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_d_base_sparse_mat), intent(in) :: a,b - type(psb_d_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_dbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_dnumbmm(a,b,c) - use psb_d_mat_mod, only : psb_dspmat_type - import :: psb_ipk_ - implicit none - type(psb_dspmat_type), intent(in) :: a,b - type(psb_dspmat_type), intent(inout) :: c - end subroutine psb_dnumbmm - subroutine psb_dbase_numbmm(a,b,c) - use psb_d_mat_mod, only : psb_d_base_sparse_mat, psb_d_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_d_base_sparse_mat), intent(in) :: a,b - type(psb_d_csr_sparse_mat), intent(inout) :: c - end subroutine psb_dbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_ @@ -177,11 +120,9 @@ end subroutine psb_dspspmm subroutine psb_ldspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_d_csr_mat_mod use psb_d_csc_mat_mod use psb_d_serial_mod, psb_protect_name => psb_ldspspmm -#endif implicit none type(psb_ldspmat_type), intent(in) :: a,b @@ -192,61 +133,6 @@ subroutine psb_ldspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_ldsymbmm(a,b,c,info) - use psb_d_mat_mod, only : psb_ldspmat_type - import :: psb_ipk_ - implicit none - type(psb_ldspmat_type), intent(in) :: a,b - type(psb_ldspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_ldsymbmm - subroutine psb_ldbase_symbmm(a,b,c,info) - use psb_d_mat_mod, only : psb_ld_base_sparse_mat, psb_ld_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ld_base_sparse_mat), intent(in) :: a,b - type(psb_ld_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_ldbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_ldnumbmm(a,b,c) - use psb_d_mat_mod, only : psb_ldspmat_type - import :: psb_ipk_ - implicit none - type(psb_ldspmat_type), intent(in) :: a,b - type(psb_ldspmat_type), intent(inout) :: c - end subroutine psb_ldnumbmm - subroutine psb_ldbase_numbmm(a,b,c) - use psb_d_mat_mod, only : psb_ld_base_sparse_mat, psb_ld_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ld_base_sparse_mat), intent(in) :: a,b - type(psb_ld_csr_sparse_mat), intent(inout) :: c - end subroutine psb_ldbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_sspspmm.F90 b/base/serial/psb_sspspmm.F90 index 4af56176..bc3352ee 100644 --- a/base/serial/psb_sspspmm.F90 +++ b/base/serial/psb_sspspmm.F90 @@ -37,11 +37,9 @@ ! subroutine psb_sspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_s_csr_mat_mod use psb_s_csc_mat_mod use psb_s_serial_mod, psb_protect_name => psb_sspspmm -#endif type(psb_sspmat_type), intent(in) :: a,b type(psb_sspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -51,61 +49,6 @@ subroutine psb_sspspmm(a,b,c,info) character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_ssymbmm(a,b,c,info) - use psb_s_mat_mod, only : psb_sspmat_type - import :: psb_ipk_ - implicit none - type(psb_sspmat_type), intent(in) :: a,b - type(psb_sspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_ssymbmm - subroutine psb_sbase_symbmm(a,b,c,info) - use psb_s_mat_mod, only : psb_s_base_sparse_mat, psb_s_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_s_base_sparse_mat), intent(in) :: a,b - type(psb_s_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_sbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_snumbmm(a,b,c) - use psb_s_mat_mod, only : psb_sspmat_type - import :: psb_ipk_ - implicit none - type(psb_sspmat_type), intent(in) :: a,b - type(psb_sspmat_type), intent(inout) :: c - end subroutine psb_snumbmm - subroutine psb_sbase_numbmm(a,b,c) - use psb_s_mat_mod, only : psb_s_base_sparse_mat, psb_s_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_s_base_sparse_mat), intent(in) :: a,b - type(psb_s_csr_sparse_mat), intent(inout) :: c - end subroutine psb_sbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_ @@ -177,11 +120,9 @@ end subroutine psb_sspspmm subroutine psb_lsspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_s_csr_mat_mod use psb_s_csc_mat_mod use psb_s_serial_mod, psb_protect_name => psb_lsspspmm -#endif implicit none type(psb_lsspmat_type), intent(in) :: a,b @@ -192,61 +133,6 @@ subroutine psb_lsspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_lssymbmm(a,b,c,info) - use psb_s_mat_mod, only : psb_lsspmat_type - import :: psb_ipk_ - implicit none - type(psb_lsspmat_type), intent(in) :: a,b - type(psb_lsspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lssymbmm - subroutine psb_lsbase_symbmm(a,b,c,info) - use psb_s_mat_mod, only : psb_ls_base_sparse_mat, psb_ls_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ls_base_sparse_mat), intent(in) :: a,b - type(psb_ls_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lsbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_lsnumbmm(a,b,c) - use psb_s_mat_mod, only : psb_lsspmat_type - import :: psb_ipk_ - implicit none - type(psb_lsspmat_type), intent(in) :: a,b - type(psb_lsspmat_type), intent(inout) :: c - end subroutine psb_lsnumbmm - subroutine psb_lsbase_numbmm(a,b,c) - use psb_s_mat_mod, only : psb_ls_base_sparse_mat, psb_ls_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_ls_base_sparse_mat), intent(in) :: a,b - type(psb_ls_csr_sparse_mat), intent(inout) :: c - end subroutine psb_lsbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_ diff --git a/base/serial/psb_zspspmm.F90 b/base/serial/psb_zspspmm.F90 index 95d1e112..a37bd013 100644 --- a/base/serial/psb_zspspmm.F90 +++ b/base/serial/psb_zspspmm.F90 @@ -37,11 +37,9 @@ ! subroutine psb_zspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_z_csr_mat_mod use psb_z_csc_mat_mod use psb_z_serial_mod, psb_protect_name => psb_zspspmm -#endif type(psb_zspmat_type), intent(in) :: a,b type(psb_zspmat_type), intent(out) :: c integer(psb_ipk_), intent(out) :: info @@ -51,61 +49,6 @@ subroutine psb_zspspmm(a,b,c,info) character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_zsymbmm(a,b,c,info) - use psb_z_mat_mod, only : psb_zspmat_type - import :: psb_ipk_ - implicit none - type(psb_zspmat_type), intent(in) :: a,b - type(psb_zspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_zsymbmm - subroutine psb_zbase_symbmm(a,b,c,info) - use psb_z_mat_mod, only : psb_z_base_sparse_mat, psb_z_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_z_base_sparse_mat), intent(in) :: a,b - type(psb_z_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_zbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_znumbmm(a,b,c) - use psb_z_mat_mod, only : psb_zspmat_type - import :: psb_ipk_ - implicit none - type(psb_zspmat_type), intent(in) :: a,b - type(psb_zspmat_type), intent(inout) :: c - end subroutine psb_znumbmm - subroutine psb_zbase_numbmm(a,b,c) - use psb_z_mat_mod, only : psb_z_base_sparse_mat, psb_z_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_z_base_sparse_mat), intent(in) :: a,b - type(psb_z_csr_sparse_mat), intent(inout) :: c - end subroutine psb_zbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_ @@ -177,11 +120,9 @@ end subroutine psb_zspspmm subroutine psb_lzspspmm(a,b,c,info) use psb_mat_mod -#if !defined(PSB_CMP_INTEL) use psb_z_csr_mat_mod use psb_z_csc_mat_mod use psb_z_serial_mod, psb_protect_name => psb_lzspspmm -#endif implicit none type(psb_lzspmat_type), intent(in) :: a,b @@ -192,61 +133,6 @@ subroutine psb_lzspspmm(a,b,c,info) integer(psb_ipk_) :: err_act character(len=*), parameter :: name='psb_spspmm' logical :: done_spmm -#if defined(PSB_CMP_INTEL) - interface psb_symbmm - subroutine psb_lzsymbmm(a,b,c,info) - use psb_z_mat_mod, only : psb_lzspmat_type - import :: psb_ipk_ - implicit none - type(psb_lzspmat_type), intent(in) :: a,b - type(psb_lzspmat_type), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lzsymbmm - subroutine psb_lzbase_symbmm(a,b,c,info) - use psb_z_mat_mod, only : psb_lz_base_sparse_mat, psb_lz_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lz_base_sparse_mat), intent(in) :: a,b - type(psb_lz_csr_sparse_mat), intent(out) :: c - integer(psb_ipk_), intent(out) :: info - end subroutine psb_lzbase_symbmm - end interface psb_symbmm - - interface psb_numbmm - subroutine psb_lznumbmm(a,b,c) - use psb_z_mat_mod, only : psb_lzspmat_type - import :: psb_ipk_ - implicit none - type(psb_lzspmat_type), intent(in) :: a,b - type(psb_lzspmat_type), intent(inout) :: c - end subroutine psb_lznumbmm - subroutine psb_lzbase_numbmm(a,b,c) - use psb_z_mat_mod, only : psb_lz_base_sparse_mat, psb_lz_csr_sparse_mat - import :: psb_ipk_ - implicit none - class(psb_lz_base_sparse_mat), intent(in) :: a,b - type(psb_lz_csr_sparse_mat), intent(inout) :: c - end subroutine psb_lzbase_numbmm - end interface psb_numbmm - interface - 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 -#endif call psb_erractionsave(err_act) info = psb_success_