-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: Windows build is not compiled with SimSIMD, f16 support for cosine distance #325
Comments
Hi, @monatis! Indeed, that issue exists. I use GCC attributes to annotate function-level compilation settings in SimSIMD. If you can find a way to make them work with MSVC - we will be able to accelerate the Windows build 🤗 |
Hi @ashvardanian thanks for the quick response! Yes, I can work on it this weekend. My use case is semantic search on consumer-grade hardware, so every bit of optimization counts. |
Hi @monatis! How is it going? Would be happy to merge if its ready 🤗 |
# [2.10.0](v2.9.2...v2.10.0) (2024-03-31) ### Add * `Index.__repr_pretty__` ([7087138](7087138)) * Introspect Rust builds ([16fa90f](16fa90f)) * Standalone SQLite binary ([227083b](227083b)), closes [#358](#358) ### Chore * 120-char lines in Python ([92cf01e](92cf01e)) ### Docs * Cover cross-compilation ([de1a8e9](de1a8e9)) * Typo - "desnse" -> "dense" (#370) ([719cf7a](719cf7a)), closes [#370](#370) ### Fix * `ascii` name collision in Py ([4ac3509](4ac3509)) * Allow missing metric state ([4b8e1a8](4b8e1a8)) * Avoid dynamic arrays for MSVC ([89d70cd](89d70cd)) * Exceptions for missing distances ([349c02d](349c02d)) * JIT compilation in Python ([a3287f1](a3287f1)) * JS compilation ([cea50ba](cea50ba)) * Missing `download_binary` arg ([64d211a](64d211a)) * Missing include ([6454aae](6454aae)) * mixed-precision tolerance in JS tests ([b72f658](b72f658)) * No `-Wno-vla` MSVC flag ([84e8e1e](84e8e1e)) * No extensions in some SQLite builds ([39264d0](39264d0)) * OpenMP max threads issue ([6fd4a2d](6fd4a2d)), closes [ClickHouse/ClickHouse#61780](ClickHouse/ClickHouse#61780) * Silence false warnings ([ed3a23b](ed3a23b)) ### Improve * bit-casting for negative flaots ([1d03a9d](1d03a9d)) * Clean Python w. Ruff ([87e200b](87e200b)) * Concrete `scalar_kind_t` values ([27d911a](27d911a)) * Handle failing downloads ([8649815](8649815)) * Normalize Pearson as distance ([8a697f7](8a697f7)) * Pass `vectors` to `self_recall` ([565625e](565625e)) * Python evals for exact search ([36f6c5e](36f6c5e)) * Silence warnings ([3d229e0](3d229e0)) ### Make * `CMP0135` CMake policy ([d335df7](d335df7)) * `pypy` and `musl` wheels ([31665d5](31665d5)) * Add SimSIMD dynamic dispatch ([8b8d2f5](8b8d2f5)) * Avoid SimSIMD inner dispatch ([28b0850](28b0850)) * Build SQLite from source ([0dc59a8](0dc59a8)) * CMake pre 3.22 support ([145a4f4](145a4f4)) * Cross-compilation deps ([1de8d7a](1de8d7a)) * Cross-compile with Clang ([94f97cb](94f97cb)), closes [#322](#322) * Disable SQLite extension for Windows ([c612cc2](c612cc2)) * Fetch local or remote SQLite builds ([f6b75e0](f6b75e0)) * Format Py lines to 120 columns ([5b5973c](5b5973c)) * Lantern build issues ([a400742](a400742)), closes [/github.com/unum-cloud/usearch/blob/4747ef42f4140a1fde16118f25f079f9af79649e/include/usearch/index_plugins.hpp#L43-L45](https://github.com//github.com/unum-cloud/usearch/blob/4747ef42f4140a1fde16118f25f079f9af79649e/include/usearch/index_plugins.hpp/issues/L43-L45) [/github.com/unum-cloud/usearch/blob/ce54b814a8a10f4c0c32fee7aad9451231b63f75/include/usearch/index_plugins.hpp#L50](https://github.com//github.com/unum-cloud/usearch/blob/ce54b814a8a10f4c0c32fee7aad9451231b63f75/include/usearch/index_plugins.hpp/issues/L50) * Prebuild JS binaries (#342) ([267fbb5](267fbb5)), closes [#342](#342) [#336](#336) * Pull submodules before cross-comp ([24b3529](24b3529)) * Read UTF8 README on Windows ([a49d17e](a49d17e)) * shared libs on MacOS are `.dylib` ([fd94aa8](fd94aa8)) * SimSIMD in Windows Python wheels ([ecb4948](ecb4948)), closes [#325](#325) * SQlite as shared library ([3db3d33](3db3d33)) * Take SQLite source for cross-compilation ([95b260f](95b260f)) * Upgrade SimSIMD ([908df0d](908df0d)) * Upgrade SimSIMD to 4.2.2 ([9f53f15](9f53f15)) * Use AVX in Windows Python images ([c694880](c694880)), closes [#325](#325)
🎉 This issue has been resolved in version 2.10.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Describe what you are looking for
The pip-installable package for Windows seems to be not compiled with SimSIMD (can be seen in
index.specs
), which makes it ~3-10x slower than the Linux build.Additionally, It seems that cosine distance supports AVX512 with
dtype='f32'
, but it fallbacks to AVX2 withdtype='f16'
. So we need to make a choice between optimization for speed or optimization for storage. It would be great to support AVX512 with float16 as well and of course, to have SimSIMD support in pip-installable package for Windows.I can contribute to the implementation if there is no known limitation for these.
Can you contribute to the implementation?
Is your feature request specific to a certain interface?
It applies to everything
Contact Details
[email protected]
Is there an existing issue for this?
Code of Conduct
The text was updated successfully, but these errors were encountered: