18
18
! solved... could use that also as a reference.
19
19
include " mkl_spblas.f90" ! TODO: remove this!
20
20
PROGRAM TEST_SPBLAS
21
- USE , INTRINSIC :: ISO_C_BINDING, ONLY: C_FLOAT, C_INT, C_LONG
22
- USE mkl_spblas, ONLY: sparse_matrix_t, matrix_descr, &
23
- mkl_sparse_s_create_csr, mkl_sparse_s_create_coo, mkl_sparse_s_mv, &
24
- SPARSE_INDEX_BASE_ONE, SPARSE_MATRIX_TYPE_GENERAL, &
25
- SPARSE_OPERATION_NON_TRANSPOSE
21
+ USE , INTRINSIC :: ISO_C_BINDING, ONLY: C_FLOAT, C_INT, C_LONG, C_DOUBLE
22
+ USE MKL_SPBLAS
26
23
27
24
IMPLICIT NONE
28
25
@@ -31,15 +28,15 @@ PROGRAM TEST_SPBLAS
31
28
32
29
INTEGER (KIND= C_INT), PARAMETER :: nnz = 8
33
30
34
- ! INTEGER(KIND=C_INT) :: ia(rows+1), ja(nnz)
35
- INTEGER (KIND= C_LONG) :: ia(rows+1 ), ja(nnz)
31
+ ! INTEGER(KIND=C_INT) :: ia(rows+1), ja(nnz) ! include->segfault,w/o include->type err
32
+ INTEGER (KIND= C_LONG) :: ia(rows+1 ), ja(nnz) ! works with include 'mkl_spblas.f90'
36
33
INTEGER :: stat
37
- REAL (KIND= C_FLOAT ) :: values(nnz), x(6 ), y(4 ), y_coo(4 )
34
+ REAL (KIND= C_DOUBLE ) :: values(nnz), x(6 ), y(4 ), y_coo(4 ), alpha, beta
38
35
39
- TYPE (sparse_matrix_t ) :: a
40
- TYPE (matrix_descr ) :: descr
36
+ TYPE (SPARSE_MATRIX_T ) :: a
37
+ TYPE (MATRIX_DESCR ) :: descr
41
38
42
- TYPE (sparse_matrix_t ) :: A_coo
39
+ TYPE (SPARSE_MATRIX_T ) :: A_coo
43
40
44
41
INTEGER (KIND= C_INT), ALLOCATABLE :: row_indx(:)
45
42
INTEGER (KIND= C_INT), ALLOCATABLE :: col_indx(:)
@@ -58,7 +55,7 @@ PROGRAM TEST_SPBLAS
58
55
ja = [1 ,2 ,2 ,4 ,3 ,4 ,5 ,6 ]
59
56
values = [10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 ]
60
57
61
- stat = mkl_sparse_s_create_csr (&
58
+ stat = MKL_SPARSE_D_CREATE_CSR (&
62
59
a,SPARSE_INDEX_BASE_ONE,rows,cols,ia(1 :4 ),ia(2 :5 ),ja,values)
63
60
64
61
print * , " stat create = " , stat
@@ -73,15 +70,17 @@ PROGRAM TEST_SPBLAS
73
70
74
71
! spmv:
75
72
x = [1 ,1 ,1 ,1 ,1 ,1 ]
73
+ beta = 0
74
+ alpha = 1
76
75
! spmv csr
77
- stat = mkl_sparse_s_mv (SPARSE_OPERATION_NON_TRANSPOSE,1.0 ,a,descr,x,0.0 ,y)
76
+ stat = MKL_SPARSE_D_MV (SPARSE_OPERATION_NON_TRANSPOSE,alpha ,a,descr,x,beta ,y)
78
77
print * , " stat mv = " , stat
79
78
print * , " result csr = " , y
80
79
print * , " expected = " , [30 ., 70 ., 180 ., 80 .]
81
80
82
81
! ! spmv coo
83
82
! stat = mkl_sparse_d_mv(&
84
- ! SPARSE_OPERATION_NON_TRANSPOSE, 1.0 , A_coo, descr, x, 0.0 , y_coo)
83
+ ! SPARSE_OPERATION_NON_TRANSPOSE, alpha , A_coo, descr, x, beta , y_coo)
85
84
! print *, "result coo = ", y_coo
86
85
87
86
END PROGRAM TEST_SPBLAS
0 commit comments