Skip to content

Commit d3d1305

Browse files
authored
Fix: Remove trailing whitespace (pre-commit auto-fix) (#1167)
Signed-off-by: Thatikonda Varun Reddy <[email protected]>
1 parent ce348d8 commit d3d1305

File tree

3 files changed

+47
-2
lines changed

3 files changed

+47
-2
lines changed

src/simd/distances_sve.cc

+39
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,37 @@ fp16_vec_L2sqr_sve(const knowhere::fp16* x, const knowhere::fp16* y, size_t d) {
9696
return svaddv_f32(pg_32, total_sum);
9797
}
9898

99+
float
100+
fp16_vec_inner_product_sve(const knowhere::fp16* x, const knowhere::fp16* y, size_t d) {
101+
svfloat32_t sum1 = svdup_f32(0.0f);
102+
svfloat32_t sum2 = svdup_f32(0.0f);
103+
size_t i = 0;
104+
105+
svbool_t pg_16 = svptrue_b16();
106+
svbool_t pg_32 = svptrue_b32();
107+
108+
while (i < d) {
109+
if (d - i < svcnth())
110+
pg_16 = svwhilelt_b16(i, d);
111+
112+
svfloat16_t a_fp16 = svld1_f16(pg_16, reinterpret_cast<const __fp16*>(x + i));
113+
svfloat16_t b_fp16 = svld1_f16(pg_16, reinterpret_cast<const __fp16*>(y + i));
114+
115+
svfloat32_t a_fp32_low = svcvt_f32_f16_z(pg_32, svtrn1_f16(a_fp16, a_fp16));
116+
svfloat32_t a_fp32_high = svcvt_f32_f16_z(pg_32, svtrn2_f16(a_fp16, a_fp16));
117+
svfloat32_t b_fp32_low = svcvt_f32_f16_z(pg_32, svtrn1_f16(b_fp16, b_fp16));
118+
svfloat32_t b_fp32_high = svcvt_f32_f16_z(pg_32, svtrn2_f16(b_fp16, b_fp16));
119+
120+
sum1 = svmla_f32_m(pg_32, sum1, a_fp32_low, b_fp32_low);
121+
sum2 = svmla_f32_m(pg_32, sum2, a_fp32_high, b_fp32_high);
122+
123+
i += svcnth();
124+
}
125+
126+
svfloat32_t total_sum = svadd_f32_m(pg_32, sum1, sum2);
127+
return svaddv_f32(pg_32, total_sum);
128+
}
129+
99130
float
100131
fvec_L1_sve(const float* x, const float* y, size_t d) {
101132
svfloat32_t sum = svdup_f32(0.0f);
@@ -308,6 +339,14 @@ fvec_L2sqr_ny_sve(float* dis, const float* x, const float* y, size_t d, size_t n
308339
}
309340
}
310341

342+
void
343+
fvec_inner_products_ny_sve(float* ip, const float* x, const float* y, size_t d, size_t ny) {
344+
for (size_t i = 0; i < ny; ++i) {
345+
ip[i] = fvec_inner_product_sve(x, y, d);
346+
y += d;
347+
}
348+
}
349+
311350
} // namespace faiss
312351

313352
#endif

src/simd/distances_sve.h

+6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ fvec_inner_product_sve(const float* x, const float* y, size_t d);
2828
float
2929
fp16_vec_L2sqr_sve(const knowhere::fp16* x, const knowhere::fp16* y, size_t d);
3030

31+
float
32+
fp16_vec_inner_product_sve(const knowhere::fp16* x, const knowhere::fp16* y, size_t d);
33+
3134
float
3235
fvec_L1_sve(const float* x, const float* y, size_t d);
3336

@@ -60,5 +63,8 @@ fvec_L2sqr_batch_4_sve(const float* x, const float* y0, const float* y1, const f
6063
void
6164
fvec_L2sqr_ny_sve(float* dis, const float* x, const float* y, size_t d, size_t ny);
6265

66+
void
67+
fvec_inner_products_ny_sve(float* ip, const float* x, const float* y, size_t d, size_t ny);
68+
6369
} // namespace faiss
6470
#endif

src/simd/hook.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -447,13 +447,13 @@ fvec_hook(std::string& simd_type) {
447447

448448
fvec_inner_product = fvec_inner_product_sve;
449449
fvec_L2sqr_ny = fvec_L2sqr_ny_sve;
450-
fvec_inner_products_ny = fvec_inner_products_ny_neon;
450+
fvec_inner_products_ny = fvec_inner_products_ny_sve;
451451

452452
ivec_inner_product = ivec_inner_product_neon;
453453
ivec_L2sqr = ivec_L2sqr_neon;
454454

455455
// fp16
456-
fp16_vec_inner_product = fp16_vec_inner_product_neon;
456+
fp16_vec_inner_product = fp16_vec_inner_product_sve;
457457
fp16_vec_L2sqr = fp16_vec_L2sqr_sve;
458458
fp16_vec_norm_L2sqr = fp16_vec_norm_L2sqr_sve;
459459

0 commit comments

Comments
 (0)