base/modules/psb_c_serial_mod.f90
 base/modules/psb_d_serial_mod.f90
 base/modules/psb_s_serial_mod.f90
 base/modules/psb_z_serial_mod.f90
 base/serial/Makefile
 base/serial/impl/psb_c_csc_impl.f90
 base/serial/impl/psb_c_csr_impl.f90
 base/serial/impl/psb_d_csc_impl.f90
 base/serial/impl/psb_d_csr_impl.f90
 base/serial/impl/psb_s_csc_impl.f90
 base/serial/impl/psb_s_csr_impl.f90
 base/serial/impl/psb_z_csc_impl.f90
 base/serial/impl/psb_z_csr_impl.f90

New sparse matrix-sparse matrix product.
Implementation details for CSR/CSC matrices.
This commit is contained in:
Salvatore Filippone
2013-12-12 16:49:06 +00:00
parent 5eb9c31820
commit 3dfe4910bd
13 changed files with 1177 additions and 60 deletions
+27
View File
@@ -51,6 +51,33 @@ module psb_c_serial_mod
end function psb_casum_s
end interface psb_asum
interface psb_spspmm
subroutine psb_cspspmm(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_cspspmm
subroutine psb_ccsrspspmm(a,b,c,info)
use psb_c_mat_mod, only : psb_c_csr_sparse_mat
import :: psb_ipk_
implicit none
class(psb_c_csr_sparse_mat), intent(in) :: a,b
type(psb_c_csr_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_ccsrspspmm
subroutine psb_ccscspspmm(a,b,c,info)
use psb_c_mat_mod, only : psb_c_csc_sparse_mat
import :: psb_ipk_
implicit none
class(psb_c_csc_sparse_mat), intent(in) :: a,b
type(psb_c_csc_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_ccscspspmm
end interface
interface psb_symbmm
subroutine psb_csymbmm(a,b,c,info)
use psb_c_mat_mod, only : psb_cspmat_type
+27
View File
@@ -51,6 +51,33 @@ module psb_d_serial_mod
end function psb_dasum_s
end interface psb_asum
interface psb_spspmm
subroutine psb_dspspmm(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_dspspmm
subroutine psb_dcsrspspmm(a,b,c,info)
use psb_d_mat_mod, only : psb_d_csr_sparse_mat
import :: psb_ipk_
implicit none
class(psb_d_csr_sparse_mat), intent(in) :: a,b
type(psb_d_csr_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_dcsrspspmm
subroutine psb_dcscspspmm(a,b,c,info)
use psb_d_mat_mod, only : psb_d_csc_sparse_mat
import :: psb_ipk_
implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a,b
type(psb_d_csc_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_dcscspspmm
end interface
interface psb_symbmm
subroutine psb_dsymbmm(a,b,c,info)
use psb_d_mat_mod, only : psb_dspmat_type
+27
View File
@@ -51,6 +51,33 @@ module psb_s_serial_mod
end function psb_sasum_s
end interface psb_asum
interface psb_spspmm
subroutine psb_sspspmm(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_sspspmm
subroutine psb_scsrspspmm(a,b,c,info)
use psb_s_mat_mod, only : psb_s_csr_sparse_mat
import :: psb_ipk_
implicit none
class(psb_s_csr_sparse_mat), intent(in) :: a,b
type(psb_s_csr_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_scsrspspmm
subroutine psb_scscspspmm(a,b,c,info)
use psb_s_mat_mod, only : psb_s_csc_sparse_mat
import :: psb_ipk_
implicit none
class(psb_s_csc_sparse_mat), intent(in) :: a,b
type(psb_s_csc_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_scscspspmm
end interface
interface psb_symbmm
subroutine psb_ssymbmm(a,b,c,info)
use psb_s_mat_mod, only : psb_sspmat_type
+27
View File
@@ -51,6 +51,33 @@ module psb_z_serial_mod
end function psb_zasum_s
end interface psb_asum
interface psb_spspmm
subroutine psb_zspspmm(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_zspspmm
subroutine psb_zcsrspspmm(a,b,c,info)
use psb_z_mat_mod, only : psb_z_csr_sparse_mat
import :: psb_ipk_
implicit none
class(psb_z_csr_sparse_mat), intent(in) :: a,b
type(psb_z_csr_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_zcsrspspmm
subroutine psb_zcscspspmm(a,b,c,info)
use psb_z_mat_mod, only : psb_z_csc_sparse_mat
import :: psb_ipk_
implicit none
class(psb_z_csc_sparse_mat), intent(in) :: a,b
type(psb_z_csc_sparse_mat), intent(out) :: c
integer(psb_ipk_), intent(out) :: info
end subroutine psb_zcscspspmm
end interface
interface psb_symbmm
subroutine psb_zsymbmm(a,b,c,info)
use psb_z_mat_mod, only : psb_zspmat_type