使用示例
请参见1获取的源代码中获取测试框架代码,假设源代码位于“/path/to/scann/sra_scann_adapter”,测试框架代码位于“/path/to/scann/sra_scann_adapter/ann-benchmarks”下。
下方使用示例以使用sift-128-euclidean.hdf5数据集为例,数据集可通过以下方式获取:
1 2 3 | cd /path/to/scann/sra_scann_adapter/ann-benchmarks mkdir data && cd data wget http://ann-benchmarks.com/sift-128-euclidean.hdf5 --no-check-certificate |
主要文件的目录结构如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ├── ann-benchmarks ├── data // 存放数据集 └── sift-128-euclidean.hdf5 ├── ann_benchmarks └── algorithms └── scann └── cpp_test └── config-sift-128-euclidean.config // 对应数据集配置文件 └── test_cpp.sh // 测试脚本 ├── scann ├── CMakeLists.txt // 编译配置文件 ├── eval.cpp // 测试代码 └── cmdline.h // 命令行参数解析库头文件 project.sh // 编译脚本 |
运行步骤如下:
- 请确保8已编译成功libscann_cc.so。
- 安装CMake。
yum install cmake
- 安装相关依赖。
yum install numactl numactl-devel hdf5 hdf5-devel gtest-devel gcc-toolset-12-libstdc++-static
- 安装Python依赖。
1 2 3
cd /path/to/scann/sra_scann_adapter/ann-benchmarks pip install -r requirements.txt pip install treelite==4.2.1 tl2cgen
- 安装protobuf。
wget https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.21.9.tar.gz --no-check-certificate tar -xzf v3.21.9.tar.gz cd protobuf-3.21.9 mkdir build && cd build cmake .. -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/protobuf-3.21.9 make install export PATH=/usr/local/protobuf-3.21.9/bin:$PATH export LD_LIBRARY_PATH=/usr/local/protobuf-3.21.9/lib:$LD_LIBRARY_PATH
- 安装abseil。
wget https://storage.googleapis.com/mirror.tensorflow.org/github.com/abseil/abseil-cpp/archive/fb3621f4f897824c0dbe0615fa94543df6192f30.tar.gz --no-check-certificate tar -xvzf fb3621f4f897824c0dbe0615fa94543df6192f30.tar.gz cd abseil-cpp-fb3621f4f897824c0dbe0615fa94543df6192f30 mkdir build && cd build cmake .. && make -j make install
- 安装eigen。
git clone https://gitlab.com/libeigen/eigen.git cd eigen git checkout 33d0937c6bdf5ec999939fb17f2a553183d14a74 mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/eigen-3.3.7 make -j && make install
- 编译可执行文件。
cd /path/to/scann/sra_scann_adapter sh project.sh --build_eval_cmake_sve
project.sh中包含以下编译选项,可根据需求进行选择:
- --prepare:进行Python依赖安装。
- --build_eval_cmake_sve:通过cmake使用libscann_cc.so构建SVE指令版本的可执行文件。
- --build_eval_cmake_neon:通过cmake使用libscann_cc.so构建NEON指令版本的可执行文件。
- --build_eval_bazel_sve:通过bazel使用源代码构建SVE指令版本的可执行文件。
- --build_eval_bazel_neon:通过bazel使用源代码构建NEON指令版本的可执行文件。
- 运行测试脚本。
1
sh test_cpp.sh
运行结果如下:
父主题: C++接口