- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have a problem creating a sparse matrix handle in coordinate format. I have a problem to make this function work in my code. I made a very simple example. I define a 10x10 identity matrix. My rows and column index array are defined by rows=cols=i+1; i=0 to 9. I get a return code for the function SPARSE_STATUS_NOT_INITIALIZED which means the handle is empty or the arrays are empty. The handle is empty because I am trying to create it and the arrays are not. I tried zero base and one base and double and complex value matrices. The results are the same
Am I missing something or is this a bug?
#include <iostream>
using namespace std;
#include "mkl.h"
int main() {
MKL_INT nRows=10;
MKL_INT* rows=new MKL_INT[nRows];
MKL_INT* cols=new MKL_INT [nRows];
// MKL_Complex16* permutData=new MKL_Complex16[nRows];
double *permutData=new double[nRows];
for (int i=0;i<nRows;i++){
rows=i+1;
cols=i+1;
permutData=1.0;
//permutData.real=1.0;
//permutData.imag=0.0;
}
sparse_matrix_t *MATRIX;
// sparse_status_t ok=mkl_sparse_z_create_coo (MATRIX,SPARSE_INDEX_BASE_ONE,nRows,nRows, nRows, rows,cols,permutData);
sparse_status_t ok=mkl_sparse_d_create_coo (MATRIX,SPARSE_INDEX_BASE_ONE,nRows,nRows, nRows, rows,cols,permutData);
if (ok==SPARSE_STATUS_SUCCESS){
cout<<"Matrix done\n";
cout.flush();
}
else{
cout<<"Problem in handle creation";
cout.flush();
}
return 0;
}
Thanks a lot,
Marc
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
HI,
I am currently cannot check this fact but seem problem in this line:
sparse_matrix_t *MATRIX; |
Looks like you initialize pointer which set to NULL but have not initialize sparse_matrix_t variable. Could you rewrite code by following way:
18 |
sparse_matrix_t MATRIX; |
19 |
20 |
sparse_status_t ok=mkl_sparse_d_create_coo (&MATRIX,SPARSE_INDEX_BASE_ONE,nRows,nRows, nRows, rows,cols,permutData); |
In any case i will check issue later
Thanks,
Alex
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear customer,
Alex is right. Your program probably get error "SPARSE_STATUS_NOT_INITIALIZED" which represents a null pointer of matrix. You could also refer to %MKLROOT%\examples\examples_core_c\spblasc\source\sparse_csrmv.c to see how this example create handle for matrix in CSR format. It has similar usage with function for COO.
Best regards,
Fiona
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I misunderstood how to use this. I was thinking the pointer was allocated and given a value in the function. I modified according to your suggestions. I think this issue is solved.
Thanks a lot,
Marc
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page