{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/efficient-large-scale-approximate-nearest","title":"Efficient Large-scale Approximate Nearest Neighbor Search on the GPU","arxiv_id":"1702.05911","date":"2017-02-20","proceeding":"CVPR 2016 6","authors":["Patrick Wieschollek","Oliver Wang","Alexander Sorkine-Hornung","Hendrik P. A. Lensch"],"abstract":"We present a new approach for efficient approximate nearest neighbor (ANN)\nsearch in high dimensional spaces, extending the idea of Product Quantization.\nWe propose a two-level product and vector quantization tree that reduces the\nnumber of vector comparisons required during tree traversal. Our approach also\nincludes a novel highly parallelizable re-ranking method for candidate vectors\nby efficiently reusing already computed intermediate values. Due to its small\nmemory footprint during traversal, the method lends itself to an efficient,\nparallel GPU implementation. This Product Quantization Tree (PQT) approach\nsignificantly outperforms recent state of the art methods for high dimensional\nnearest neighbor queries on standard reference datasets. Ours is the first work\nthat demonstrates GPU performance superior to CPU performance on high\ndimensional, large scale ANN problems in time-critical real-world applications,\nlike loop-closing in videos.","url_abs":"http://arxiv.org/abs/1702.05911v1","url_pdf":"http://arxiv.org/pdf/1702.05911v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"efficient-large-scale-approximate-nearest","repo_url":"https://github.com/js1010/cuhnsw","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":null,"task_name":"CPU"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"quantization","task_name":"Quantization"},{"task_slug":"re-ranking","task_name":"Re-Ranking"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1702.05911","atlas_url":"https://app.syntology.ai/?focus=1702.05911","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1702.05911"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/js1010/cuhnsw","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":4},"by_repo_kind":{"listed":{"samples":4,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"758554e9a5e8e38d","entry":"find_in_path","repo":"js1010/cuhnsw","repo_kind":"listed","path":"cuda_setup.py","file_url":"https://github.com/js1010/cuhnsw/blob/HEAD/cuda_setup.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"758554e9a5e8e38d"}},{"code_sha256_prefix":"d9cf7b68ba09287d","entry":"get_cuda_compute","repo":"js1010/cuhnsw","repo_kind":"listed","path":"cuda_setup.py","file_url":"https://github.com/js1010/cuhnsw/blob/HEAD/cuda_setup.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d9cf7b68ba09287d"}},{"code_sha256_prefix":"22ab1ddb8e7b10a6","entry":"get_cuda_sm_list","repo":"js1010/cuhnsw","repo_kind":"listed","path":"cuda_setup.py","file_url":"https://github.com/js1010/cuhnsw/blob/HEAD/cuda_setup.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"22ab1ddb8e7b10a6"}},{"code_sha256_prefix":"dd9374387d715b25","entry":"get_logger","repo":"js1010/cuhnsw","repo_kind":"listed","path":"cuhnsw/aux.py","file_url":"https://github.com/js1010/cuhnsw/blob/HEAD/cuhnsw/aux.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"dd9374387d715b25"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}