Скомпилируйте и запустите графический процессор C++ FAISS в FasterTransformer
Я хотел бы написать код графического процессора FAISS C++ в GPU FasterTransformer C++.
Я сделал это в файле 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.