兼容性验证
本节介绍在鲲鹏平台进行开源Faiss兼容性验证的方法。使用示例为sift-128-euclidean.hdf5数据集,Faiss(HNSW)算法,线程数32。
获取数据集与测试程序
- 获取数据集。
1wget http://ann-benchmarks.com/sift-128-euclidean.hdf5 --no-check-certificate
- 获取测试程序。分支为v1.4.0,假设程序运行的目录为“/path/to/sra_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 // 编译后生成的可执行文件
开源Faiss兼容性验证
- 从GitHub仓下载开源Faiss源代码,标签为v1.8.0。保存在编译机器可访问的路径中,假设位于“/path/to/faiss-1.8.0”。
git clone --branch v1.8.0 --single-branch https://github.com/facebookresearch/faiss.git
- 假设程序运行的目录为“/path/to/sra_test”,将数据集存放至当前路径下的“data”文件夹。
- 若是第一次执行,确保hnsw_sift-128-euclidean.config文件中的“save_or_load”为“save”;后续执行时可改为“load”,使用构建好的图索引或检索器查询。
- 安装相关依赖。
1yum install hdf5 hdf5-devel numactl numactl-devel
- 请参考编译Faiss节编译得到libfaiss.so。根据实际安装的Faiss路径,修改Makefile文件中“FAISSROOT”项。
- 编译可执行文件。
1 2
export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/:/path/to/faiss/install/lib64:$LD_LIBRARY_PATH make hnsw_test
测试时不同的算法需要选择不同的编译指令:
- HNSW算法:make hnsw_test
- PQFS算法:make pqfs_test
- IVFPQ算法:make ivfpq_test
- IVFPQFS算法:make ivfpqfs_test
- IVFFLAT算法:make ivfflat_test
- 运行可执行文件。将OpenBLAS与Faiss动态库路径添加至环境变量。
1numactl -C 0-31 -m 0 ./hnsw_test hnsw sift-128-euclidean
执行结果如下图所示。

父主题: Faiss说明