{
  "dataset": {
    "name": "sift-128-euclidean",
    "base_file": "sift-128-euclidean/base.fbin",
    "query_file": "sift-128-euclidean/query.fbin",
    "groundtruth_neighbors_file": "sift-128-euclidean/groundtruth.neighbors.ibin",
    "distance": "euclidean"
  },

  "search_basic_param": {
    "batch_size": 5000,
    "k": 10
  },

  "index": [
    {
      "name": "hnswlib.M12",
      "algo": "hnswlib",
      "build_param": {"M":12, "efConstruction":500, "numThreads":32},
      "file": "sift-128-euclidean/hnswlib/M12",
      "search_params": [
        {"ef":10},
        {"ef":20},
        {"ef":40},
        {"ef":60},
        {"ef":80},
        {"ef":120},
        {"ef":200},
        {"ef":400},
        {"ef":600},
        {"ef":800}
      ]
    },
    {
      "name": "hnswlib.M16",
      "algo": "hnswlib",
      "build_param": {"M":16, "efConstruction":500, "numThreads":32},
      "file": "sift-128-euclidean/hnswlib/M16",
      "search_params": [
        {"ef":10},
        {"ef":20},
        {"ef":40},
        {"ef":60},
        {"ef":80},
        {"ef":120},
        {"ef":200},
        {"ef":400},
        {"ef":600},
        {"ef":800}
      ]
    },
    {
      "name": "hnswlib.M24",
      "algo": "hnswlib",
      "build_param": {"M":24, "efConstruction":500, "numThreads":32},
      "file": "sift-128-euclidean/hnswlib/M24",
      "search_params": [
        {"ef":10},
        {"ef":20},
        {"ef":40},
        {"ef":60},
        {"ef":80},
        {"ef":120},
        {"ef":200},
        {"ef":400},
        {"ef":600},
        {"ef":800}
      ]
    },
    {
      "name": "hnswlib.M36",
      "algo": "hnswlib",
      "build_param": {"M":36, "efConstruction":500, "numThreads":32},
      "file": "sift-128-euclidean/hnswlib/M36",
      "search_params": [
        {"ef":10},
        {"ef":20},
        {"ef":40},
        {"ef":60},
        {"ef":80},
        {"ef":120},
        {"ef":200},
        {"ef":400},
        {"ef":600},
        {"ef":800}
      ]
    },
    {
      "name": "raft_bfknn",
      "algo": "raft_bfknn",
      "build_param": {},
      "file": "sift-128-euclidean/raft_bfknn/bfknn",
      "search_params": [{"probe": 1}]
    },
    {
      "name": "faiss_gpu_ivf_flat.nlist1024",
      "algo": "faiss_gpu_ivf_flat",
      "build_param": {"nlist": 1024},
      "file": "sift-128-euclidean/faiss_gpu_ivf_flat/nlist1024",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_flat.nlist2048",
      "algo": "faiss_gpu_ivf_flat",
      "build_param": {"nlist": 2048},
      "file": "sift-128-euclidean/faiss_gpu_ivf_flat/nlist2048",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_flat.nlist4096",
      "algo": "faiss_gpu_ivf_flat",
      "build_param": {"nlist": 4096},
      "file": "sift-128-euclidean/faiss_gpu_ivf_flat/nlist4096",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_flat.nlist8192",
      "algo": "faiss_gpu_ivf_flat",
      "build_param": {"nlist": 8192},
      "file": "sift-128-euclidean/faiss_gpu_ivf_flat/nlist8192",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_flat.nlist16384",
      "algo": "faiss_gpu_ivf_flat",
      "build_param": {"nlist": 16384},
      "file": "sift-128-euclidean/faiss_gpu_ivf_flat/nlist16384",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000},
        {"nprobe": 2000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_pq.M64-nlist1024",
      "algo": "faiss_gpu_ivf_pq",
      "build_param": {"nlist": 1024, "M": 64, "useFloat16": true, "usePrecomputed": true},
      "file": "sift-128-euclidean/faiss_gpu_ivf_pq/M64-nlist1024",
      "search_params": [
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_pq.M64-nlist1024.noprecomp",
      "algo": "faiss_gpu_ivf_pq",
      "build_param": {
        "nlist": 1024,
        "M": 64,
        "useFloat16": true,
        "usePrecomputed": false
      },
      "file": "sift-128-euclidean/faiss_gpu_ivf_pq/M64-nlist1024.noprecomp",
      "search_params": [
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist1024-fp16",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 1024, "quantizer_type": "fp16"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist1024-fp16",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist2048-fp16",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 2048, "quantizer_type": "fp16"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist2048-fp16",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist4096-fp16",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 4096, "quantizer_type": "fp16"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist4096-fp16",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist8192-fp16",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 8192, "quantizer_type": "fp16"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist8192-fp16",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist16384-fp16",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 16384, "quantizer_type": "fp16"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist16384-fp16",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000},
        {"nprobe": 2000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist1024-int8",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 1024, "quantizer_type": "int8"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist1024-int8",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist2048-int8",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 2048,"quantizer_type": "int8"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist2048-int8",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist4096-int8",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 4096, "quantizer_type": "int8"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist4096-int8",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist8192-int8",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 8192, "quantizer_type": "int8"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist8192-int8",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "faiss_gpu_ivf_sq.nlist16384-int8",
      "algo": "faiss_gpu_ivf_sq",
      "build_param": {"nlist": 16384, "quantizer_type": "int8"},
      "file": "sift-128-euclidean/faiss_gpu_ivf_sq/nlist16384-int8",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000},
        {"nprobe": 2000}
      ]
    },
    {
      "name": "faiss_gpu_flat",
      "algo": "faiss_gpu_flat",
      "build_param": {},
      "file": "sift-128-euclidean/faiss_gpu_flat/flat",
      "search_params": [{}]
    },
    {
      "name": "raft_ivf_pq.dimpq64-bitpq8-cluster1K",
      "algo": "raft_ivf_pq",
      "build_param": {"niter": 25, "nlist": 1000, "pq_dim": 64, "pq_bits": 8, "ratio": 1},
      "file": "sift-128-euclidean/raft_ivf_pq/dimpq64-bitpq8-cluster1K",
      "search_params": [
        { "nprobe": 20, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 30, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 40, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 50, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 100, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 200, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 500, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 1000, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 20, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 30, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 40, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 50, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 100, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 200, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 500, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 1000, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 20, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 30, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 40, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 50, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 100, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 200, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 500, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 1000, "internalDistanceDtype": "half", "smemLutDtype": "half" }
      ]
    },
    {
      "name": "raft_ivf_pq.dimpq128-bitpq6-cluster1K",
      "algo": "raft_ivf_pq",
      "build_param": {"niter": 25, "nlist": 1000, "pq_dim": 128, "pq_bits": 6, "ratio": 1},
      "file": "sift-128-euclidean/raft_ivf_pq/dimpq128-bitpq6-cluster1K",
      "search_params": [
        { "nprobe": 20, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 30, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 40, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 50, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 100, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 200, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 500, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 1000, "internalDistanceDtype": "float", "smemLutDtype": "float" },
        { "nprobe": 20, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 30, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 40, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 50, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 100, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 200, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 500, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 1000, "internalDistanceDtype": "float", "smemLutDtype": "fp8" },
        { "nprobe": 20, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 30, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 40, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 50, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 100, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 200, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 500, "internalDistanceDtype": "half", "smemLutDtype": "half" },
        { "nprobe": 1000, "internalDistanceDtype": "half", "smemLutDtype": "half" }
      ]
    },
    {
      "name": "raft_ivf_flat.nlist1024",
      "algo": "raft_ivf_flat",
      "build_param": {"nlist": 1024, "ratio": 1, "niter": 25},
      "file": "sift-128-euclidean/raft_ivf_flat/nlist1024",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000}
      ]
    },
    {
      "name": "raft_ivf_flat.nlist16384",
      "algo": "raft_ivf_flat",
      "build_param": {"nlist": 16384, "ratio": 2, "niter": 20},
      "file": "sift-128-euclidean/raft_ivf_flat/nlist16384",
      "search_params": [
        {"nprobe": 1},
        {"nprobe": 5},
        {"nprobe": 10},
        {"nprobe": 50},
        {"nprobe": 100},
        {"nprobe": 200},
        {"nprobe": 500},
        {"nprobe": 1000},
        {"nprobe": 2000}
      ]
    },
    {
      "name": "raft_cagra.dim32",
      "algo": "raft_cagra",
      "build_param": {"graph_degree": 32},
      "file": "sift-128-euclidean/raft_cagra/dim32",
      "search_params": [
        {"itopk": 32},
        {"itopk": 64},
        {"itopk": 128}
      ]
    },
    {
      "name": "raft_cagra.dim64",
      "algo": "raft_cagra",
      "build_param": {"graph_degree": 64},
      "file": "sift-128-euclidean/raft_cagra/dim64",
      "search_params": [
        {"itopk": 32},
        {"itopk": 64},
        {"itopk": 128}
      ]
    }
  ]
}
