@@ -15,9 +15,7 @@ using namespace std;
15
15
16
16
namespace {
17
17
18
- #ifdef USE_SIMSIMD
19
- // Native float16 support is controlled via CMake option SIMSIMD_NATIVE_F16
20
- // Default behavior disables native F16/BF16 for maximum compatibility
18
+ #ifdef WITH_SIMSIMD
21
19
#include < simsimd/simsimd.h>
22
20
#endif
23
21
@@ -29,7 +27,7 @@ namespace {
29
27
30
28
// Euclidean vector distance: sqrt( sum: (u[i] - v[i])^2 )
31
29
FAST_MATH float L2Distance (const float * u, const float * v, size_t dims) {
32
- #ifdef USE_SIMSIMD
30
+ #ifdef WITH_SIMSIMD
33
31
simsimd_distance_t distance = 0 ;
34
32
simsimd_l2_f32 (u, v, dims, &distance);
35
33
return static_cast <float >(distance);
@@ -44,7 +42,7 @@ FAST_MATH float L2Distance(const float* u, const float* v, size_t dims) {
44
42
// Inner product distance: 1 - dot_product(u, v)
45
43
// For normalized vectors, this is equivalent to cosine distance
46
44
FAST_MATH float IPDistance (const float * u, const float * v, size_t dims) {
47
- #ifdef USE_SIMSIMD
45
+ #ifdef WITH_SIMSIMD
48
46
// Use SimSIMD dot product and convert to inner product distance: 1 - dot(u, v).
49
47
simsimd_distance_t dot = 0 ;
50
48
simsimd_dot_f32 (u, v, dims, &dot);
@@ -58,7 +56,7 @@ FAST_MATH float IPDistance(const float* u, const float* v, size_t dims) {
58
56
}
59
57
60
58
FAST_MATH float CosineDistance (const float * u, const float * v, size_t dims) {
61
- #ifdef USE_SIMSIMD
59
+ #ifdef WITH_SIMSIMD
62
60
simsimd_distance_t distance = 0 ;
63
61
simsimd_cos_f32 (u, v, dims, &distance);
64
62
return static_cast <float >(distance);
@@ -112,4 +110,10 @@ float VectorDistance(const float* u, const float* v, size_t dims, VectorSimilari
112
110
return 0 .0f ;
113
111
}
114
112
113
+ void InitSimSIMD () {
114
+ #if defined(WITH_SIMSIMD)
115
+ (void )simsimd_capabilities ();
116
+ #endif
117
+ }
118
+
115
119
} // namespace dfly::search
0 commit comments