使用示例
本章节提供的使用示例以使用sift-128-euclidean.hdf5数据集,Faiss(HNSW)算法,线程数32为例。
获取数据集与测试程序
- 获取数据集。
1wget http://ann-benchmarks.com/sift-128-euclidean.hdf5 --no-check-certificate
- 获取测试程序。分支为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 // 编译后生成的可执行文件
使用示例
- 假设程序运行的目录为“/path/to/krl-faiss-test”,将数据集存放至当前路径下的“data”文件夹。
- 若是第一次执行,确保hnsw_sift-128-euclidean.config文件中的“save_or_load”为“save”;后续执行时可改为“load”,使用构建好的图索引或检索器查询。
- 安装相关依赖。
1yum install hdf5 hdf5-devel numactl numactl-devel
- 确保已安装KRL。请根据Faiss使能KRL中实际安装的Faiss路径,修改Makefile文件中“FAISSROOT”项。
- 编译可执行文件。
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
- 运行可执行文件。将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
执行结果如下。

父主题: KRL接口说明