SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 1702.08734 · 2017

Billion-scale similarity search with GPUs

Jeff Johnson

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 35 functions out of this paper's own repositories and ran 8 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
mimbres/neural-audio-fp — 2 of 3
gauenk/faiss_fork — 2 of 3
CoderINusE/NIPS-implementation — 2 of 2
NGDSystems/faiss pwc_unofficial 1 of 4
facebookresearch/faiss — 1 of 1
architecture-research-group/ae-asplo25-iks-faiss pwc_unofficial 0 of 13
PhilipBAdams/faiss-learned-termination-prior-weighted pwc_unofficial 0 of 8
junjya/faiss — 0 of 1
FunctionStatusWhere it lives
ResultHeap Ran facebookresearch/faiss/faiss/python/extra_wrappers.py
code served (permissive licence) · get_code("ea695399691d5c67")
TopKDecoder Ran CoderINusE/NIPS-implementation/cachemodel/model/TopKDecoder.py
pointer only (licence: NONE) · get_code("46daee162d87d2b7")
_inflate Ran CoderINusE/NIPS-implementation/cachemodel/model/TopKDecoder.py
pointer only (licence: NONE) · get_code("5d2667bb7b710034")
conv_eye_func Ran mimbres/neural-audio-fp/model/utils/mini_search_subroutines.py
code served (permissive licence) · get_code("3f2d7c9af203247b")
index_topk Ran gauenk/faiss_fork/contrib/kmb_search/topk_impl.py
code served (permissive licence) · get_code("a44319c627db69a6")
kmb_topk Ran gauenk/faiss_fork/contrib/kmb_search/topk_impl.py
code served (permissive licence) · get_code("7af4b720e9e6976b")
mmap_fvecs Ran NGDSystems/faiss/benchs/bench_gpu_1bn.py
pointer only (licence: MIT) · get_code("37bf4e15693c357b")
pairwise_distances_for_eval Ran mimbres/neural-audio-fp/model/utils/mini_search_subroutines.py
code served (permissive licence) · get_code("b2924daa439523ca")
Version Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/loader.py
pointer only (licence: MIT) · get_code("dfb360f7bbe13cdf")
array_to_AlignedTable Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/array_conversions.py
pointer only (licence: MIT) · get_code("59b740b6e231a05f")
compute_GT_CPU Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/benchs/learned_termination/compute_gt.py
pointer only (licence: MIT) · get_code("da1a30713335ebc8")
dataset_iterator Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/benchs/learned_termination/compute_gt.py
pointer only (licence: MIT) · get_code("09f96192d762b88a")
factory_factory Not yet run architecture-research-group/ae-asplo25-iks-faiss/benchs/bench_fw_codecs.py
pointer only (licence: MIT) · get_code("196998b7ff7b22d1")
format_tab Not yet run NGDSystems/faiss/benchs/bench_index_flat.py
pointer only (licence: MIT) · get_code("8fb34ab9942200dd")
fvecs_read Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/benchs/learned_termination/util.py
pointer only (licence: MIT) · get_code("23c02ac2706051bc")
handle_Index Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/python/faiss.py
pointer only (licence: MIT) · get_code("ca9b07ade2ce388e")
handle_Index Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/class_wrappers.py
pointer only (licence: MIT) · get_code("27ffa8dd9a2a7106")
handle_IndexBinary Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/python/faiss.py
pointer only (licence: MIT) · get_code("5fee7d1fb37901eb")
handle_IndexBinary Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/class_wrappers.py
pointer only (licence: MIT) · get_code("a7eb95c467797608")
handle_Quantizer Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/python/faiss.py
pointer only (licence: MIT) · get_code("b1f85415d968de69")
handle_Quantizer Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/class_wrappers.py
pointer only (licence: MIT) · get_code("971e6d130b48826e")
index_cpu_to_all_gpus Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/gpu_wrappers.py
pointer only (licence: MIT) · get_code("864bb6e516b151f4")
index_cpu_to_gpu_multiple_py Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/gpu_wrappers.py
pointer only (licence: MIT) · get_code("cff1de004efc1328")
index_cpu_to_gpus_list Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/gpu_wrappers.py
pointer only (licence: MIT) · get_code("80e56c7c054e0ebc")
ivecs_read Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/benchs/learned_termination/util.py
pointer only (licence: MIT) · get_code("7989213dfc5c4cc4")
kmax Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/extra_wrappers.py
pointer only (licence: MIT) · get_code("b229576ee03690d2")
kmin Not yet run junjya/faiss/python/faiss.py
code served (permissive licence) · get_code("7c7d46a7a6d55978")
kmin Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/extra_wrappers.py
pointer only (licence: MIT) · get_code("e7675ea4deb8fd46")
mini_search_eval Not yet run mimbres/neural-audio-fp/model/utils/mini_search_subroutines.py
code served (permissive licence) · get_code("d5ecc4f95dcb92a0")
mmap_bvecs Not yet run NGDSystems/faiss/benchs/bench_gpu_1bn.py
pointer only (licence: MIT) · get_code("1c59580df5e1f28e")
sanitize Not yet run NGDSystems/faiss/benchs/bench_gpu_1bn.py
pointer only (licence: MIT) · get_code("3246aac64c9cf190")
sanitize Not yet run PhilipBAdams/faiss-learned-termination-prior-weighted/benchs/learned_termination/compute_gt.py
pointer only (licence: MIT) · get_code("c7cb5f9b4731ed5a")
topk_torch Not yet run gauenk/faiss_fork/contrib/kmb_search/topk_impl.py
code served (permissive licence) · get_code("0cd29500df5d2f5e")
vector_float_to_array Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/array_conversions.py
pointer only (licence: MIT) · get_code("8ed35895b6a30e26")
vector_to_array Not yet run architecture-research-group/ae-asplo25-iks-faiss/faiss/python/array_conversions.py
pointer only (licence: MIT) · get_code("771b9836ad9a8c25")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

Similarity search finds application in specialized database systems handling complex data such as images or videos, which are typically represented by high-dimensional features and require specific indexing structures. This paper tackles the problem of better utilizing GPUs for this task. While GPUs excel at data-parallel tasks, prior approaches are bottlenecked by algorithms that expose less parallelism, such as k-min selection, or make poor use of the memory hierarchy. We propose a design for k-selection that operates at up to 55% of theoretical peak performance, enabling a nearest neighbor implementation that is 8.5× faster than prior GPU state of the art. We apply it in different similarity search scenarios, by proposing optimized design for brute-force, approximate and compressed-domain search based on product quantization. In all these setups, we outperform the state of the art by large margins. Our implementation enables the construction of a high accuracy k-NN graph on 95 million images from the Yfcc100M dataset in 35 minutes, and of a graph connecting 1 billion vectors in less than 12 hours on 4 Maxwell Titan X GPUs. We have open-sourced our approach 1 for the sake of comparison and reproducibility.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("1702.08734")
get_code_for_paper("1702.08734")
have("1702.08734")

Connect an agent — have() is free.