Skip to content

SIMD on Windows πŸ€— πŸͺŸ

Compare
Choose a tag to compare
@ashvardanian ashvardanian released this 23 Mar 19:32
· 671 commits to main since this release

This release refactors compiler attributes and intrinsics usage to make it compatible with MSVC. Most noticeably, function defined like this:

__attribute__((target("+simd")))
inline static void simsimd_cos_f32_neon(simsimd_f32_t const* a, simsimd_f32_t const* b, simsimd_size_t n, simsimd_distance_t* result) { }

Now look like this:

#pragma GCC push_options
#pragma GCC target("+simd")
#pragma clang attribute push(__attribute__((target("+simd"))), apply_to = function)

inline static void simsimd_cos_f32_neon(simsimd_f32_t const* a, simsimd_f32_t const* b, simsimd_size_t n, simsimd_distance_t* result) { }

#pragma clang attribute pop
#pragma GCC pop_options

Thanks to that SimSIMD on Windows is gonna be just as fast as on Linux and MacOS πŸ€— πŸͺŸ


4.1.0 vs 4.0.0 Change Log (2024-03-23)

Add

  • Bench against TF, PyTorch, JAX (5e64152)
  • Complex dot-products for Rust (936fe73)
  • Double-precision interfaces for JS (07f2aca)

Docs

Fix

  • Avoid vld2_f16 on MSVC (ce9800e)
  • Complex dispatch in Rust & C (d349bcd)
  • Missing _mm_rsqrt14_ps in MSVC (21e30fe)
  • Missing float16_t in MSVC Arm64 builds (94442c3)

Improve

Make