@@ -684,6 +684,192 @@ if(NOT BUILD_CPU_ONLY)
684684 OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_pq/increment_score"
685685 KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
686686 )
687+ set (ivf_rabitq_ns "cuvs::neighbors::ivf_rabitq::detail" )
688+ generate_jit_lto_kernels (
689+ jit_lto_files
690+ NAME_FORMAT "ivf_rabitq_compute_inner_products_with_lut"
691+ MATRIX_JSON_FILE
692+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut_matrix.json"
693+ KERNEL_INPUT_FILE
694+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut_kernel.cu.in"
695+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_compute_inner_products_with_lut"
696+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
697+ OUTPUT_DIRECTORY
698+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_inner_products_with_lut"
699+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
700+ )
701+ generate_jit_lto_kernels (
702+ jit_lto_files
703+ NAME_FORMAT "ivf_rabitq_lut_emit_distances_@with_ex_descriptor@"
704+ MATRIX_JSON_FILE
705+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/lut_emit_distances_matrix.json"
706+ KERNEL_INPUT_FILE
707+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/lut_emit_distances_kernel.cu.in"
708+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_lut_emit_distances<@with_ex_value@>"
709+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
710+ OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/lut_emit_distances"
711+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
712+ )
713+ generate_jit_lto_kernels (
714+ jit_lto_files
715+ NAME_FORMAT "ivf_rabitq_compute_inner_products_with_lut_block_sort"
716+ MATRIX_JSON_FILE
717+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut_block_sort_matrix.json"
718+ KERNEL_INPUT_FILE
719+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut_block_sort_kernel.cu.in"
720+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_compute_inner_products_with_lut_block_sort"
721+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
722+ OUTPUT_DIRECTORY
723+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_inner_products_with_lut_block_sort"
724+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
725+ )
726+ generate_jit_lto_kernels (
727+ jit_lto_files
728+ NAME_FORMAT "ivf_rabitq_lut_block_sort_emit_topk_@with_ex_descriptor@"
729+ MATRIX_JSON_FILE
730+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/lut_block_sort_emit_topk_matrix.json"
731+ KERNEL_INPUT_FILE
732+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/lut_block_sort_emit_topk_kernel.cu.in"
733+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_lut_block_sort_emit_topk<@with_ex_value@>"
734+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
735+ OUTPUT_DIRECTORY
736+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/lut_block_sort_emit_topk"
737+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
738+ )
739+ generate_jit_lto_kernels (
740+ jit_lto_files
741+ NAME_FORMAT "ivf_rabitq_extract_code_@ex_bits@bit"
742+ MATRIX_JSON_FILE
743+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/extract_code_matrix.json"
744+ KERNEL_INPUT_FILE
745+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/extract_code_kernel.cu.in"
746+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_extract_code<@ex_bits@>"
747+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
748+ OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/extract_code"
749+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
750+ )
751+ generate_jit_lto_kernels (
752+ jit_lto_files
753+ NAME_FORMAT "ivf_rabitq_compute_lut_ip_for_vec_@lut_dtype_descriptor@"
754+ MATRIX_JSON_FILE
755+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_lut_ip_for_vec_matrix.json"
756+ KERNEL_INPUT_FILE
757+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_lut_ip_for_vec_kernel.cu.in"
758+ FRAGMENT_TAG_FORMAT
759+ "${ivf_rabitq_ns} ::fragment_tag_compute_lut_ip_for_vec<${ivf_rabitq_ns} ::tag_lut_dtype_@lut_dtype_descriptor@>"
760+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
761+ OUTPUT_DIRECTORY
762+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_lut_ip_for_vec"
763+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
764+ )
765+ generate_jit_lto_kernels (
766+ jit_lto_files
767+ NAME_FORMAT "ivf_rabitq_compute_bitwise_quantized_ip_for_vec_@num_bits@bit"
768+ MATRIX_JSON_FILE
769+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_bitwise_quantized_ip_for_vec_matrix.json"
770+ KERNEL_INPUT_FILE
771+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_bitwise_quantized_ip_for_vec_kernel.cu.in"
772+ FRAGMENT_TAG_FORMAT
773+ "${ivf_rabitq_ns} ::fragment_tag_compute_bitwise_quantized_ip_for_vec<@num_bits@>"
774+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
775+ OUTPUT_DIRECTORY
776+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_bitwise_quantized_ip_for_vec"
777+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
778+ )
779+ generate_jit_lto_kernels (
780+ jit_lto_files
781+ NAME_FORMAT "ivf_rabitq_compute_inner_products_with_lut16_opt"
782+ MATRIX_JSON_FILE
783+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut16_opt_matrix.json"
784+ KERNEL_INPUT_FILE
785+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut16_opt_kernel.cu.in"
786+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_compute_inner_products_with_lut16_opt"
787+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
788+ OUTPUT_DIRECTORY
789+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_inner_products_with_lut16_opt"
790+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
791+ )
792+ generate_jit_lto_kernels (
793+ jit_lto_files
794+ NAME_FORMAT "ivf_rabitq_lut16_opt_emit_distances_@with_ex_descriptor@"
795+ MATRIX_JSON_FILE
796+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/lut16_opt_emit_distances_matrix.json"
797+ KERNEL_INPUT_FILE
798+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/lut16_opt_emit_distances_kernel.cu.in"
799+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_lut16_opt_emit_distances<@with_ex_value@>"
800+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
801+ OUTPUT_DIRECTORY
802+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/lut16_opt_emit_distances"
803+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
804+ )
805+ generate_jit_lto_kernels (
806+ jit_lto_files
807+ NAME_FORMAT "ivf_rabitq_compute_inner_products_with_lut16_opt_block_sort_@with_ex_descriptor@"
808+ MATRIX_JSON_FILE
809+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut16_opt_block_sort_matrix.json"
810+ KERNEL_INPUT_FILE
811+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_lut16_opt_block_sort_kernel.cu.in"
812+ FRAGMENT_TAG_FORMAT
813+ "${ivf_rabitq_ns} ::fragment_tag_compute_inner_products_with_lut16_opt_block_sort<@with_ex_value@>"
814+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
815+ OUTPUT_DIRECTORY
816+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_inner_products_with_lut16_opt_block_sort"
817+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
818+ )
819+ generate_jit_lto_kernels (
820+ jit_lto_files
821+ NAME_FORMAT "ivf_rabitq_compute_inner_products_with_bitwise"
822+ MATRIX_JSON_FILE
823+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_bitwise_matrix.json"
824+ KERNEL_INPUT_FILE
825+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_bitwise_kernel.cu.in"
826+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_compute_inner_products_with_bitwise"
827+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
828+ OUTPUT_DIRECTORY
829+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_inner_products_with_bitwise"
830+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
831+ )
832+ generate_jit_lto_kernels (
833+ jit_lto_files
834+ NAME_FORMAT "ivf_rabitq_bitwise_emit_distances_@with_ex_descriptor@"
835+ MATRIX_JSON_FILE
836+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/bitwise_emit_distances_matrix.json"
837+ KERNEL_INPUT_FILE
838+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/bitwise_emit_distances_kernel.cu.in"
839+ FRAGMENT_TAG_FORMAT "${ivf_rabitq_ns} ::fragment_tag_bitwise_emit_distances<@with_ex_value@>"
840+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
841+ OUTPUT_DIRECTORY
842+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/bitwise_emit_distances"
843+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
844+ )
845+ generate_jit_lto_kernels (
846+ jit_lto_files
847+ NAME_FORMAT "ivf_rabitq_compute_inner_products_with_bitwise_block_sort"
848+ MATRIX_JSON_FILE
849+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_bitwise_block_sort_matrix.json"
850+ KERNEL_INPUT_FILE
851+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/compute_inner_products_with_bitwise_block_sort_kernel.cu.in"
852+ FRAGMENT_TAG_FORMAT
853+ "${ivf_rabitq_ns} ::fragment_tag_compute_inner_products_with_bitwise_block_sort"
854+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
855+ OUTPUT_DIRECTORY
856+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/compute_inner_products_with_bitwise_block_sort"
857+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
858+ )
859+ generate_jit_lto_kernels (
860+ jit_lto_files
861+ NAME_FORMAT "ivf_rabitq_bitwise_block_sort_emit_topk_@with_ex_descriptor@"
862+ MATRIX_JSON_FILE
863+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/bitwise_block_sort_emit_topk_matrix.json"
864+ KERNEL_INPUT_FILE
865+ "${CMAKE_CURRENT_SOURCE_DIR } /src/neighbors/ivf_rabitq/jit_lto_kernels/bitwise_block_sort_emit_topk_kernel.cu.in"
866+ FRAGMENT_TAG_FORMAT
867+ "${ivf_rabitq_ns} ::fragment_tag_bitwise_block_sort_emit_topk<@with_ex_value@>"
868+ FRAGMENT_TAG_HEADER_FILES "<cuvs/detail/jit_lto/ivf_rabitq/ivf_rabitq_fragments.hpp>"
869+ OUTPUT_DIRECTORY
870+ "${CMAKE_CURRENT_BINARY_DIR } /generated_kernels/ivf_rabitq/bitwise_block_sort_emit_topk"
871+ KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements
872+ )
687873 set (cagra_ns "cuvs::neighbors::cagra::detail" )
688874 generate_jit_lto_kernels (
689875 jit_lto_files
@@ -1177,6 +1363,7 @@ if(NOT BUILD_CPU_ONLY)
11771363 ${iface_pq_inst_files}
11781364 src/neighbors/detail/cagra/topk_for_cagra/topk.cu
11791365 ${cuvs_cagra_search_cuda_inst_files}
1366+ src/neighbors/detail/cagra/cagra_helpers.cpp
11801367 src/neighbors/dynamic_batching.cu
11811368 src/neighbors/composite/index.cu
11821369 $<$<BOOL :${BUILD_CAGRA_HNSWLIB} >:src /neighbors /cagra .cpp >
@@ -1200,6 +1387,15 @@ if(NOT BUILD_CPU_ONLY)
12001387 src/neighbors/ivf_pq/detail/ivf_pq_process_and_fill_codes.cu
12011388 ${ivf_pq_search_inst_files}
12021389 ${ivf_pq_transform_inst_files}
1390+ src/neighbors/ivf_rabitq.cu
1391+ src/neighbors/ivf_rabitq/gpu_index/ivf_gpu.cu
1392+ src/neighbors/ivf_rabitq/gpu_index/initializer_gpu.cu
1393+ src/neighbors/ivf_rabitq/gpu_index/quantizer_gpu.cu
1394+ src/neighbors/ivf_rabitq/gpu_index/rotator_gpu.cu
1395+ src/neighbors/ivf_rabitq/gpu_index/searcher_gpu.cu
1396+ src/neighbors/ivf_rabitq/gpu_index/searcher_gpu_shared_mem_opt.cu
1397+ src/neighbors/ivf_rabitq/gpu_index/searcher_gpu_quantize_query.cu
1398+ src/neighbors/ivf_rabitq/utils/searcher_gpu_utils.cu
12031399 src/neighbors/ivf_sq_index.cpp
12041400 src/neighbors/ivf_sq/ivf_sq_build_extend_float_uint8_t_int64_t.cu
12051401 src/neighbors/ivf_sq/ivf_sq_build_extend_half_uint8_t_int64_t.cu
0 commit comments