mirror of
https://github.com/facebookresearch/faiss.git
synced 2025-06-03 21:54:02 +08:00
Reduces OMP overhead single query search (#2825)
Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/2825 Includes ProductQuantizer::search Reviewed By: mdouze Differential Revision: D45028415 fbshipit-source-id: 088b10af18e89088bbd8367ed5e0a266cef5c29d
This commit is contained in:
parent
c5834c92be
commit
3b13c625c6
@ -473,7 +473,7 @@ void ProductQuantizer::compute_distance_tables(
|
||||
#endif
|
||||
if (dsub < 16) {
|
||||
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel for if (nx > 1)
|
||||
for (int64_t i = 0; i < nx; i++) {
|
||||
compute_distance_table(x + i * d, dis_tables + i * ksub * M);
|
||||
}
|
||||
@ -507,7 +507,7 @@ void ProductQuantizer::compute_inner_prod_tables(
|
||||
#endif
|
||||
if (dsub < 16) {
|
||||
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel for if (nx > 1)
|
||||
for (int64_t i = 0; i < nx; i++) {
|
||||
compute_inner_prod_table(x + i * d, dis_tables + i * ksub * M);
|
||||
}
|
||||
@ -681,7 +681,7 @@ void pq_knn_search_with_tables(
|
||||
size_t k = res->k, nx = res->nh;
|
||||
size_t ksub = pq.ksub, M = pq.M;
|
||||
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel for if (nx > 1)
|
||||
for (int64_t i = 0; i < nx; i++) {
|
||||
/* query preparation for asymmetric search: compute look-up tables */
|
||||
const float* dis_table = dis_tables + i * ksub * M;
|
||||
|
@ -824,7 +824,7 @@ void pairwise_indexed_L2sqr(
|
||||
const float* y,
|
||||
const int64_t* iy,
|
||||
float* dis) {
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel for if (n > 1)
|
||||
for (int64_t j = 0; j < n; j++) {
|
||||
if (ix[j] >= 0 && iy[j] >= 0) {
|
||||
dis[j] = fvec_L2sqr(x + d * ix[j], y + d * iy[j], d);
|
||||
@ -840,7 +840,7 @@ void pairwise_indexed_inner_product(
|
||||
const float* y,
|
||||
const int64_t* iy,
|
||||
float* dis) {
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel for if (n > 1)
|
||||
for (int64_t j = 0; j < n; j++) {
|
||||
if (ix[j] >= 0 && iy[j] >= 0) {
|
||||
dis[j] = fvec_inner_product(x + d * ix[j], y + d * iy[j], d);
|
||||
@ -941,7 +941,7 @@ void pairwise_L2sqr(
|
||||
// store in beginning of distance matrix to avoid malloc
|
||||
float* b_norms = dis;
|
||||
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel for if (nb > 1)
|
||||
for (int64_t i = 0; i < nb; i++)
|
||||
b_norms[i] = fvec_norm_L2sqr(xb + i * ldb, d);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user