faiss 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/ext/faiss/extconf.rb +2 -1
  4. data/ext/faiss/{index_rb.cpp → index.cpp} +1 -1
  5. data/ext/faiss/index_binary.cpp +1 -1
  6. data/ext/faiss/kmeans.cpp +1 -1
  7. data/ext/faiss/pca_matrix.cpp +1 -1
  8. data/ext/faiss/product_quantizer.cpp +1 -1
  9. data/ext/faiss/{utils_rb.cpp → utils.cpp} +1 -1
  10. data/lib/faiss/version.rb +1 -1
  11. data/vendor/faiss/faiss/AutoTune.cpp +93 -80
  12. data/vendor/faiss/faiss/Clustering.cpp +39 -240
  13. data/vendor/faiss/faiss/Clustering.h +6 -0
  14. data/vendor/faiss/faiss/IVFlib.cpp +41 -21
  15. data/vendor/faiss/faiss/Index.cpp +6 -5
  16. data/vendor/faiss/faiss/Index.h +5 -5
  17. data/vendor/faiss/faiss/Index2Layer.cpp +37 -53
  18. data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +49 -37
  19. data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.cpp +36 -34
  20. data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.h +4 -1
  21. data/vendor/faiss/faiss/IndexBinary.cpp +5 -3
  22. data/vendor/faiss/faiss/IndexBinary.h +4 -4
  23. data/vendor/faiss/faiss/IndexBinaryFlat.cpp +1 -1
  24. data/vendor/faiss/faiss/IndexBinaryFlat.h +1 -1
  25. data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +4 -4
  26. data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +88 -97
  27. data/vendor/faiss/faiss/IndexBinaryHNSW.h +9 -3
  28. data/vendor/faiss/faiss/IndexBinaryHash.cpp +45 -236
  29. data/vendor/faiss/faiss/IndexBinaryHash.h +6 -6
  30. data/vendor/faiss/faiss/IndexBinaryIVF.cpp +89 -417
  31. data/vendor/faiss/faiss/IndexFastScan.cpp +72 -109
  32. data/vendor/faiss/faiss/IndexFastScan.h +25 -23
  33. data/vendor/faiss/faiss/IndexFlat.cpp +27 -20
  34. data/vendor/faiss/faiss/IndexFlat.h +21 -18
  35. data/vendor/faiss/faiss/IndexFlatCodes.cpp +42 -19
  36. data/vendor/faiss/faiss/IndexHNSW.cpp +374 -206
  37. data/vendor/faiss/faiss/IndexHNSW.h +16 -2
  38. data/vendor/faiss/faiss/IndexIDMap.cpp +25 -21
  39. data/vendor/faiss/faiss/IndexIDMap.h +9 -7
  40. data/vendor/faiss/faiss/IndexIVF.cpp +467 -364
  41. data/vendor/faiss/faiss/IndexIVF.h +33 -12
  42. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +79 -76
  43. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.cpp +96 -93
  44. data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.h +4 -1
  45. data/vendor/faiss/faiss/IndexIVFFastScan.cpp +357 -238
  46. data/vendor/faiss/faiss/IndexIVFFastScan.h +42 -41
  47. data/vendor/faiss/faiss/IndexIVFFlat.cpp +39 -69
  48. data/vendor/faiss/faiss/IndexIVFFlat.h +32 -0
  49. data/vendor/faiss/faiss/IndexIVFFlatPanorama.cpp +56 -33
  50. data/vendor/faiss/faiss/IndexIVFFlatPanorama.h +3 -1
  51. data/vendor/faiss/faiss/IndexIVFIndependentQuantizer.cpp +18 -15
  52. data/vendor/faiss/faiss/IndexIVFPQ.cpp +73 -846
  53. data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +151 -121
  54. data/vendor/faiss/faiss/IndexIVFPQFastScan.h +3 -0
  55. data/vendor/faiss/faiss/IndexIVFPQR.cpp +23 -20
  56. data/vendor/faiss/faiss/IndexIVFRaBitQ.cpp +30 -52
  57. data/vendor/faiss/faiss/IndexIVFRaBitQ.h +2 -1
  58. data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.cpp +475 -476
  59. data/vendor/faiss/faiss/IndexIVFRaBitQFastScan.h +248 -93
  60. data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +41 -127
  61. data/vendor/faiss/faiss/IndexIVFSpectralHash.h +1 -1
  62. data/vendor/faiss/faiss/IndexLSH.cpp +36 -19
  63. data/vendor/faiss/faiss/IndexLattice.cpp +13 -13
  64. data/vendor/faiss/faiss/IndexNNDescent.cpp +36 -21
  65. data/vendor/faiss/faiss/IndexNNDescent.h +2 -2
  66. data/vendor/faiss/faiss/IndexNSG.cpp +38 -23
  67. data/vendor/faiss/faiss/IndexNeuralNetCodec.cpp +31 -11
  68. data/vendor/faiss/faiss/IndexPQ.cpp +128 -221
  69. data/vendor/faiss/faiss/IndexPQ.h +3 -2
  70. data/vendor/faiss/faiss/IndexPQFastScan.cpp +20 -14
  71. data/vendor/faiss/faiss/IndexPQFastScan.h +3 -0
  72. data/vendor/faiss/faiss/IndexPreTransform.cpp +25 -18
  73. data/vendor/faiss/faiss/IndexPreTransform.h +1 -1
  74. data/vendor/faiss/faiss/IndexRaBitQ.cpp +11 -36
  75. data/vendor/faiss/faiss/IndexRaBitQ.h +2 -1
  76. data/vendor/faiss/faiss/IndexRaBitQFastScan.cpp +41 -277
  77. data/vendor/faiss/faiss/IndexRaBitQFastScan.h +183 -27
  78. data/vendor/faiss/faiss/IndexRefine.cpp +30 -25
  79. data/vendor/faiss/faiss/IndexRefine.h +4 -4
  80. data/vendor/faiss/faiss/IndexReplicas.cpp +6 -6
  81. data/vendor/faiss/faiss/IndexRowwiseMinMax.cpp +15 -14
  82. data/vendor/faiss/faiss/IndexRowwiseMinMax.h +1 -1
  83. data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +150 -20
  84. data/vendor/faiss/faiss/IndexScalarQuantizer.h +10 -0
  85. data/vendor/faiss/faiss/IndexShards.cpp +10 -9
  86. data/vendor/faiss/faiss/IndexShardsIVF.cpp +21 -15
  87. data/vendor/faiss/faiss/MatrixStats.cpp +5 -4
  88. data/vendor/faiss/faiss/MetaIndexes.cpp +19 -17
  89. data/vendor/faiss/faiss/MetaIndexes.h +1 -1
  90. data/vendor/faiss/faiss/MetricType.h +14 -7
  91. data/vendor/faiss/faiss/SuperKMeans.cpp +656 -0
  92. data/vendor/faiss/faiss/SuperKMeans.h +97 -0
  93. data/vendor/faiss/faiss/VectorTransform.cpp +237 -149
  94. data/vendor/faiss/faiss/VectorTransform.h +16 -16
  95. data/vendor/faiss/faiss/build.cpp +23 -0
  96. data/vendor/faiss/faiss/build.h +15 -0
  97. data/vendor/faiss/faiss/clone_index.cpp +48 -47
  98. data/vendor/faiss/faiss/cppcontrib/SaDecodeKernels.h +1 -1
  99. data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-avx2-inl.h +47 -47
  100. data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-inl.h +11 -0
  101. data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-neon-inl.h +902 -12
  102. data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-avx2-inl.h +38 -38
  103. data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-inl.h +11 -0
  104. data/vendor/faiss/faiss/cppcontrib/sa_decode/PQ-neon-inl.h +702 -10
  105. data/vendor/faiss/faiss/factory_tools.cpp +9 -0
  106. data/vendor/faiss/faiss/gpu/GpuIndexCagra.h +6 -5
  107. data/vendor/faiss/faiss/gpu/GpuResources.h +3 -2
  108. data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +15 -16
  109. data/vendor/faiss/faiss/gpu/StandardGpuResources.h +5 -4
  110. data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +46 -0
  111. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +56 -0
  112. data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +78 -1
  113. data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +72 -0
  114. data/vendor/faiss/faiss/gpu/test/TestUtils.h +23 -0
  115. data/vendor/faiss/faiss/gpu/utils/CuvsFilterConvert.h +1 -1
  116. data/vendor/faiss/faiss/gpu/utils/CuvsUtils.h +21 -10
  117. data/vendor/faiss/faiss/gpu_metal/GpuIndexFlat.h +22 -0
  118. data/vendor/faiss/faiss/gpu_metal/MetalCloner.h +35 -0
  119. data/vendor/faiss/faiss/gpu_metal/MetalDistance.h +87 -0
  120. data/vendor/faiss/faiss/gpu_metal/MetalFlatKernels.h +40 -0
  121. data/vendor/faiss/faiss/gpu_metal/MetalIndex.h +58 -0
  122. data/vendor/faiss/faiss/gpu_metal/MetalIndexFlat.h +65 -0
  123. data/vendor/faiss/faiss/gpu_metal/MetalIndexIVFFlat.h +181 -0
  124. data/vendor/faiss/faiss/gpu_metal/MetalKernels.h +111 -0
  125. data/vendor/faiss/faiss/gpu_metal/MetalPythonBridge.h +45 -0
  126. data/vendor/faiss/faiss/gpu_metal/MetalResources.h +79 -0
  127. data/vendor/faiss/faiss/gpu_metal/StandardMetalResources.h +35 -0
  128. data/vendor/faiss/faiss/gpu_metal/impl/MetalIVFFlat.h +193 -0
  129. data/vendor/faiss/faiss/impl/AdSampling.cpp +103 -0
  130. data/vendor/faiss/faiss/impl/AdSampling.h +35 -0
  131. data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +29 -25
  132. data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +1 -0
  133. data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +10 -9
  134. data/vendor/faiss/faiss/impl/AuxIndexStructures.h +3 -0
  135. data/vendor/faiss/faiss/impl/ClusteringHelpers.cpp +244 -0
  136. data/vendor/faiss/faiss/impl/ClusteringHelpers.h +94 -0
  137. data/vendor/faiss/faiss/impl/ClusteringInitialization.cpp +16 -16
  138. data/vendor/faiss/faiss/impl/CodePacker.cpp +3 -3
  139. data/vendor/faiss/faiss/impl/CodePackerRaBitQ.cpp +1 -1
  140. data/vendor/faiss/faiss/impl/DistanceComputer.h +8 -8
  141. data/vendor/faiss/faiss/impl/FaissAssert.h +6 -3
  142. data/vendor/faiss/faiss/impl/FaissException.h +50 -3
  143. data/vendor/faiss/faiss/impl/HNSW.cpp +639 -507
  144. data/vendor/faiss/faiss/impl/HNSW.h +61 -44
  145. data/vendor/faiss/faiss/impl/IDSelector.cpp +15 -11
  146. data/vendor/faiss/faiss/impl/IDSelector.h +8 -8
  147. data/vendor/faiss/faiss/impl/InvertedListScannerStats.h +26 -0
  148. data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +82 -77
  149. data/vendor/faiss/faiss/impl/NNDescent.cpp +62 -25
  150. data/vendor/faiss/faiss/impl/NNDescent.h +6 -2
  151. data/vendor/faiss/faiss/impl/NSG.cpp +53 -32
  152. data/vendor/faiss/faiss/impl/NSG.h +4 -4
  153. data/vendor/faiss/faiss/impl/Panorama.cpp +23 -6
  154. data/vendor/faiss/faiss/impl/Panorama.h +269 -87
  155. data/vendor/faiss/faiss/impl/PdxLayout.cpp +93 -0
  156. data/vendor/faiss/faiss/impl/PdxLayout.h +41 -0
  157. data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +46 -32
  158. data/vendor/faiss/faiss/impl/PolysemousTraining.h +3 -3
  159. data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.cpp +35 -35
  160. data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +21 -16
  161. data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +55 -25
  162. data/vendor/faiss/faiss/impl/Quantizer.h +2 -2
  163. data/vendor/faiss/faiss/impl/RaBitQUtils.cpp +55 -49
  164. data/vendor/faiss/faiss/impl/RaBitQUtils.h +65 -0
  165. data/vendor/faiss/faiss/impl/RaBitQuantizer.cpp +302 -283
  166. data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +26 -23
  167. data/vendor/faiss/faiss/impl/ResidualQuantizer.h +1 -1
  168. data/vendor/faiss/faiss/impl/ResultHandler.h +100 -75
  169. data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +318 -7
  170. data/vendor/faiss/faiss/impl/ScalarQuantizer.h +77 -1
  171. data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +14 -11
  172. data/vendor/faiss/faiss/impl/VisitedTable.cpp +10 -10
  173. data/vendor/faiss/faiss/impl/VisitedTable.h +70 -28
  174. data/vendor/faiss/faiss/impl/approx_topk/approx_topk.h +276 -0
  175. data/vendor/faiss/faiss/impl/approx_topk/avx2.cpp +68 -0
  176. data/vendor/faiss/faiss/{utils → impl}/approx_topk/generic.h +15 -8
  177. data/vendor/faiss/faiss/impl/approx_topk/neon.cpp +68 -0
  178. data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab-inl.h +169 -0
  179. data/vendor/faiss/faiss/impl/approx_topk/rq_beam_search_tab.h +117 -0
  180. data/vendor/faiss/faiss/impl/approx_topk/simdlib256-inl.h +146 -0
  181. data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHNSW_impl.h +73 -0
  182. data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryHash_impl.h +270 -0
  183. data/vendor/faiss/faiss/impl/binary_hamming/IndexBinaryIVF_impl.h +460 -0
  184. data/vendor/faiss/faiss/impl/binary_hamming/IndexIVFSpectralHash_impl.h +159 -0
  185. data/vendor/faiss/faiss/impl/binary_hamming/IndexPQ_impl.h +92 -0
  186. data/vendor/faiss/faiss/impl/binary_hamming/avx2.cpp +26 -0
  187. data/vendor/faiss/faiss/impl/binary_hamming/avx512.cpp +26 -0
  188. data/vendor/faiss/faiss/impl/binary_hamming/dispatch.h +143 -0
  189. data/vendor/faiss/faiss/impl/binary_hamming/neon.cpp +26 -0
  190. data/vendor/faiss/faiss/impl/binary_hamming/rvv.cpp +26 -0
  191. data/vendor/faiss/faiss/impl/expanded_scanners.h +8 -3
  192. data/vendor/faiss/faiss/impl/{FastScanDistancePostProcessing.h → fast_scan/FastScanDistancePostProcessing.h} +13 -6
  193. data/vendor/faiss/faiss/impl/{LookupTableScaler.h → fast_scan/LookupTableScaler.h} +16 -5
  194. data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops.h +237 -0
  195. data/vendor/faiss/faiss/impl/fast_scan/accumulate_loops_512.h +185 -0
  196. data/vendor/faiss/faiss/impl/fast_scan/decompose_qbs.h +229 -0
  197. data/vendor/faiss/faiss/impl/fast_scan/dispatching.h +270 -0
  198. data/vendor/faiss/faiss/impl/{pq4_fast_scan.cpp → fast_scan/fast_scan.cpp} +169 -2
  199. data/vendor/faiss/faiss/impl/fast_scan/fast_scan.h +341 -0
  200. data/vendor/faiss/faiss/impl/fast_scan/impl-avx2.cpp +36 -0
  201. data/vendor/faiss/faiss/impl/fast_scan/impl-avx512.cpp +40 -0
  202. data/vendor/faiss/faiss/impl/fast_scan/impl-neon.cpp +120 -0
  203. data/vendor/faiss/faiss/impl/fast_scan/impl-riscv.cpp +104 -0
  204. data/vendor/faiss/faiss/impl/fast_scan/kernels_simd256.h +213 -0
  205. data/vendor/faiss/faiss/impl/{pq4_fast_scan_search_qbs.cpp → fast_scan/kernels_simd512.h} +26 -356
  206. data/vendor/faiss/faiss/impl/fast_scan/rabitq_dispatching.h +90 -0
  207. data/vendor/faiss/faiss/impl/fast_scan/rabitq_result_handler.h +108 -0
  208. data/vendor/faiss/faiss/impl/{simd_result_handlers.h → fast_scan/simd_result_handlers.h} +282 -134
  209. data/vendor/faiss/faiss/impl/hnsw/LockVector.cpp +54 -0
  210. data/vendor/faiss/faiss/impl/hnsw/LockVector.h +64 -0
  211. data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.cpp +83 -0
  212. data/vendor/faiss/faiss/impl/hnsw/MinimaxHeap.h +113 -0
  213. data/vendor/faiss/faiss/impl/hnsw/avx2.cpp +150 -0
  214. data/vendor/faiss/faiss/impl/hnsw/avx512.cpp +142 -0
  215. data/vendor/faiss/faiss/impl/index_read.cpp +1227 -79
  216. data/vendor/faiss/faiss/impl/index_read_utils.h +1 -1
  217. data/vendor/faiss/faiss/impl/index_write.cpp +96 -13
  218. data/vendor/faiss/faiss/impl/io.cpp +6 -6
  219. data/vendor/faiss/faiss/impl/io_macros.h +58 -16
  220. data/vendor/faiss/faiss/impl/kmeans1d.cpp +10 -10
  221. data/vendor/faiss/faiss/impl/lattice_Zn.cpp +37 -23
  222. data/vendor/faiss/faiss/impl/lattice_Zn.h +6 -6
  223. data/vendor/faiss/faiss/impl/mapped_io.cpp +6 -6
  224. data/vendor/faiss/faiss/impl/platform_macros.h +15 -4
  225. data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQScanner_impl.h +549 -0
  226. data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.cpp +245 -0
  227. data/vendor/faiss/faiss/impl/pq_code_distance/IVFPQ_QueryTables.h +105 -0
  228. data/vendor/faiss/faiss/impl/pq_code_distance/PQDistanceComputer_impl.h +106 -0
  229. data/vendor/faiss/faiss/impl/pq_code_distance/avx2.cpp +23 -0
  230. data/vendor/faiss/faiss/impl/pq_code_distance/avx512.cpp +23 -0
  231. data/vendor/faiss/faiss/impl/pq_code_distance/neon.cpp +23 -0
  232. data/vendor/faiss/faiss/impl/pq_code_distance/{pq_code_distance-avx2.cpp → pq_code_distance-avx2.h} +9 -13
  233. data/vendor/faiss/faiss/impl/pq_code_distance/{pq_code_distance-avx512.cpp → pq_code_distance-avx512.h} +9 -57
  234. data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.cpp +45 -107
  235. data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-generic.h +96 -0
  236. data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-inl.h +274 -5
  237. data/vendor/faiss/faiss/impl/pq_code_distance/pq_code_distance-sve.cpp +10 -7
  238. data/vendor/faiss/faiss/impl/pq_code_distance/pq_scan_impl.h +105 -0
  239. data/vendor/faiss/faiss/impl/pq_code_distance/rvv.cpp +70 -0
  240. data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp +311 -477
  241. data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h +1 -1
  242. data/vendor/faiss/faiss/impl/scalar_quantizer/codecs.h +1 -1
  243. data/vendor/faiss/faiss/impl/scalar_quantizer/distance_computers.h +9 -2
  244. data/vendor/faiss/faiss/impl/scalar_quantizer/quantizers.h +419 -19
  245. data/vendor/faiss/faiss/impl/scalar_quantizer/scanners.h +27 -1
  246. data/vendor/faiss/faiss/impl/scalar_quantizer/similarities.h +3 -3
  247. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx2.cpp +387 -2
  248. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512-impl.h +553 -0
  249. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512-spr.cpp +559 -0
  250. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-avx512.cpp +341 -2
  251. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-dispatch.h +425 -3
  252. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-neon.cpp +290 -2
  253. data/vendor/faiss/faiss/impl/scalar_quantizer/sq-rvv.cpp +337 -0
  254. data/vendor/faiss/faiss/impl/scalar_quantizer/training.cpp +192 -8
  255. data/vendor/faiss/faiss/impl/scalar_quantizer/training.h +12 -0
  256. data/vendor/faiss/faiss/impl/simd_dispatch.h +157 -66
  257. data/vendor/faiss/faiss/impl/simdlib/simdlib.h +57 -0
  258. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_avx2.h +264 -172
  259. data/vendor/faiss/faiss/impl/simdlib/simdlib_avx512.h +414 -0
  260. data/vendor/faiss/faiss/impl/simdlib/simdlib_dispatch.h +44 -0
  261. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_emulated.h +231 -166
  262. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_neon.h +270 -218
  263. data/vendor/faiss/faiss/{utils → impl/simdlib}/simdlib_ppc64.h +201 -160
  264. data/vendor/faiss/faiss/impl/svs_io.cpp +12 -3
  265. data/vendor/faiss/faiss/impl/svs_io.h +8 -2
  266. data/vendor/faiss/faiss/index_factory.cpp +90 -18
  267. data/vendor/faiss/faiss/index_io.h +40 -0
  268. data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +66 -16
  269. data/vendor/faiss/faiss/invlists/DirectMap.cpp +28 -15
  270. data/vendor/faiss/faiss/invlists/DirectMap.h +4 -3
  271. data/vendor/faiss/faiss/invlists/InvertedLists.cpp +170 -86
  272. data/vendor/faiss/faiss/invlists/InvertedLists.h +88 -25
  273. data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +4 -4
  274. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +13 -13
  275. data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +1 -1
  276. data/vendor/faiss/faiss/svs/IndexSVSFaissUtils.h +1 -1
  277. data/vendor/faiss/faiss/svs/IndexSVSFlat.cpp +2 -2
  278. data/vendor/faiss/faiss/svs/IndexSVSIVF.cpp +350 -0
  279. data/vendor/faiss/faiss/svs/IndexSVSIVF.h +128 -0
  280. data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.cpp +40 -0
  281. data/vendor/faiss/faiss/svs/IndexSVSIVFLVQ.h +43 -0
  282. data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.cpp +225 -0
  283. data/vendor/faiss/faiss/svs/IndexSVSIVFLeanVec.h +71 -0
  284. data/vendor/faiss/faiss/svs/IndexSVSVamana.cpp +142 -21
  285. data/vendor/faiss/faiss/svs/IndexSVSVamana.h +33 -7
  286. data/vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.cpp +3 -2
  287. data/vendor/faiss/faiss/svs/IndexSVSVamanaLVQ.h +2 -1
  288. data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.cpp +77 -27
  289. data/vendor/faiss/faiss/svs/IndexSVSVamanaLeanVec.h +10 -4
  290. data/vendor/faiss/faiss/utils/Heap.cpp +10 -10
  291. data/vendor/faiss/faiss/utils/NeuralNet.cpp +47 -36
  292. data/vendor/faiss/faiss/utils/NeuralNet.h +1 -1
  293. data/vendor/faiss/faiss/utils/approx_topk_hamming/approx_topk_hamming.h +10 -4
  294. data/vendor/faiss/faiss/utils/bf16.h +34 -0
  295. data/vendor/faiss/faiss/utils/distances.cpp +390 -560
  296. data/vendor/faiss/faiss/utils/distances.h +20 -1
  297. data/vendor/faiss/faiss/utils/distances_dispatch.h +117 -37
  298. data/vendor/faiss/faiss/utils/distances_fused/avx512.cpp +8 -7
  299. data/vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp +33 -14
  300. data/vendor/faiss/faiss/utils/distances_fused/distances_fused.h +12 -1
  301. data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp +16 -293
  302. data/vendor/faiss/faiss/utils/distances_fused/simdlib_based_neon.cpp +57 -0
  303. data/vendor/faiss/faiss/utils/distances_fused/simdlib_kernel-inl.h +290 -0
  304. data/vendor/faiss/faiss/utils/distances_simd.cpp +5 -178
  305. data/vendor/faiss/faiss/utils/extra_distances.cpp +9 -8
  306. data/vendor/faiss/faiss/utils/extra_distances.h +32 -6
  307. data/vendor/faiss/faiss/utils/hamming-inl.h +13 -11
  308. data/vendor/faiss/faiss/utils/hamming.cpp +66 -517
  309. data/vendor/faiss/faiss/utils/hamming.h +92 -2
  310. data/vendor/faiss/faiss/utils/hamming_distance/common.h +287 -10
  311. data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx2.cpp +16 -0
  312. data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx512.cpp +15 -0
  313. data/vendor/faiss/faiss/utils/hamming_distance/hamming_avx512_spr.cpp +15 -0
  314. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx2.h +142 -0
  315. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512.h +210 -0
  316. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-avx512_spr.h +171 -0
  317. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-generic.h +368 -0
  318. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-neon.h +322 -0
  319. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer-rvv.h +39 -0
  320. data/vendor/faiss/faiss/utils/hamming_distance/hamming_computer.h +146 -0
  321. data/vendor/faiss/faiss/utils/hamming_distance/hamming_impl.h +481 -0
  322. data/vendor/faiss/faiss/utils/hamming_distance/hamming_neon.cpp +15 -0
  323. data/vendor/faiss/faiss/utils/hamming_distance/hamming_rvv.cpp +15 -0
  324. data/vendor/faiss/faiss/utils/partitioning.cpp +66 -989
  325. data/vendor/faiss/faiss/utils/partitioning.h +31 -0
  326. data/vendor/faiss/faiss/utils/popcount.h +29 -0
  327. data/vendor/faiss/faiss/utils/pq_code_distance.h +2 -2
  328. data/vendor/faiss/faiss/utils/prefetch.h +2 -2
  329. data/vendor/faiss/faiss/utils/quantize_lut.cpp +30 -30
  330. data/vendor/faiss/faiss/utils/quantize_lut.h +1 -1
  331. data/vendor/faiss/faiss/utils/rabitq_simd.h +57 -536
  332. data/vendor/faiss/faiss/utils/random.cpp +6 -6
  333. data/vendor/faiss/faiss/utils/simd_impl/IVFFlatScanner-inl.h +51 -0
  334. data/vendor/faiss/faiss/utils/simd_impl/distances_aarch64.cpp +5 -1
  335. data/vendor/faiss/faiss/utils/simd_impl/distances_arm_sve.cpp +213 -4
  336. data/vendor/faiss/faiss/utils/simd_impl/distances_autovec-inl.h +163 -10
  337. data/vendor/faiss/faiss/utils/simd_impl/distances_avx2.cpp +250 -4
  338. data/vendor/faiss/faiss/utils/simd_impl/distances_avx512.cpp +7 -4
  339. data/vendor/faiss/faiss/utils/simd_impl/distances_rvv.cpp +189 -0
  340. data/vendor/faiss/faiss/utils/simd_impl/distances_simdlib256.h +195 -0
  341. data/vendor/faiss/faiss/utils/simd_impl/distances_sse-inl.h +2 -1
  342. data/vendor/faiss/faiss/utils/{distances_fused/simdlib_based.h → simd_impl/exhaustive_L2sqr_blas_cmax.h} +5 -10
  343. data/vendor/faiss/faiss/utils/simd_impl/hamming_impl.h +481 -0
  344. data/vendor/faiss/faiss/utils/simd_impl/partitioning_avx2.cpp +14 -0
  345. data/vendor/faiss/faiss/utils/simd_impl/partitioning_neon.cpp +14 -0
  346. data/vendor/faiss/faiss/utils/simd_impl/partitioning_simdlib256.h +1031 -0
  347. data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx2.cpp +355 -0
  348. data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx512.cpp +477 -0
  349. data/vendor/faiss/faiss/utils/simd_impl/rabitq_avx512_spr.cpp +343 -0
  350. data/vendor/faiss/faiss/utils/simd_impl/rabitq_neon.cpp +55 -0
  351. data/vendor/faiss/faiss/utils/simd_impl/rabitq_rvv.cpp +55 -0
  352. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_dispatch.h +32 -0
  353. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels.h +43 -0
  354. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx2.cpp +57 -0
  355. data/vendor/faiss/faiss/utils/simd_impl/super_kmeans_kernels_avx512.cpp +45 -0
  356. data/vendor/faiss/faiss/utils/simd_levels.cpp +29 -7
  357. data/vendor/faiss/faiss/utils/simd_levels.h +93 -1
  358. data/vendor/faiss/faiss/utils/sorting.cpp +48 -36
  359. data/vendor/faiss/faiss/utils/utils.cpp +5 -5
  360. data/vendor/faiss/faiss/utils/utils.h +3 -3
  361. metadata +129 -34
  362. data/vendor/faiss/faiss/impl/RaBitQStats.cpp +0 -29
  363. data/vendor/faiss/faiss/impl/RaBitQStats.h +0 -56
  364. data/vendor/faiss/faiss/impl/pq4_fast_scan.h +0 -224
  365. data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +0 -230
  366. data/vendor/faiss/faiss/utils/approx_topk/approx_topk.h +0 -84
  367. data/vendor/faiss/faiss/utils/approx_topk/avx2-inl.h +0 -196
  368. data/vendor/faiss/faiss/utils/approx_topk/mode.h +0 -34
  369. data/vendor/faiss/faiss/utils/distances_fused/avx512.h +0 -36
  370. data/vendor/faiss/faiss/utils/extra_distances-inl.h +0 -235
  371. data/vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h +0 -462
  372. data/vendor/faiss/faiss/utils/hamming_distance/avx512-inl.h +0 -490
  373. data/vendor/faiss/faiss/utils/hamming_distance/generic-inl.h +0 -449
  374. data/vendor/faiss/faiss/utils/hamming_distance/hamdis-inl.h +0 -87
  375. data/vendor/faiss/faiss/utils/hamming_distance/neon-inl.h +0 -524
  376. data/vendor/faiss/faiss/utils/simdlib.h +0 -42
  377. data/vendor/faiss/faiss/utils/simdlib_avx512.h +0 -365
  378. /data/ext/faiss/{utils_rb.h → utils.h} +0 -0
@@ -54,11 +54,11 @@ double PermutationObjective::cost_update(const int* perm, int iw, int jw)
54
54
  }
55
55
 
56
56
  SimulatedAnnealingOptimizer::SimulatedAnnealingOptimizer(
57
- PermutationObjective* obj,
57
+ PermutationObjective* obj_in,
58
58
  const SimulatedAnnealingParameters& p)
59
59
  : SimulatedAnnealingParameters(p),
60
- obj(obj),
61
- n(obj->n),
60
+ obj(obj_in),
61
+ n(obj_in->n),
62
62
  logfile(nullptr) {
63
63
  rnd = new RandomGenerator(p.seed);
64
64
  FAISS_THROW_IF_NOT(n < 100000 && n >= 0);
@@ -165,7 +165,7 @@ double SimulatedAnnealingOptimizer::optimize(int* perm) {
165
165
  ****************************************************/
166
166
 
167
167
  static inline int hamming_dis(uint64_t a, uint64_t b) {
168
- return __builtin_popcountl(a ^ b);
168
+ return popcount64(a ^ b);
169
169
  }
170
170
 
171
171
  namespace {
@@ -260,10 +260,10 @@ struct ReproduceWithHammingObjective : PermutationObjective {
260
260
  }
261
261
 
262
262
  ReproduceWithHammingObjective(
263
- int nbits,
263
+ int nbits_in,
264
264
  const std::vector<double>& dis_table,
265
- double dis_weight_factor)
266
- : nbits(nbits), dis_weight_factor(dis_weight_factor) {
265
+ double dis_weight_factor_in)
266
+ : nbits(nbits_in), dis_weight_factor(dis_weight_factor_in) {
267
267
  n = 1 << nbits;
268
268
  FAISS_THROW_IF_NOT(dis_table.size() == n * n);
269
269
  set_affine_target_dis(dis_table);
@@ -373,12 +373,12 @@ double ReproduceDistancesObjective::cost_update(const int* perm, int iw, int jw)
373
373
  }
374
374
 
375
375
  ReproduceDistancesObjective::ReproduceDistancesObjective(
376
- int n,
376
+ int n_in,
377
377
  const double* source_dis_in,
378
378
  const double* target_dis_in,
379
- double dis_weight_factor)
380
- : dis_weight_factor(dis_weight_factor), target_dis(target_dis_in) {
381
- this->n = n;
379
+ double dis_weight_factor_in)
380
+ : dis_weight_factor(dis_weight_factor_in), target_dis(target_dis_in) {
381
+ this->n = n_in;
382
382
  set_affine_target_dis(source_dis_in);
383
383
  }
384
384
 
@@ -388,7 +388,7 @@ void ReproduceDistancesObjective::compute_mean_stdev(
388
388
  double* mean_out,
389
389
  double* stddev_out) {
390
390
  double sum = 0, sum2 = 0;
391
- for (int i = 0; i < n2; i++) {
391
+ for (size_t i = 0; i < n2; i++) {
392
392
  sum += tab[i];
393
393
  sum2 += tab[i] * tab[i];
394
394
  }
@@ -668,18 +668,18 @@ struct RankingScore2 : Score3Computer<float, double> {
668
668
  const float* gt_distances;
669
669
 
670
670
  RankingScore2(
671
- int nbits,
672
- int nq,
673
- int nb,
674
- const uint32_t* qcodes,
675
- const uint32_t* bcodes,
676
- const float* gt_distances)
677
- : nbits(nbits),
678
- nq(nq),
679
- nb(nb),
680
- qcodes(qcodes),
681
- bcodes(bcodes),
682
- gt_distances(gt_distances) {
671
+ int nbits_in,
672
+ int nq_in,
673
+ int nb_in,
674
+ const uint32_t* qcodes_in,
675
+ const uint32_t* bcodes_in,
676
+ const float* gt_distances_in)
677
+ : nbits(nbits_in),
678
+ nq(nq_in),
679
+ nb(nb_in),
680
+ qcodes(qcodes_in),
681
+ bcodes(bcodes_in),
682
+ gt_distances(gt_distances_in) {
683
683
  n = nc = 1 << nbits;
684
684
  n_gt.resize(nc * nc * nc);
685
685
  init_n_gt();
@@ -796,7 +796,7 @@ void PolysemousTraining::optimize_reproduce_distances(
796
796
  }
797
797
 
798
798
  #pragma omp parallel for num_threads(nt)
799
- for (int m = 0; m < pq.M; m++) {
799
+ for (int m = 0; m < static_cast<int>(pq.M); m++) {
800
800
  std::vector<double> dis_table;
801
801
 
802
802
  // printf ("Optimizing quantizer %d\n", m);
@@ -823,7 +823,14 @@ void PolysemousTraining::optimize_reproduce_distances(
823
823
 
824
824
  if (log_pattern.size()) {
825
825
  char fname[256];
826
+ #if defined(__GNUC__) || defined(__clang__)
827
+ #pragma GCC diagnostic push
828
+ #pragma GCC diagnostic ignored "-Wformat-nonliteral"
829
+ #endif
826
830
  snprintf(fname, 256, log_pattern.c_str(), m);
831
+ #if defined(__GNUC__) || defined(__clang__)
832
+ #pragma GCC diagnostic pop
833
+ #endif
827
834
  printf("opening log file %s\n", fname);
828
835
  optim.logfile = fopen(fname, "w");
829
836
  FAISS_THROW_IF_NOT_MSG(optim.logfile, "could not open logfile");
@@ -872,21 +879,21 @@ void PolysemousTraining::optimize_ranking(
872
879
  }
873
880
 
874
881
  #pragma omp parallel for
875
- for (int m = 0; m < pq.M; m++) {
882
+ for (int m = 0; m < static_cast<int>(pq.M); m++) {
876
883
  size_t nq, nb;
877
884
  std::vector<uint32_t> codes; // query codes, then db codes
878
885
  std::vector<float> gt_distances; // nq * nb matrix of distances
879
886
 
880
887
  if (n > 0) {
881
888
  std::vector<float> xtrain(n * dsub);
882
- for (int i = 0; i < n; i++) {
889
+ for (size_t i = 0; i < n; i++) {
883
890
  memcpy(xtrain.data() + i * dsub,
884
891
  x + i * pq.d + m * dsub,
885
892
  sizeof(float) * dsub);
886
893
  }
887
894
 
888
895
  codes.resize(n);
889
- for (int i = 0; i < n; i++) {
896
+ for (size_t i = 0; i < n; i++) {
890
897
  codes[i] = all_codes[i * pq.code_size + m];
891
898
  }
892
899
 
@@ -901,8 +908,8 @@ void PolysemousTraining::optimize_ranking(
901
908
  } else {
902
909
  nq = nb = pq.ksub;
903
910
  codes.resize(2 * nq);
904
- for (int i = 0; i < nq; i++) {
905
- codes[i] = codes[i + nq] = i;
911
+ for (size_t i = 0; i < nq; i++) {
912
+ codes[i] = codes[i + nq] = static_cast<uint32_t>(i);
906
913
  }
907
914
 
908
915
  gt_distances.resize(nq * nb);
@@ -935,7 +942,14 @@ void PolysemousTraining::optimize_ranking(
935
942
 
936
943
  if (log_pattern.size()) {
937
944
  char fname[256];
945
+ #if defined(__GNUC__) || defined(__clang__)
946
+ #pragma GCC diagnostic push
947
+ #pragma GCC diagnostic ignored "-Wformat-nonliteral"
948
+ #endif
938
949
  snprintf(fname, 256, log_pattern.c_str(), m);
950
+ #if defined(__GNUC__) || defined(__clang__)
951
+ #pragma GCC diagnostic pop
952
+ #endif
939
953
  printf("opening log file %s\n", fname);
940
954
  optim.logfile = fopen(fname, "w");
941
955
  FAISS_THROW_IF_NOT_FMT(
@@ -957,11 +971,11 @@ void PolysemousTraining::optimize_ranking(
957
971
  float* centroids = pq.get_centroids(m, 0);
958
972
 
959
973
  std::vector<float> centroids_copy;
960
- for (int i = 0; i < dsub * pq.ksub; i++) {
974
+ for (size_t i = 0; i < dsub * pq.ksub; i++) {
961
975
  centroids_copy.push_back(centroids[i]);
962
976
  }
963
977
 
964
- for (int i = 0; i < pq.ksub; i++) {
978
+ for (size_t i = 0; i < pq.ksub; i++) {
965
979
  memcpy(centroids + perm[i] * dsub,
966
980
  centroids_copy.data() + i * dsub,
967
981
  dsub * sizeof(centroids[0]));
@@ -70,10 +70,10 @@ struct ReproduceDistancesObjective : PermutationObjective {
70
70
  double cost_update(const int* perm, int iw, int jw) const override;
71
71
 
72
72
  ReproduceDistancesObjective(
73
- int n,
73
+ int n_in,
74
74
  const double* source_dis_in,
75
75
  const double* target_dis_in,
76
- double dis_weight_factor);
76
+ double dis_weight_factor_in);
77
77
 
78
78
  static void compute_mean_stdev(
79
79
  const double* tab,
@@ -95,7 +95,7 @@ struct SimulatedAnnealingOptimizer : SimulatedAnnealingParameters {
95
95
  FILE* logfile; /// logs values of the cost function
96
96
 
97
97
  SimulatedAnnealingOptimizer(
98
- PermutationObjective* obj,
98
+ PermutationObjective* obj_in,
99
99
  const SimulatedAnnealingParameters& p);
100
100
  RandomGenerator* rnd;
101
101
 
@@ -42,22 +42,22 @@ int sgemm_(
42
42
  namespace faiss {
43
43
 
44
44
  ProductAdditiveQuantizer::ProductAdditiveQuantizer(
45
- size_t d,
45
+ size_t d_,
46
46
  const std::vector<AdditiveQuantizer*>& aqs,
47
- Search_type_t search_type) {
48
- init(d, aqs, search_type);
47
+ Search_type_t search_type_) {
48
+ init(d_, aqs, search_type_);
49
49
  }
50
50
 
51
51
  ProductAdditiveQuantizer::ProductAdditiveQuantizer()
52
52
  : ProductAdditiveQuantizer(0, {}) {}
53
53
 
54
54
  void ProductAdditiveQuantizer::init(
55
- size_t d,
55
+ size_t d_in,
56
56
  const std::vector<AdditiveQuantizer*>& aqs,
57
- Search_type_t search_type) {
57
+ Search_type_t search_type_in) {
58
58
  // AdditiveQuantizer constructor
59
- this->d = d;
60
- this->search_type = search_type;
59
+ this->d = d_in;
60
+ this->search_type = search_type_in;
61
61
  M = 0;
62
62
  for (const auto& q : aqs) {
63
63
  M += q->M;
@@ -98,7 +98,7 @@ void ProductAdditiveQuantizer::train(size_t n, const float* x) {
98
98
  xt.resize(q->d * n);
99
99
 
100
100
  #pragma omp parallel for if (n > 1000)
101
- for (idx_t i = 0; i < n; i++) {
101
+ for (idx_t i = 0; i < static_cast<idx_t>(n); i++) {
102
102
  memcpy(xt.data() + i * q->d,
103
103
  x + i * d + offset_d,
104
104
  q->d * sizeof(*x));
@@ -153,7 +153,7 @@ void ProductAdditiveQuantizer::compute_unpacked_codes(
153
153
  const float* x,
154
154
  int32_t* unpacked_codes,
155
155
  size_t n,
156
- const float* centroids) const {
156
+ const float* /*centroids*/) const {
157
157
  /// TODO: actually we do not need to unpack and pack
158
158
  size_t offset_d = 0, offset_m = 0;
159
159
  std::vector<float> xsub;
@@ -165,7 +165,7 @@ void ProductAdditiveQuantizer::compute_unpacked_codes(
165
165
  codes.resize(n * q->code_size);
166
166
 
167
167
  #pragma omp parallel for if (n > 1000)
168
- for (idx_t i = 0; i < n; i++) {
168
+ for (idx_t i = 0; i < static_cast<idx_t>(n); i++) {
169
169
  memcpy(xsub.data() + i * q->d,
170
170
  x + i * d + offset_d,
171
171
  q->d * sizeof(float));
@@ -175,7 +175,7 @@ void ProductAdditiveQuantizer::compute_unpacked_codes(
175
175
 
176
176
  // unpack
177
177
  #pragma omp parallel for if (n > 1000)
178
- for (idx_t i = 0; i < n; i++) {
178
+ for (idx_t i = 0; i < static_cast<idx_t>(n); i++) {
179
179
  uint8_t* code = codes.data() + i * q->code_size;
180
180
  BitstringReader bsr(code, q->code_size);
181
181
 
@@ -204,7 +204,7 @@ void ProductAdditiveQuantizer::decode_unpacked(
204
204
 
205
205
  // product additive quantizer decoding
206
206
  #pragma omp parallel for if (n > 1000)
207
- for (int64_t i = 0; i < n; i++) {
207
+ for (int64_t i = 0; i < static_cast<int64_t>(n); i++) {
208
208
  const int32_t* codesi = codes + i * ld_codes;
209
209
 
210
210
  size_t offset_m = 0, offset_d = 0;
@@ -212,7 +212,7 @@ void ProductAdditiveQuantizer::decode_unpacked(
212
212
  const auto q = quantizers[s];
213
213
  float* xi = x + i * d + offset_d;
214
214
 
215
- for (int m = 0; m < q->M; m++) {
215
+ for (size_t m = 0; m < q->M; m++) {
216
216
  int idx = codesi[offset_m + m];
217
217
  const float* c = codebooks.data() +
218
218
  q->d * (codebook_offsets[offset_m + m] + idx);
@@ -235,7 +235,7 @@ void ProductAdditiveQuantizer::decode(const uint8_t* codes, float* x, size_t n)
235
235
  is_trained, "The product additive quantizer is not trained yet.");
236
236
 
237
237
  #pragma omp parallel for if (n > 1000)
238
- for (int64_t i = 0; i < n; i++) {
238
+ for (int64_t i = 0; i < static_cast<int64_t>(n); i++) {
239
239
  BitstringReader bsr(codes + i * code_size, code_size);
240
240
 
241
241
  size_t offset_m = 0, offset_d = 0;
@@ -243,7 +243,7 @@ void ProductAdditiveQuantizer::decode(const uint8_t* codes, float* x, size_t n)
243
243
  const auto q = quantizers[s];
244
244
  float* xi = x + i * d + offset_d;
245
245
 
246
- for (int m = 0; m < q->M; m++) {
246
+ for (size_t m = 0; m < q->M; m++) {
247
247
  int idx = bsr.read(q->nbits[m]);
248
248
  const float* c = codebooks.data() +
249
249
  q->d * (codebook_offsets[offset_m + m] + idx);
@@ -315,24 +315,24 @@ void ProductAdditiveQuantizer::compute_LUT(
315
315
  ************************************/
316
316
 
317
317
  ProductLocalSearchQuantizer::ProductLocalSearchQuantizer(
318
- size_t d,
319
- size_t nsplits,
318
+ size_t d_,
319
+ size_t nsplits_,
320
320
  size_t Msub,
321
- size_t nbits,
322
- Search_type_t search_type) {
321
+ size_t nbits_,
322
+ Search_type_t search_type_) {
323
323
  std::vector<AdditiveQuantizer*> aqs;
324
324
 
325
- if (nsplits > 0) {
326
- FAISS_THROW_IF_NOT(d % nsplits == 0);
327
- size_t dsub = d / nsplits;
325
+ if (nsplits_ > 0) {
326
+ FAISS_THROW_IF_NOT(d_ % nsplits_ == 0);
327
+ size_t dsub = d_ / nsplits_;
328
328
 
329
- for (size_t i = 0; i < nsplits; i++) {
329
+ for (size_t i = 0; i < nsplits_; i++) {
330
330
  auto lsq =
331
- new LocalSearchQuantizer(dsub, Msub, nbits, ST_decompress);
331
+ new LocalSearchQuantizer(dsub, Msub, nbits_, ST_decompress);
332
332
  aqs.push_back(lsq);
333
333
  }
334
334
  }
335
- init(d, aqs, search_type);
335
+ init(d_, aqs, search_type_);
336
336
  for (auto& q : aqs) {
337
337
  delete q;
338
338
  }
@@ -346,23 +346,23 @@ ProductLocalSearchQuantizer::ProductLocalSearchQuantizer()
346
346
  ************************************/
347
347
 
348
348
  ProductResidualQuantizer::ProductResidualQuantizer(
349
- size_t d,
350
- size_t nsplits,
349
+ size_t d_,
350
+ size_t nsplits_,
351
351
  size_t Msub,
352
- size_t nbits,
353
- Search_type_t search_type) {
352
+ size_t nbits_,
353
+ Search_type_t search_type_) {
354
354
  std::vector<AdditiveQuantizer*> aqs;
355
355
 
356
- if (nsplits > 0) {
357
- FAISS_THROW_IF_NOT(d % nsplits == 0);
358
- size_t dsub = d / nsplits;
356
+ if (nsplits_ > 0) {
357
+ FAISS_THROW_IF_NOT(d_ % nsplits_ == 0);
358
+ size_t dsub = d_ / nsplits_;
359
359
 
360
- for (size_t i = 0; i < nsplits; i++) {
361
- auto rq = new ResidualQuantizer(dsub, Msub, nbits, ST_decompress);
360
+ for (size_t i = 0; i < nsplits_; i++) {
361
+ auto rq = new ResidualQuantizer(dsub, Msub, nbits_, ST_decompress);
362
362
  aqs.push_back(rq);
363
363
  }
364
364
  }
365
- init(d, aqs, search_type);
365
+ init(d_, aqs, search_type_);
366
366
  for (auto& q : aqs) {
367
367
  delete q;
368
368
  }
@@ -10,10 +10,10 @@
10
10
  namespace faiss {
11
11
 
12
12
  inline PQEncoderGeneric::PQEncoderGeneric(
13
- uint8_t* code,
14
- int nbits,
15
- uint8_t offset)
16
- : code(code), offset(offset), nbits(nbits), reg(0) {
13
+ uint8_t* code_in,
14
+ int nbits_in,
15
+ uint8_t offset_in)
16
+ : code(code_in), offset(offset_in), nbits(nbits_in), reg(0) {
17
17
  assert(nbits <= 64);
18
18
  if (offset > 0) {
19
19
  reg = (*code & ((1 << offset) - 1));
@@ -45,28 +45,30 @@ inline PQEncoderGeneric::~PQEncoderGeneric() {
45
45
  }
46
46
  }
47
47
 
48
- inline PQEncoder8::PQEncoder8(uint8_t* code, int nbits) : code(code) {
49
- assert(8 == nbits);
48
+ inline PQEncoder8::PQEncoder8(uint8_t* code_in, int nbits_in) : code(code_in) {
49
+ assert(8 == nbits_in);
50
+ (void)nbits_in;
50
51
  }
51
52
 
52
53
  inline void PQEncoder8::encode(uint64_t x) {
53
54
  *code++ = (uint8_t)x;
54
55
  }
55
56
 
56
- inline PQEncoder16::PQEncoder16(uint8_t* code, int nbits)
57
- : code((uint16_t*)code) {
58
- assert(16 == nbits);
57
+ inline PQEncoder16::PQEncoder16(uint8_t* code_in, int nbits_in)
58
+ : code((uint16_t*)code_in) {
59
+ assert(16 == nbits_in);
60
+ (void)nbits_in;
59
61
  }
60
62
 
61
63
  inline void PQEncoder16::encode(uint64_t x) {
62
64
  *code++ = (uint16_t)x;
63
65
  }
64
66
 
65
- inline PQDecoderGeneric::PQDecoderGeneric(const uint8_t* code, int nbits)
66
- : code(code),
67
+ inline PQDecoderGeneric::PQDecoderGeneric(const uint8_t* code_in, int nbits_in)
68
+ : code(code_in),
67
69
  offset(0),
68
- nbits(nbits),
69
- mask((1ull << nbits) - 1),
70
+ nbits(nbits_in),
71
+ mask((1ull << nbits_in) - 1),
70
72
  reg(0) {
71
73
  assert(nbits <= 64);
72
74
  }
@@ -98,17 +100,20 @@ inline uint64_t PQDecoderGeneric::decode() {
98
100
  return c & mask;
99
101
  }
100
102
 
101
- inline PQDecoder8::PQDecoder8(const uint8_t* code, int nbits_in) : code(code) {
103
+ inline PQDecoder8::PQDecoder8(const uint8_t* code_in, int nbits_in)
104
+ : code(code_in) {
102
105
  assert(8 == nbits_in);
106
+ (void)nbits_in;
103
107
  }
104
108
 
105
109
  inline uint64_t PQDecoder8::decode() {
106
110
  return (uint64_t)(*code++);
107
111
  }
108
112
 
109
- inline PQDecoder16::PQDecoder16(const uint8_t* code, int nbits_in)
110
- : code((uint16_t*)code) {
113
+ inline PQDecoder16::PQDecoder16(const uint8_t* code_in, int nbits_in)
114
+ : code((uint16_t*)code_in) {
111
115
  assert(16 == nbits_in);
116
+ (void)nbits_in;
112
117
  }
113
118
 
114
119
  inline uint64_t PQDecoder16::decode() {