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

使用示例

请参见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                                                             // 编译脚本

运行步骤如下:

  1. 请确保8已编译成功libscann_cc.so。
  2. 安装CMake。
    yum install cmake
  3. 安装相关依赖。
    yum install numactl numactl-devel hdf5 hdf5-devel gtest-devel gcc-toolset-12-libstdc++-static
  4. 安装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
    
  5. 安装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
  6. 安装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
  7. 安装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
  8. 编译可执行文件。
    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指令版本的可执行文件。
  9. 运行测试脚本。
    1
    sh test_cpp.sh 
    

    运行结果如下: