【发布时间】:2026-02-05 05:25:02
【问题描述】:
以下程序使用 Intel MKL 并根据坐标表示创建一个稀疏矩阵,然后将该矩阵导出到CSR format。
include 'mkl_spblas.f90'
program test
use iso_c_binding
use mkl_spblas
implicit none
complex(kind=kind(0.d0)) :: values(4)
integer :: columns(4)
integer :: rows(4)
TYPE(C_PTR) :: rows_start_csr, rows_end_csr, col_index_csr, values_csr
integer(C_INT) :: indexing_csr, nrows_csr, ncol_csr
type(SPARSE_MATRIX_T) :: handle
integer :: stat
! Matrix
!
! | 0 1 0 0 |
! | 1 0 0 0 |
! | 0 0 1 0 |
! | 0 0 0 1 |
values(1) = 1
rows(1) = 1
columns(1) = 2
values(2) = 1
rows(2) = 2
columns(2) = 1
values(3) = 1
rows(3) = 3
columns(3) = 3
values(4) = 1
rows(4) = 4
columns(4) = 4
stat = mkl_sparse_z_create_coo(handle, SPARSE_INDEX_BASE_ONE, 4, 4, 4, rows, columns, values)
write (*,*) 'stat after create = ', stat
stat = mkl_sparse_z_export_csr(handle, indexing_csr, nrows_csr, ncol_csr, rows_start_csr, rows_end_csr, col_index_csr, values_csr)
write (*,*) 'stat after export = ', stat, ' SPARSE_STATUS_INVALID_VALUE = ', SPARSE_STATUS_INVALID_VALUE
end program test
程序的输出是:
stat after create = 0
stat after export = 3 SPARSE_STATUS_INVALID_VALUE = 3
虽然矩阵创建后状态正常,但令人惊讶的是,导出后的状态对应于SPARSE_STATUS_INVALID_VALUE。
这怎么可能发生,如何解决?
【问题讨论】:
标签: fortran sparse-matrix intel-mkl