mkl_spblas 两个CSR稀疏矩阵乘积计算案例 fortran

program CSR_matrix_matrix_multiplication
   USE MKL_SPBLAS
   implicit none

   ! 定义CSR格式的矩阵
   integer, parameter :: nnz = 5
   integer, parameter :: N = 3
   real(kind=8), dimension(nnz) :: B1, B2
   integer, dimension(3) :: rows_start1, rows_end1, rows_start2, rows_end2
   integer, dimension(nnz) :: ja1, ja2
   integer, dimension(N + 1) :: ia1, ia2
   TYPE(SPARSE_MATRIX_T) :: A1, A2, A3
   integer :: start1, start2, start3


   ! 初始化CSR格式的矩阵
   B1 = [1.0, 2.0, 3.0, 4.0, 5.0]
   rows_start1 = [1, 2, 4]
   rows_end1 = [2, 4, 6]
   ja1 = [1, 2, 3, 1, 2]
   ia1 = [1, 2, 4, 6] ! 每行起始的位置

   ! 1,0,0
   ! 0,2,3
   ! 4,5,0

   B2 = [2.0, 3.0, 4.0, 5.0, 1.0]
   rows_start2 = [1, 2, 4]
   rows_end2 = [2, 4, 6]
   ja2 = [1, 2, 3, 1, 2]
   ia2 = [1, 2, 4, 6] ! 每行起始的位置

   ! 2,0,0
   ! 0,3,4
   ! 5,1,0

   start1 = mkl_sparse_d_create_csr(A1, SPARSE_INDEX_BASE_ONE, 3, 3, rows_start1, rows_end1, ja1, B1)

   start2 = mkl_sparse_d_create_csr(A2, SPARSE_INDEX_BASE_ONE, 3, 3, rows_start2, rows_end2, ja2, B2)

   start3 = mkl_sparse_spmm(SPARSE_OPERATION_NON_TRANSPOSE, A1, A2, A3)

   ! 显示变量的值
   print *, "start1:", start1
   print *, "start2:", start2
   print *, "start3:", start3
   print *, "A:" 
   ! 在这里显示 A 的内容

end program CSR_matrix_matrix_multiplication

参照mkl_sparse_spmm (intel.com)手册操作即可,需要注意A是sparse_matrix_t格式,须通过函数mkl_sparse_d_create_csr生成,详见手册mkl_sparse_?_create_csr (intel.com),start都是0表示计算成功

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值