Skip to content

Sparse Matrix Algebra DLLs

Latest
Compare
Choose a tag to compare
@michabirklbauer michabirklbauer released this 08 Feb 11:36
· 104 commits to master since this release
57fc3b4

Implements the following methods across two DLLs:

  • VectorSearch.dll (v1.7.2):
    • findTopCandidates: sparse matrix - sparse vector multiplication [f32] using Eigen.
    • findTopCandidatesInt: sparse matrix - sparse vector multiplication [i32] using Eigen.
    • findTopCandidates2: sparse matrix - dense vector multiplication [f32] using Eigen.
    • findTopCandidates2Int: sparse matrix - dense vector multiplication [i32] using Eigen.
    • findTopCandidatesBatched: sparse matrix - sparse matrix multiplication [f32] using Eigen.
    • findTopCandidatesBatchedInt: sparse matrix - sparse matrix multiplication [i32] using Eigen.
    • findTopCandidatesBatched2: sparse matrix - dense matrix multiplication [f32] using Eigen.
    • findTopCandidatesBatched2Int: sparse matrix - dense matrix multiplication [i32] using Eigen.
  • VectorSearchCUDA.dll (v1.4.8):
    • findTopCandidatesCuda: sparse matrix - dense vector multiplication [f32] using CUDA (SpMV).
    • findTopCandidatesCudaBatched: sparse matrix - sparse matrix multiplication [f32] using CUDA (SpGEMM).
    • findTopCandidatesCudaBatched2: sparse matrix - dense matrix multiplication [f32] using CUDA (SpMM).

VectorSearch.dll implements functions that run on the CPU, while VectorSearchCUDA.dll implements functions that run on a NVIDIA GPU using CUDA (version 12.2.0_536.25_windows).

Includes changes introduced with #31 as discussed in #30.

DLLs are compiled for Windows (10+, x64) and (partially - only CPU-based search) for Ubuntu (22.04, x64) and macOS (14.4, arm64), for other operating systems/architectures please compile the source code yourself!

What's Changed

  • Implement i32 Sparse Vector Multiplication & i32 Sparse Matrix Multiplication by @michabirklbauer in #31

Full Changelog: DLL_release4...DLL_release5