鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

使用示例

本章节提供的使用示例以使用sift-128-euclidean.hdf5数据集,Faiss(HNSW)算法,线程数32为例。

获取数据集与测试程序

  1. 获取数据集。
    1
    wget http://ann-benchmarks.com/sift-128-euclidean.hdf5 --no-check-certificate
    
  2. 获取测试程序。分支为v1.3.0,假设程序运行的目录为“/path/to/krl-faiss-test”,完整的目录结构应如下所示:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    ├── configs                                                   // 存放对应算法、对应数据集配置文件
          └── hnsw
                └── hnsw_sift-128-euclidean.config 
    ├── include                                                   // 存放测试框架对应的头文件
    ├── src                                                       // 存放测试框架对应的源文件
    ├── Makefile                                                  // 编译脚本文件
    ├── test.sh                                                   // 测试脚本
    ├── data                                                      // 存放数据集
          └── sift-128-euclidean.hdf5
    ├── indexes
          └── hnsw                                                // 存放构建好的索引,需手动创建。
                └── sift.faiss                                    // 构建好的索引,运行可执行文件hnsw_test后(对应数据集配置文件“save_or_load”为save)时生成
    └── hnsw_test                                                 // 编译后生成的可执行文件
    

使用示例

  1. 假设程序运行的目录为“/path/to/krl-faiss-test”,将数据集存放至当前路径下的“data”文件夹。
  2. 若是第一次执行,确保hnsw_sift-128-euclidean.config文件中的“save_or_load”“save”;后续执行时可改为“load”,使用构建好的图索引或检索器查询。
  3. 安装相关依赖。
    1
    yum install hdf5 hdf5-devel numactl numactl-devel
    
  4. 确保已安装KRL。请根据Faiss使能KRL中实际安装的Faiss路径,修改Makefile文件中“FAISSROOT”项。
  5. 编译可执行文件。
    1
    2
    export KRL_PATH=/usr/local/sra_krl/lib
    make hnsw_test
    

    “KRL_PATH”可根据KRL动态库文件实际存放地址设置,安装RPM后默认位于“/usr/local/sra_krl/lib”

    目前可通过使能KRL算子的形式对开源Faiss的HNSW、PQFS、IVFPQ、IVFPQFS等算法进行加速,测试时不同的算法需要选择不同的编译指令:

    • HNSW算法:make hnsw
    • PQFS算法:make pqfs
    • IVFPQ算法:make ivfpq
    • IVFPQFS算法:make ivfpqfs
  6. 运行可执行文件。将OpenBLAS与Faiss动态库路径添加至环境变量。
    1
    2
    export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/:/path/to/faiss/install/lib64:$LD_LIBRARY_PATH
    numactl -C 0-31 -m 0 ./hnsw_test hnsw sift-128-euclidean
    

    执行结果如下。