Скомпилируйте и запустите графический процессор C++ FAISS в FasterTransformer

Я хотел бы написать код графического процессора FAISS C++ в GPU FasterTransformer C++.

  1. https://github.com/facebookresearch/faiss
  2. https://github.com/NVIDIA/FasterTransformer

Я сделал это в файле sample/cpp/CMakeLists.txt:

      add_subdirectory(<FaissPath>/faiss faiss)
add_subdirectory(<FaissPath>/swig swigfaiss)
target_link_libraries(decoding_beamsearch_sample PUBLIC -lcublas -lcublasLt -lcudart -lgflags faiss swigfaiss decoder decoding)
link_directories(/usr/local/lib/)

В файле fasttransformer/decoding_beamsearch.h я написал:

      #include "fastertransformer/utils/common.h"
#include "fastertransformer/utils/functions.h"
#include "fastertransformer/utils/allocator.h"
#include "fastertransformer/open_decoder.h"
#include "fastertransformer/cuda/cuda_kernels.h"
#include "fastertransformer/utils/arguments.h"
#include <cuda_runtime.h>
   
#include <sys/time.h>

#include <faiss/gpu/GpuIndexIVFPQ.h>
#include <faiss/gpu/StandardGpuResources.h>
#include <faiss/gpu/GpuCloner.h>
#include <faiss/utils/random.h> 
#include <faiss/gpu/utils/DeviceUtils.h>
#include <faiss/gpu/utils/Timer.h> 

#include <faiss/gpu/GpuAutoTune.h>
#include <faiss/index_io.h>

Я пишу следующее в одной из функций:

      faiss::gpu::StandardGpuResources res;

Это моя команда CMake для FasterTransformer:

      cmake -B build . -DSM=70 -DCMAKE_BUILD_TYPE=Release -DBUILD_PYT=ON -DFAISS_ENABLE_GPU=ON -DCUDAToolkit_ROOT=/usr/local/cuda/ -DCMAKE_CUDA_ARCHITECTURES="70" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DFAISS_OPT_LEVEL=avx2 -DBUILD_TESTING=ON

Я вижу это предупреждение :

      CMake Warning at fastertransformer/th_op/CMakeLists.txt:41 (add_library):
Cannot generate a safe runtime search path for target pyt_fastertransformer
because there is a cycle in the constraint graph:
dir 0 is [/usr/local/cuda/lib64] dir 3 must precede it due to runtime
library [libnvToolsExt.so.1] dir 1 is [/usr/local/mpi/lib] dir 2 is
[/opt/conda/lib/python3.8/site-packages/torch/lib] dir 3 is
[/opt/conda/lib] dir 0 must precede it due to runtime library
[libcufft.so.10] Some of these libraries may not be found correctly.
-- Generating done
-- Build files have been written to: FasterTransformer/build

При make -j код строится нормально. Когда я запускаю, я вижу эту ошибку:

OSError:/FasterTransformer/FasterTransformer/build/lib/libpyt_fastertransformer.so: неопределенный символ: _ZN5faiss3gpu20StandardGpuResourcesD1Ev

Пожалуйста, поделитесь, если вы знаете что-то об этом предупреждении/ошибке связывания от Faiss к FT.

0 ответов

Другие вопросы по тегам