You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently MKLSparse.jl provides overloads for linalg operations with Julian sparse matrices (SparseMatrixCSC, although support for the other storage formats (COO, CSR, BSR) is also possible). That puts some limitations on the efficiency of certain operations, in particular sparse * sparse matrix multiplication (see #50):
Intel MKL does not support updating sparse matrices with sparsity structure allocated externally (by Julia)
Intel MKL may adjust internal sparse matrix representation (store hints) to make certain operations more efficient.
The internal MKLSparseMatrix type wraps the sparse_matrix_t handle that points to a SparseMKL representation of the matrix. Currently, linalg overloads create MKLSparseMatrix internally, call Intel MKL Sparse BLAS functions, update Julian object, destroy MKLSparseMatrix handle. For some operations (e.g. sparse * sparse) that imposes a considerable overhead, in particular if large sparse matrix operations are used within iterative numerical methods.
Instead, MKLSparse.jl can make MKLSparseMatrix public (as an AbstractSparseMatrix subtype?) and provide LinearAlgebra.jl overloads for it.
The text was updated successfully, but these errors were encountered:
Currently MKLSparse.jl provides overloads for linalg operations with Julian sparse matrices (SparseMatrixCSC, although support for the other storage formats (COO, CSR, BSR) is also possible). That puts some limitations on the efficiency of certain operations, in particular
sparse * sparse
matrix multiplication (see #50):The internal MKLSparseMatrix type wraps the sparse_matrix_t handle that points to a SparseMKL representation of the matrix. Currently, linalg overloads create MKLSparseMatrix internally, call Intel MKL Sparse BLAS functions, update Julian object, destroy MKLSparseMatrix handle. For some operations (e.g.
sparse * sparse
) that imposes a considerable overhead, in particular if large sparse matrix operations are used within iterative numerical methods.Instead, MKLSparse.jl can make MKLSparseMatrix public (as an AbstractSparseMatrix subtype?) and provide LinearAlgebra.jl overloads for it.
The text was updated successfully, but these errors were encountered: