MKLSparse.jl icon indicating copy to clipboard operation
MKLSparse.jl copied to clipboard

Cleanup Wrappers and Tests

Open alyst opened this issue 1 year ago • 6 comments

This is a subset of #30 excluding the Matrix * SparseMatrix:

  • adds support for MKL 2023.x
  • simplifies the MKLSparse wrappers by introducing mkl_call(funcname, T, args...) generated function that automatically transforms templates like mkl_Tcscmv into appropriate MKLSparse function names for a specific input types (e.g. mkl_dcscmv)
  • some unnecessary "type piracy" of Base.* was removed, I've also added comments explaining the motivation for specific LinearAlgrebra/Base (re)definitions
  • fixes 4-arg ldiv!() from ldiv!(a, A, B, C) to ldiv!(C, A, B, a) to be compatible with 3-arg ldiv!() already in Base (AFAIK 4-arg is only defined in MKLSparse). This would break any packages/script that use MKLSparse.jl 4-arg ldiv!(), but this should be a rather exotic case.
  • streamlines testing, so that all 4 numeric types are covered
  • @test_blas macro replaced by conventional @test macro in combination with @blas macro that allows more fine-grained checks of whether Sparse BLAS MKL methods are being called
  • in tests maximum(abs.(...)) <= eps is replaced with ≈ atol=...
  • update CI.yml to use julia-actions
  • enable code coverage

No new version of MKLSparse.jl was tagged after #31 got merged. It could be done before/after this PR.

alyst avatar May 06 '23 21:05 alyst