| Re: [eigen] Intel (R) MKL IE SpBLAS support in Eigen |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Hello Eigen community,
My name is Maria Zhukova and I’m a software development engineer at Intel ® MKL Sparse team.
My team is interested in contributing into Eigen, so I’ve investigated our possibilities and so far this is what I have:
Eigen support different operations for sparse matrices stored in CSR and CSC format which can be implemented on a basis of IE SpBLAS kernels (please, refer to https://software.intel.com/en-us/mkl-developer-reference-c- for the general idea of interfaces)inspector-executor-sparse- blas-routines
, basically we want to implement calls to our IE SpBLAS into next operations:SparseMatrix + SparseMatrix (mkl_sparse_?_add)
SparseMatrix * DenseVector (mkl_sparse_?_mv)SparseMatrix * DenseMatrix (mkl_sparse_?_mm)
SparseMatrix * SparseMatrix (mkl_sparse_spmm),
and Triangular solve (mkl_sparse_?_trsv).I’ve already started with implementation of sparse_time_dense_impl_mkl kernel which is based on mkl_sparse_?_mv (included in patch).
This is how it will look like for user:
#include <Eigen/SpBLASSupport><-- NEW: IE SpBLAS include module void main () {
SparseMatrix<double, RowMajor> A;
Matrix<double, Dynamic, 1> x, y;
A.makeCompressed();/* Convert matrix A into CSR/CSC format */
A.createSparseHandle();/* NEW: is used to create handle required for all IE SpBLAS routines */ // support of IE SpBLAS is here
y = beta*y + alpha*A*x;/* call to mkl_sparse_?_mv with operation = SPARSE_OPERATION_NON_TRANSPOSE */
y = beta*y + alpha*A.transpose()*x;/* call to mkl_sparse_?_mv with operation = SPARSE_OPERATION_TRANSPOSE */
y = beta*y + alpha*A.adjoint()*x;/* call to mkl_sparse_?_mv with operation = SPARSE_OPERATION_CONJUGATE_ TRANSPOSE */ A.destroySparseHandle();
/* NEW: is used to delete created handle */
}
I’ve attached a draft patch including all necessary changes and would like to hear your feedback.
Please, let me know if you have any questions and comments.
Best regards,
Maria
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |