101 lines
2.9 KiB
Makefile
101 lines
2.9 KiB
Makefile
# Copyright (c) 2015-present, Facebook, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the BSD+Patents license found in the
|
|
# LICENSE file in the root directory of this source tree.
|
|
|
|
-include ../makefile.inc
|
|
|
|
all: libgpufaiss.a libgpufaiss.$(SHAREDEXT)
|
|
|
|
CPPOBJ = GpuResources.o \
|
|
IndexProxy.o \
|
|
StandardGpuResources.o \
|
|
GpuAutoTune.o \
|
|
GpuClonerOptions.o \
|
|
impl/RemapIndices.o \
|
|
utils/DeviceMemory.o \
|
|
utils/StackDeviceMemory.o \
|
|
utils/DeviceUtils.o \
|
|
utils/Timer.o \
|
|
utils/MemorySpace.o \
|
|
utils/WorkerThread.o
|
|
|
|
|
|
INS = 1 32 64 128 256 F512 T512 F1024 T1024
|
|
|
|
CUOBJ = impl/BinaryDistance.o \
|
|
impl/BinaryFlatIndex.o \
|
|
impl/BroadcastSum.o \
|
|
impl/Distance.o \
|
|
impl/FlatIndex.o \
|
|
impl/InvertedListAppend.o \
|
|
impl/IVFBase.o \
|
|
impl/IVFFlat.o \
|
|
impl/IVFFlatScan.o \
|
|
impl/IVFPQ.o \
|
|
impl/IVFUtils.o \
|
|
impl/IVFUtilsSelect1.o \
|
|
impl/IVFUtilsSelect2.o \
|
|
impl/L2Norm.o \
|
|
impl/L2Select.o \
|
|
impl/PQCodeDistances.o \
|
|
impl/PQScanMultiPassNoPrecomputed.o \
|
|
impl/PQScanMultiPassPrecomputed.o \
|
|
impl/VectorResidual.o \
|
|
GpuDistance.o \
|
|
GpuIndex.o \
|
|
GpuIndexBinaryFlat.o \
|
|
GpuIndexFlat.o \
|
|
GpuIndexIVF.o \
|
|
GpuIndexIVFFlat.o \
|
|
GpuIndexIVFPQ.o \
|
|
utils/Float16.o \
|
|
utils/MatrixMult.o \
|
|
utils/BlockSelectFloat.o \
|
|
utils/BlockSelectHalf.o \
|
|
utils/WarpSelectFloat.o \
|
|
utils/WarpSelectHalf.o \
|
|
utils/nvidia/fp16_emu.o \
|
|
$(foreach v,$(INS), \
|
|
utils/blockselect/BlockSelectHalf$(v).o \
|
|
utils/blockselect/BlockSelectFloat$(v).o \
|
|
utils/warpselect/WarpSelectHalf$(v).o \
|
|
utils/warpselect/WarpSelectFloat$(v).o \
|
|
)
|
|
|
|
%.o: %.cpp
|
|
$(CXX) $(CXXFLAGS) $(CPUFLAGS) -c $< -o $@ $(CUDACFLAGS)
|
|
|
|
%.o: %.cu
|
|
$(NVCC) $(NVCCFLAGS) -g -O3 -c $< -o $@
|
|
|
|
libgpufaiss.a: $(CPPOBJ) $(CUOBJ)
|
|
ar r $@ $^
|
|
|
|
libgpufaiss.$(SHAREDEXT): $(CPPOBJ) $(CUOBJ)
|
|
$(CXX) $(SHAREDFLAGS) $(LDFLAGS) $(NVCCLDFLAGS) \
|
|
-o libgpufaiss.$(SHAREDEXT) $^ $(LIBS) $(NVCCLIBS)
|
|
|
|
clean:
|
|
rm -rf *.o impl/*.o utils/*.o libgpufaiss.a \
|
|
libgpufaiss.$(SHAREDEXT) \
|
|
|
|
-include depend
|
|
|
|
depend:
|
|
for i in $(patsubst %.o,%.cpp,$(CPPOBJ)) \
|
|
$(patsubst %.o,%.cu,$(CUOBJ)); do \
|
|
$(CXXCPP) $(CPPFLAGS) -x c++ -MM $$i; \
|
|
done > depend
|
|
|
|
install: libgpufaiss.a libgpufaiss.$(SHAREDEXT) installdirs
|
|
cp libgpufaiss.a libgpufaiss.$(SHAREDEXT) $(DESTDIR)$(libdir)
|
|
cp *.h $(DESTDIR)$(includedir)/faiss/gpu
|
|
cp --parents **/**.h $(DESTDIR)$(includedir)/faiss/gpu
|
|
|
|
installdirs:
|
|
$(MKDIR_P) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)/faiss/gpu
|
|
|
|
.PHONY: all clean
|