Commit cf18101f authored by Lucas Hosseini's avatar Lucas Hosseini Committed by Matthijs Douze

Refactor makefiles and add configure script (#466)

* Refactors Makefiles and add configure script.

* Give MKL higher priority in configure script.

* Clean up Linux example makefile.inc.

* Cleanup makefile.inc examples.

* Fix python clean Makefile target.

* Regen swig wrappers.

* Remove useless CUDAFLAGS variable.

* Fix python linking flags.

* Separate compile and link phase in python makefile.

* Add macro to look for swig.

* Add CUDA check in configure script.

* Cleanup make depend targets.

* Cleanup CUDA flags.

* Fix linking flags.

* Fix python GPU linking.

* Remove useless flags from python gpu module linking.

* Add check for cuda libs.

* Cleanup GPU targets.

* Clean up test target.

* Add cpu/gpu targets to python makefile.

* Clean up tutorial Makefile.

* Remove stale OS var from example makefiles.

* Clean up cuda example flags.
parent dcd83f95
/bin/
/c_api/bin/
/c_api/gpu/bin/
/makefile.inc
/tests/demo_ivfpq_indexing
*.swp
*.swo
*.o
*.a
*.dSYM
*.so
*.dylib
*.pyc
*~
/config.*
/aclocal.m4
/autom4te.cache/
/makefile.inc
/bin/
/c_api/bin/
/c_api/gpu/bin/
/tests/test
/tests/gtest/
......@@ -56,7 +56,7 @@
#define FAISS_THROW_MSG(MSG) \
do { \
throw FaissException(MSG, __PRETTY_FUNCTION__, __FILE__, __LINE__); \
throw faiss::FaissException(MSG, __PRETTY_FUNCTION__, __FILE__, __LINE__); \
} while (false)
#define FAISS_THROW_FMT(FMT, ...) \
......@@ -65,7 +65,7 @@
int __size = snprintf(nullptr, 0, FMT, __VA_ARGS__); \
__s.resize(__size + 1); \
snprintf(&__s[0], __s.size(), FMT, __VA_ARGS__); \
throw FaissException(__s, __PRETTY_FUNCTION__, __FILE__, __LINE__); \
throw faiss::FaissException(__s, __PRETTY_FUNCTION__, __FILE__, __LINE__); \
} while (false)
///
......
[//]: # "**********************************************************"
[//]: # "** INSTALL file for Faiss (Fair AI Similarity Search **"
[//]: # "**********************************************************"
......@@ -76,6 +75,9 @@ dynamic libraries (useful for the Python wrapper).
Step 1: Compiling the C++ Faiss
===============================
TL;DR: `./configure && make && make install`
The CPU version of Faiss is written in C++11.
BLAS/Lapack
......@@ -90,18 +92,20 @@ thus does not need an include path.
There are several BLAS implementations, depending on the OS and
machine. To have reasonable performance, the BLAS library should be
multithreaded. See the example makefile.inc's for hints and examples
on how to set the flags.
on how to set the flags, or simply run the configure script:
`./configure`
To check that the link flags are correct, and verify whether the
implementation uses 32 or 64 bit integers, you can
`make tests/test_blas`
`make misc/test_blas`
and run
`./tests/test_blas`
`./misc/test_blas`
Testing Faiss
Building faiss
-------------
Once the proper BLAS flags are set, the library should compile
......@@ -109,6 +113,13 @@ smoothly by running
`make`
Then, in order to install the library and the headers, run
`make install`
Testing Faiss
-------------
A basic usage example is in
`demos/demo_ivfpq_indexing`
......@@ -117,6 +128,11 @@ it makes a small index, stores it and performs some searches. A normal
runtime is around 20s. With a fast machine and Intel MKL's BLAS it
runs in 2.5s.
To run the whole test suite:
`make test`
A real-life benchmark
---------------------
......@@ -128,11 +144,11 @@ http://corpus-texmex.irisa.fr/
and unzip it to the subdirectory `sift1M` at the root of the source
directory for this repository.
Then compile and run
Then compile and run the following (after ensuring you have installed faiss):
```
make demos/demo_sift1M
demos/demo_sift1M
make demos
./demos/demo_sift1M
```
This is a demonstration of the high-level auto-tuning API. You can try
......@@ -155,10 +171,10 @@ How it works
------------
The Python interface is provided via SWIG (Simple Wrapper and
Interface Generator) and an additional level of manual wrappers (in faiss.py).
Interface Generator) and an additional level of manual wrappers (in python/faiss.py).
SWIG generates two wrapper files: a Python file (`swigfaiss.py`) and a
C++ file that must be compiled to a dynamic library (`_swigfaiss.so`). These
SWIG generates two wrapper files: a Python file (`python/swigfaiss.py`) and a
C++ file that must be compiled to a dynamic library (`python/_swigfaiss.so`). These
files are included in the repository, so running swig is only required when
the C++ headers of Faiss are changed.
......@@ -253,7 +269,7 @@ Testing the GPU implementation
Compile the example with
`cd gpu; make test/demo_ivfpq_indexing_gpu`
`cd gpu; make tests/demo_ivfpq_indexing_gpu`
This produce the GPU code equivalent to the CPU
demo_ivfpq_indexing. It also shows how to translate indexed from/to
......@@ -265,7 +281,7 @@ Compiling the Python interface with GPU support
Given step 2, adding support of the GPU from Python is quite
straightforward. Run
`cd gpu; make py`
`cd python; make _swigfaiss_gpu.so`
The import is the same for the GPU version and the CPU-only
version.
......
......@@ -4,184 +4,88 @@
# This source code is licensed under the BSD+Patents license found in the
# LICENSE file in the root directory of this source tree.
.SUFFIXES: .c .cpp .o
-include makefile.inc
SRC=$(wildcard *.cpp)
OBJ=$(SRC:.cpp=.o)
MAKEFILE_INC=makefile.inc
-include $(MAKEFILE_INC)
############################
# Building
PREFIX ?= /usr/local/
default: libfaiss.a
all: .env_ok libfaiss.a demos/demo_ivfpq_indexing
all: libfaiss.a libfaiss.$(SHAREDEXT)
py: _swigfaiss.so
libfaiss.a: $(OBJ)
ar r $@ $^
libfaiss.$(SHAREDEXT): $(OBJ)
$(CXX) $(SHAREDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CPUFLAGS) -c $< -o $@
#############################
# Various
clean:
rm -f libfaiss.*
rm -f $(OBJ)
LIBOBJ=hamming.o utils.o \
IndexFlat.o IndexIVF.o IndexLSH.o IndexPQ.o \
IndexIVFPQ.o \
Clustering.o Heap.o VectorTransform.o index_io.o \
PolysemousTraining.o MetaIndexes.o Index.o \
ProductQuantizer.o AutoTune.o AuxIndexStructures.o \
IndexScalarQuantizer.o FaissException.o IndexHNSW.o \
IndexIVFFlat.o OnDiskInvertedLists.o
############################
# Installing
libfaiss.a: $(LIBOBJ)
ar r libfaiss.a $^
install: libfaiss.a libfaiss.$(SHAREDEXT) installdirs
cp libfaiss.a libfaiss.$(SHAREDEXT) $(DESTDIR)$(libdir)
cp *.h $(DESTDIR)$(includedir)/faiss/
libfaiss.$(SHAREDEXT): $(LIBOBJ)
$(CXX) $(LDFLAGS) $(FAISSSHAREDFLAGS) -o libfaiss.$(SHAREDEXT) $^ $(BLASLDFLAGS)
installdirs:
$(MKDIR_P) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)/faiss
.cpp.o:
$(CXX) $(CXXFLAGS) -c $< -o $@ $(FLAGS) $(EXTRAFLAGS)
uninstall:
rm $(DESTDIR)$(libdir)/libfaiss.a
rm $(DESTDIR)$(libdir)/libfaiss.$(SHAREDEXT)
rm -rf $(DESTDIR)$(includedir)/faiss
.c.o:
$(CC) $(CFLAGS) -c $< -o $@ $(FLAGS) $(EXTRAFLAGS)
utils.o: EXTRAFLAGS=$(BLASCFLAGS)
VectorTransform.o: EXTRAFLAGS=$(BLASCFLAGS)
ProductQuantizer.o: EXTRAFLAGS=$(BLASCFLAGS)
IndexHNSW.o: EXTRAFLAGS=$(BLASCFLAGS)
#############################
# Dependencies
# for MKL, the flags when generating a dynamic lib are different from
# the ones when making an executable, but by default they are the same
-include depend
BLASLDFLAGSSO ?= $(BLASLDFLAGS)
# The above makefile.dep is generated by the following target:
depend:
for i in $(SRC); do \
$(CXXCPP) $(CPPFLAGS) -MM $$i; \
done > depend
#############################
# pure C++ test in the test directory
tests/test_blas: tests/test_blas.cpp
$(CXX) $(CXXFLAGS) $< -o $@ $(LDFLAGS) $(BLASLDFLAGS) $(BLASCFLAGS)
# Tests
demos/demo_ivfpq_indexing: demos/demo_ivfpq_indexing.cpp libfaiss.a
$(CXX) -o $@ $(CXXFLAGS) $< libfaiss.a $(LDFLAGS) $(BLASLDFLAGS)
demos/demo_sift1M: demos/demo_sift1M.cpp libfaiss.a
$(CXX) -o $@ $(CXXFLAGS) $< libfaiss.a $(LDFLAGS) $(BLASLDFLAGS)
test: libfaiss.a
make -C tests run
#############################
# SWIG interfaces
HFILES = IndexFlat.h Index.h IndexLSH.h IndexPQ.h IndexIVF.h \
IndexIVFPQ.h VectorTransform.h index_io.h utils.h \
PolysemousTraining.h Heap.h MetaIndexes.h AuxIndexStructures.h \
Clustering.h hamming.h AutoTune.h IndexScalarQuantizer.h FaissException.h
# Demos
# also silently generates python/swigfaiss.py
python/swigfaiss_wrap.cxx: swigfaiss.swig $(HFILES)
$(SWIGEXEC) -python -c++ -Doverride= -o $@ $<
demos: libfaiss.a
make -C demos
# extension is .so even on the mac
python/_swigfaiss.so: python/swigfaiss_wrap.cxx libfaiss.a
$(CXX) -I. $(CXXFLAGS) $(LDFLAGS) $(PYTHONCFLAGS) $(SHAREDFLAGS) \
-o $@ $^ $(BLASLDFLAGSSO)
#############################
# Misc
_swigfaiss.so: python/_swigfaiss.so
cp python/_swigfaiss.so python/swigfaiss.py .
misc/test_blas: misc/test_blas.cpp
$(CXX) $(CXXFLAG) $(LDFLAGS) $(LIBS) -o $@ $^
#############################
# Dependencies.
# make dep > x
# then copy/paste from x by hand below
dep:
for i in $(patsubst %.o,%.cpp,$(LIBOBJ)) ; do \
cpp -MM -std=gnu++0x $$i ; \
done
hamming.o: hamming.cpp hamming.h Heap.h FaissAssert.h FaissException.h
utils.o: utils.cpp utils.h Heap.h AuxIndexStructures.h Index.h \
FaissAssert.h FaissException.h
IndexFlat.o: IndexFlat.cpp IndexFlat.h Index.h utils.h Heap.h \
FaissAssert.h FaissException.h AuxIndexStructures.h
IndexIVF.o: IndexIVF.cpp IndexIVF.h Index.h Clustering.h Heap.h utils.h \
hamming.h FaissAssert.h FaissException.h IndexFlat.h \
AuxIndexStructures.h
IndexLSH.o: IndexLSH.cpp IndexLSH.h Index.h VectorTransform.h utils.h \
Heap.h hamming.h FaissAssert.h FaissException.h
IndexPQ.o: IndexPQ.cpp IndexPQ.h Index.h ProductQuantizer.h Clustering.h \
Heap.h PolysemousTraining.h FaissAssert.h FaissException.h hamming.h
IndexIVFPQ.o: IndexIVFPQ.cpp IndexIVFPQ.h IndexIVF.h Index.h Clustering.h \
Heap.h IndexPQ.h ProductQuantizer.h PolysemousTraining.h utils.h \
IndexFlat.h hamming.h FaissAssert.h FaissException.h \
AuxIndexStructures.h
Clustering.o: Clustering.cpp Clustering.h Index.h utils.h Heap.h \
FaissAssert.h FaissException.h IndexFlat.h
Heap.o: Heap.cpp Heap.h
VectorTransform.o: VectorTransform.cpp VectorTransform.h Index.h utils.h \
Heap.h FaissAssert.h FaissException.h IndexPQ.h ProductQuantizer.h \
Clustering.h PolysemousTraining.h
index_io.o: index_io.cpp index_io.h FaissAssert.h FaissException.h \
IndexFlat.h Index.h VectorTransform.h IndexLSH.h IndexPQ.h \
ProductQuantizer.h Clustering.h Heap.h PolysemousTraining.h IndexIVF.h \
IndexIVFPQ.h IndexIVFFlat.h MetaIndexes.h IndexScalarQuantizer.h \
IndexHNSW.h utils.h OnDiskInvertedLists.h
PolysemousTraining.o: PolysemousTraining.cpp PolysemousTraining.h \
ProductQuantizer.h Clustering.h Index.h Heap.h utils.h hamming.h \
FaissAssert.h FaissException.h
MetaIndexes.o: MetaIndexes.cpp MetaIndexes.h Index.h FaissAssert.h \
FaissException.h Heap.h AuxIndexStructures.h
Index.o: Index.cpp IndexFlat.h Index.h FaissAssert.h FaissException.h
ProductQuantizer.o: ProductQuantizer.cpp ProductQuantizer.h Clustering.h \
Index.h Heap.h FaissAssert.h FaissException.h VectorTransform.h \
IndexFlat.h utils.h
AutoTune.o: AutoTune.cpp AutoTune.h Index.h FaissAssert.h \
FaissException.h utils.h Heap.h IndexFlat.h VectorTransform.h IndexLSH.h \
IndexPQ.h ProductQuantizer.h Clustering.h PolysemousTraining.h \
IndexIVF.h IndexIVFPQ.h IndexIVFFlat.h MetaIndexes.h \
IndexScalarQuantizer.h IndexHNSW.h
AuxIndexStructures.o: AuxIndexStructures.cpp AuxIndexStructures.h Index.h
IndexScalarQuantizer.o: IndexScalarQuantizer.cpp IndexScalarQuantizer.h \
IndexIVF.h Index.h Clustering.h Heap.h utils.h FaissAssert.h \
FaissException.h
FaissException.o: FaissException.cpp FaissException.h
IndexHNSW.o: IndexHNSW.cpp IndexHNSW.h IndexFlat.h Index.h IndexPQ.h \
ProductQuantizer.h Clustering.h Heap.h PolysemousTraining.h \
IndexScalarQuantizer.h IndexIVF.h utils.h FaissAssert.h FaissException.h \
IndexIVFPQ.h
IndexIVFFlat.o: IndexIVFFlat.cpp IndexIVFFlat.h IndexIVF.h Index.h \
Clustering.h Heap.h utils.h FaissAssert.h FaissException.h IndexFlat.h \
AuxIndexStructures.h
OnDiskInvertedLists.o: OnDiskInvertedLists.cpp OnDiskInvertedLists.h \
IndexIVF.h Index.h Clustering.h Heap.h FaissAssert.h FaissException.h
# Python
installdirs:
mkdir -p $(DESTDIR)$(PREFIX)/lib $(DESTDIR)$(PREFIX)/include/faiss
py: python/_swigfaiss.so
install: libfaiss.a libfaiss.$(SHAREDEXT) installdirs
cp libfaiss.a libfaiss.$(SHAREDEXT) $(DESTDIR)$(PREFIX)/lib/
cp ./*.h $(DESTDIR)$(PREFIX)/include/faiss/
python/_swigfaiss.so: libfaiss.a
$(MAKE) -C python _swigfaiss.so
uninstall:
rm $(DESTDIR)$(PREFIX)/lib/libfaiss.*
rm -rf $(DESTDIR)$(PREFIX)/include/faiss
clean:
rm -f libfaiss.a libfaiss.$(SHAREDEXT)* *.o \
lua/swigfaiss.so lua/swigfaiss_wrap.cxx \
python/_swigfaiss.so python/swigfaiss_wrap.cxx \
python/swigfaiss.py _swigfaiss.so swigfaiss.py
.env_ok:
ifeq ($(wildcard $(MAKEFILE_INC)),)
$(error Cannot find $(MAKEFILE_INC). Did you forget to copy the relevant file from ./example_makefiles?)
endif
ifeq ($(shell command -v $(CXX) 2>/dev/null),)
$(error Cannot find $(CXX), please refer to $(CURDIR)/makefile.inc to set up your environment)
endif
.swig_ok: .env_ok
ifeq ($(shell command -v $(SWIGEXEC) 2>/dev/null),)
$(error Cannot find $(SWIGEXEC), please refer to $(CURDIR)/makefile.inc to set up your environment)
endif
.PHONY: all clean default demos install installdirs py test uninstall
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_blas.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_BLAS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
#
# DESCRIPTION
#
# This macro looks for a library that implements the BLAS linear-algebra
# interface (see http://www.netlib.org/blas/). On success, it sets the
# BLAS_LIBS output variable to hold the requisite library linkages.
#
# To link with BLAS, you should link with:
#
# $BLAS_LIBS $LIBS $FLIBS
#
# in that order. FLIBS is the output variable of the
# AC_F77_LIBRARY_LDFLAGS macro (called if necessary by AX_BLAS), and is
# sometimes necessary in order to link with F77 libraries. Users will also
# need to use AC_F77_DUMMY_MAIN (see the autoconf manual), for the same
# reason.
#
# Many libraries are searched for, from ATLAS to CXML to ESSL. The user
# may also use --with-blas=<lib> in order to use some specific BLAS
# library <lib>. In order to link successfully, however, be aware that you
# will probably need to use the same Fortran compiler (which can be set
# via the F77 env. var.) as was used to compile the BLAS library.
#
# ACTION-IF-FOUND is a list of shell commands to run if a BLAS library is
# found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is
# not found. If ACTION-IF-FOUND is not specified, the default action will
# define HAVE_BLAS.
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 15
AU_ALIAS([ACX_BLAS], [AX_BLAS])
AC_DEFUN([AX_BLAS], [
AC_PREREQ(2.50)
# AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
AC_REQUIRE([AC_CANONICAL_HOST])
ax_blas_ok=no
AC_ARG_WITH(blas,
[AS_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])])
case $with_blas in
yes | "") ;;
no) ax_blas_ok=disable ;;
-* | */* | *.a | *.so | *.so.* | *.o) BLAS_LIBS="$with_blas" ;;
*) BLAS_LIBS="-l$with_blas" ;;
esac
# Get fortran linker names of BLAS functions to check for.
# AC_F77_FUNC(sgemm)
# AC_F77_FUNC(dgemm)
sgemm=sgemm_
dgemm=dgemm_
ax_blas_save_LIBS="$LIBS"
LIBS="$LIBS $FLIBS"
# First, check BLAS_LIBS environment variable
if test $ax_blas_ok = no; then
if test "x$BLAS_LIBS" != x; then
save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS])
AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes], [BLAS_LIBS=""])
AC_MSG_RESULT($ax_blas_ok)
LIBS="$save_LIBS"
fi
fi
# BLAS linked to by default? (happens on some supercomputers)
if test $ax_blas_ok = no; then
save_LIBS="$LIBS"; LIBS="$LIBS"
AC_MSG_CHECKING([if $sgemm is being linked in already])
AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes])
AC_MSG_RESULT($ax_blas_ok)
LIBS="$save_LIBS"
fi
# BLAS in Intel MKL library?
if test $ax_blas_ok = no; then
# MKL for gfortran
if test x"$ac_cv_fc_compiler_gnu" = xyes; then
# 64 bit
if test $host_cpu = x86_64; then
AC_CHECK_LIB(mkl_gf_lp64, $sgemm,
[ax_blas_ok=yes;BLAS_LIBS="-lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread"],,
[-lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread])
# 32 bit
elif test $host_cpu = i686; then
AC_CHECK_LIB(mkl_gf, $sgemm,
[ax_blas_ok=yes;BLAS_LIBS="-lmkl_gf -lmkl_sequential -lmkl_core -lpthread"],,
[-lmkl_gf -lmkl_sequential -lmkl_core -lpthread])
fi
# MKL for other compilers (Intel, PGI, ...?)
else
# 64-bit
if test $host_cpu = x86_64; then
AC_CHECK_LIB(mkl_intel_lp64, $sgemm,
[ax_blas_ok=yes;BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread"],,
[-lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread])
# 32-bit
elif test $host_cpu = i686; then
AC_CHECK_LIB(mkl_intel, $sgemm,
[ax_blas_ok=yes;BLAS_LIBS="-lmkl_intel -lmkl_sequential -lmkl_core -lpthread"],,
[-lmkl_intel -lmkl_sequential -lmkl_core -lpthread])
fi
fi
fi
# Old versions of MKL
if test $ax_blas_ok = no; then
AC_CHECK_LIB(mkl, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-lmkl -lguide -lpthread"],,[-lguide -lpthread])
fi
# BLAS in OpenBLAS library? (http://xianyi.github.com/OpenBLAS/)
if test $ax_blas_ok = no; then
AC_CHECK_LIB(openblas, $sgemm, [ax_blas_ok=yes
BLAS_LIBS="-lopenblas"])
fi
# BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
if test $ax_blas_ok = no; then
AC_CHECK_LIB(atlas, ATL_xerbla,
[AC_CHECK_LIB(f77blas, $sgemm,
[AC_CHECK_LIB(cblas, cblas_dgemm,
[ax_blas_ok=yes
BLAS_LIBS="-lcblas -lf77blas -latlas"],
[], [-lf77blas -latlas])],
[], [-latlas])])
fi
# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
if test $ax_blas_ok = no; then
AC_CHECK_LIB(blas, $sgemm,
[AC_CHECK_LIB(dgemm, $dgemm,
[AC_CHECK_LIB(sgemm, $sgemm,
[ax_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"],
[], [-lblas])],
[], [-lblas])])
fi
# BLAS in Apple vecLib library?
if test $ax_blas_ok = no; then
save_LIBS="$LIBS"; LIBS="-framework vecLib $LIBS"
AC_MSG_CHECKING([for $sgemm in -framework vecLib])
AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes;BLAS_LIBS="-framework vecLib"])
AC_MSG_RESULT($ax_blas_ok)
LIBS="$save_LIBS"
fi
# BLAS in Alpha CXML library?
if test $ax_blas_ok = no; then
AC_CHECK_LIB(cxml, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-lcxml"])
fi
# BLAS in Alpha DXML library? (now called CXML, see above)
if test $ax_blas_ok = no; then
AC_CHECK_LIB(dxml, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-ldxml"])
fi
# BLAS in Sun Performance library?
if test $ax_blas_ok = no; then
if test "x$GCC" != xyes; then # only works with Sun CC
AC_CHECK_LIB(sunmath, acosp,
[AC_CHECK_LIB(sunperf, $sgemm,
[BLAS_LIBS="-xlic_lib=sunperf -lsunmath"
ax_blas_ok=yes],[],[-lsunmath])])
fi
fi
# BLAS in SCSL library? (SGI/Cray Scientific Library)
if test $ax_blas_ok = no; then
AC_CHECK_LIB(scs, $sgemm, [ax_blas_ok=yes; BLAS_LIBS="-lscs"])
fi
# BLAS in SGIMATH library?
if test $ax_blas_ok = no; then
AC_CHECK_LIB(complib.sgimath, $sgemm,
[ax_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath"])
fi
# BLAS in IBM ESSL library? (requires generic BLAS lib, too)
if test $ax_blas_ok = no; then
AC_CHECK_LIB(blas, $sgemm,
[AC_CHECK_LIB(essl, $sgemm,
[ax_blas_ok=yes; BLAS_LIBS="-lessl -lblas"],
[], [-lblas $FLIBS])])
fi
# Generic BLAS library?
if test $ax_blas_ok = no; then
AC_CHECK_LIB(blas, $sgemm, [ax_blas_ok=yes; BLAS_LIBS="-lblas"])
fi
AC_SUBST(BLAS_LIBS)
LIBS="$ax_blas_save_LIBS"
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$ax_blas_ok" = xyes; then
ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1])
:
else
ax_blas_ok=no
$2
fi
])dnl AX_BLAS
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
#
# DESCRIPTION
#
# Check for baseline language coverage in the compiler for the specified
# version of the C++ standard. If necessary, add switches to CXX and
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
# or '14' (for the C++14 standard).
#
# The second argument, if specified, indicates whether you insist on an
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
# -std=c++11). If neither is specified, you get whatever works, with
# preference for an extended mode.
#
# The third argument, if specified 'mandatory' or if left unspecified,
# indicates that baseline support for the specified C++ standard is
# required and that the macro should error out if no mode with that
# support is found. If specified 'optional', then configuration proceeds
# regardless, after defining HAVE_CXX${VERSION} if and only if a
# supporting mode is found.
#
# LICENSE
#
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 9
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
dnl (serial version number 13).
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
[$1], [14], [ax_cxx_compile_alternatives="14 1y"],
[$1], [17], [ax_cxx_compile_alternatives="17 1z"],
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
m4_if([$2], [], [],
[$2], [ext], [],
[$2], [noext], [],
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
[$3], [optional], [ax_cxx_compile_cxx$1_required=false],
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
AC_LANG_PUSH([C++])dnl
ac_success=no
m4_if([$2], [noext], [], [dnl
if test x$ac_success = xno; then
for alternative in ${ax_cxx_compile_alternatives}; do
switch="-std=gnu++${alternative}"
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
$cachevar,
[ac_save_CXX="$CXX"
CXX="$CXX $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXX="$ac_save_CXX"])
if eval test x\$$cachevar = xyes; then
CXX="$CXX $switch"
if test -n "$CXXCPP" ; then
CXXCPP="$CXXCPP $switch"
fi
ac_success=yes
break
fi
done
fi])
m4_if([$2], [ext], [], [dnl
if test x$ac_success = xno; then
dnl HP's aCC needs +std=c++11 according to:
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
dnl Cray's crayCC needs "-h std=c++11"
for alternative in ${ax_cxx_compile_alternatives}; do
for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
$cachevar,
[ac_save_CXX="$CXX"
CXX="$CXX $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXX="$ac_save_CXX"])
if eval test x\$$cachevar = xyes; then
CXX="$CXX $switch"
if test -n "$CXXCPP" ; then
CXXCPP="$CXXCPP $switch"
fi
ac_success=yes
break
fi
done
if test x$ac_success = xyes; then
break
fi
done
fi])
AC_LANG_POP([C++])
if test x$ax_cxx_compile_cxx$1_required = xtrue; then
if test x$ac_success = xno; then
AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
fi
fi
if test x$ac_success = xno; then
HAVE_CXX$1=0
AC_MSG_NOTICE([No compiler with C++$1 support was found])
else
HAVE_CXX$1=1
AC_DEFINE(HAVE_CXX$1,1,
[define if the compiler supports basic C++$1 syntax])
fi
AC_SUBST(HAVE_CXX$1)
])
dnl Test body for checking C++11 support
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
)
dnl Test body for checking C++14 support
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
)
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17
)
dnl Tests for new features in C++11
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
// If the compiler admits that it is not ready for C++11, why torture it?
// Hopefully, this will speed up the test.
#ifndef __cplusplus
#error "This is not a C++ compiler"
#elif __cplusplus < 201103L
#error "This is not a C++11 compiler"
#else
namespace cxx11
{
namespace test_static_assert
{
template <typename T>
struct check
{
static_assert(sizeof(int) <= sizeof(T), "not big enough");
};
}
namespace test_final_override
{
struct Base
{
virtual void f() {}
};
struct Derived : public Base
{
virtual void f() override {}
};
}
namespace test_double_right_angle_brackets
{
template < typename T >
struct check {};
typedef check<void> single_type;
typedef check<check<void>> double_type;
typedef check<check<check<void>>> triple_type;
typedef check<check<check<check<void>>>> quadruple_type;
}
namespace test_decltype
{
int
f()
{
int a = 1;
decltype(a) b = 2;
return a + b;
}
}
namespace test_type_deduction
{
template < typename T1, typename T2 >
struct is_same
{
static const bool value = false;
};
template < typename T >
struct is_same<T, T>
{
static const bool value = true;
};
template < typename T1, typename T2 >
auto
add(T1 a1, T2 a2) -> decltype(a1 + a2)
{
return a1 + a2;
}
int
test(const int c, volatile int v)
{
static_assert(is_same<int, decltype(0)>::value == true, "");
static_assert(is_same<int, decltype(c)>::value == false, "");
static_assert(is_same<int, decltype(v)>::value == false, "");
auto ac = c;
auto av = v;
auto sumi = ac + av + 'x';
auto sumf = ac + av + 1.0;
static_assert(is_same<int, decltype(ac)>::value == true, "");
static_assert(is_same<int, decltype(av)>::value == true, "");
static_assert(is_same<int, decltype(sumi)>::value == true, "");
static_assert(is_same<int, decltype(sumf)>::value == false, "");
static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
return (sumf > 0.0) ? sumi : add(c, v);
}
}
namespace test_noexcept
{
int f() { return 0; }
int g() noexcept { return 0; }
static_assert(noexcept(f()) == false, "");
static_assert(noexcept(g()) == true, "");
}
namespace test_constexpr
{
template < typename CharT >
unsigned long constexpr
strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
{
return *s ? strlen_c_r(s + 1, acc + 1) : acc;
}
template < typename CharT >
unsigned long constexpr
strlen_c(const CharT *const s) noexcept
{
return strlen_c_r(s, 0UL);
}
static_assert(strlen_c("") == 0UL, "");
static_assert(strlen_c("1") == 1UL, "");
static_assert(strlen_c("example") == 7UL, "");
static_assert(strlen_c("another\0example") == 7UL, "");
}
namespace test_rvalue_references
{
template < int N >
struct answer
{
static constexpr int value = N;
};
answer<1> f(int&) { return answer<1>(); }
answer<2> f(const int&) { return answer<2>(); }
answer<3> f(int&&) { return answer<3>(); }
void
test()
{
int i = 0;
const int c = 0;
static_assert(decltype(f(i))::value == 1, "");
static_assert(decltype(f(c))::value == 2, "");
static_assert(decltype(f(0))::value == 3, "");
}
}
namespace test_uniform_initialization
{
struct test
{
static const int zero {};
static const int one {1};
};
static_assert(test::zero == 0, "");
static_assert(test::one == 1, "");
}
namespace test_lambdas
{
void
test1()
{
auto lambda1 = [](){};
auto lambda2 = lambda1;
lambda1();
lambda2();
}
int
test2()
{
auto a = [](int i, int j){ return i + j; }(1, 2);
auto b = []() -> int { return '0'; }();
auto c = [=](){ return a + b; }();
auto d = [&](){ return c; }();
auto e = [a, &b](int x) mutable {
const auto identity = [](int y){ return y; };
for (auto i = 0; i < a; ++i)
a += b--;
return x + identity(a + b);
}(0);
return a + b + c + d + e;
}
int
test3()
{
const auto nullary = [](){ return 0; };
const auto unary = [](int x){ return x; };
using nullary_t = decltype(nullary);
using unary_t = decltype(unary);
const auto higher1st = [](nullary_t f){ return f(); };
const auto higher2nd = [unary](nullary_t f1){
return [unary, f1](unary_t f2){ return f2(unary(f1())); };
};
return higher1st(nullary) + higher2nd(nullary)(unary);
}
}
namespace test_variadic_templates
{
template <int...>
struct sum;
template <int N0, int... N1toN>
struct sum<N0, N1toN...>
{
static constexpr auto value = N0 + sum<N1toN...>::value;
};
template <>
struct sum<>
{
static constexpr auto value = 0;
};
static_assert(sum<>::value == 0, "");
static_assert(sum<1>::value == 1, "");
static_assert(sum<23>::value == 23, "");
static_assert(sum<1, 2>::value == 3, "");
static_assert(sum<5, 5, 11>::value == 21, "");
static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
}
// http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
// Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
// because of this.
namespace test_template_alias_sfinae
{
struct foo {};
template<typename T>
using member = typename T::member_type;
template<typename T>
void func(...) {}
template<typename T>
void func(member<T>*) {}
void test();
void test() { func<foo>(0); }
}
} // namespace cxx11
#endif // __cplusplus >= 201103L
]])
dnl Tests for new features in C++14
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
// If the compiler admits that it is not ready for C++14, why torture it?
// Hopefully, this will speed up the test.
#ifndef __cplusplus
#error "This is not a C++ compiler"
#elif __cplusplus < 201402L
#error "This is not a C++14 compiler"
#else
namespace cxx14
{
namespace test_polymorphic_lambdas
{
int
test()
{
const auto lambda = [](auto&&... args){
const auto istiny = [](auto x){
return (sizeof(x) == 1UL) ? 1 : 0;
};
const int aretiny[] = { istiny(args)... };
return aretiny[0];
};
return lambda(1, 1L, 1.0f, '1');
}
}
namespace test_binary_literals
{
constexpr auto ivii = 0b0000000000101010;
static_assert(ivii == 42, "wrong value");
}
namespace test_generalized_constexpr
{
template < typename CharT >
constexpr unsigned long
strlen_c(const CharT *const s) noexcept
{
auto length = 0UL;
for (auto p = s; *p; ++p)
++length;
return length;
}
static_assert(strlen_c("") == 0UL, "");
static_assert(strlen_c("x") == 1UL, "");
static_assert(strlen_c("test") == 4UL, "");
static_assert(strlen_c("another\0test") == 7UL, "");
}
namespace test_lambda_init_capture
{
int
test()
{
auto x = 0;
const auto lambda1 = [a = x](int b){ return a + b; };
const auto lambda2 = [a = lambda1(x)](){ return a; };
return lambda2();
}
}
namespace test_digit_separators
{
constexpr auto ten_million = 100'000'000;
static_assert(ten_million == 100000000, "");
}
namespace test_return_type_deduction
{
auto f(int& x) { return x; }
decltype(auto) g(int& x) { return x; }
template < typename T1, typename T2 >
struct is_same
{
static constexpr auto value = false;
};
template < typename T >
struct is_same<T, T>
{
static constexpr auto value = true;
};
int
test()
{
auto x = 0;
static_assert(is_same<int, decltype(f(x))>::value, "");
static_assert(is_same<int&, decltype(g(x))>::value, "");
return x;
}
}
} // namespace cxx14
#endif // __cplusplus >= 201402L
]])
dnl Tests for new features in C++17
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
// If the compiler admits that it is not ready for C++17, why torture it?
// Hopefully, this will speed up the test.
#ifndef __cplusplus
#error "This is not a C++ compiler"
#elif __cplusplus <= 201402L
#error "This is not a C++17 compiler"
#else
#if defined(__clang__)
#define REALLY_CLANG
#else
#if defined(__GNUC__)
#define REALLY_GCC
#endif
#endif
#include <initializer_list>
#include <utility>
#include <type_traits>
namespace cxx17
{
#if !defined(REALLY_CLANG)
namespace test_constexpr_lambdas
{
// TODO: test it with clang++ from git
constexpr int foo = [](){return 42;}();
}
#endif // !defined(REALLY_CLANG)
namespace test::nested_namespace::definitions
{
}
namespace test_fold_expression
{
template<typename... Args>
int multiply(Args... args)
{
return (args * ... * 1);
}
template<typename... Args>
bool all(Args... args)
{
return (args && ...);
}
}
namespace test_extended_static_assert
{
static_assert (true);
}
namespace test_auto_brace_init_list
{
auto foo = {5};
auto bar {5};
static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
static_assert(std::is_same<int, decltype(bar)>::value);
}
namespace test_typename_in_template_template_parameter
{
template<template<typename> typename X> struct D;
}
namespace test_fallthrough_nodiscard_maybe_unused_attributes
{
int f1()
{
return 42;
}
[[nodiscard]] int f2()
{
[[maybe_unused]] auto unused = f1();
switch (f1())
{
case 17:
f1();
[[fallthrough]];
case 42:
f1();
}
return f1();
}
}
namespace test_extended_aggregate_initialization
{
struct base1
{
int b1, b2 = 42;
};
struct base2
{
base2() {
b3 = 42;
}
int b3;
};
struct derived : base1, base2
{
int d;
};
derived d1 {{1, 2}, {}, 4}; // full initialization
derived d2 {{}, {}, 4}; // value-initialized bases
}
namespace test_general_range_based_for_loop
{
struct iter
{
int i;
int& operator* ()
{
return i;
}
const int& operator* () const
{
return i;
}
iter& operator++()
{
++i;
return *this;
}
};
struct sentinel
{
int i;
};
bool operator== (const iter& i, const sentinel& s)
{
return i.i == s.i;
}
bool operator!= (const iter& i, const sentinel& s)
{
return !(i == s);
}
struct range
{
iter begin() const
{
return {0};
}
sentinel end() const
{
return {5};
}
};
void f()
{
range r {};
for (auto i : r)
{
[[maybe_unused]] auto v = i;
}
}
}
namespace test_lambda_capture_asterisk_this_by_value
{
struct t
{
int i;
int foo()
{
return [*this]()
{
return i;
}();
}
};
}
namespace test_enum_class_construction
{
enum class byte : unsigned char
{};
byte foo {42};
}
namespace test_constexpr_if
{
template <bool cond>
int f ()
{
if constexpr(cond)
{
return 13;
}
else
{
return 42;
}
}
}
namespace test_selection_statement_with_initializer
{
int f()
{
return 13;
}
int f2()
{
if (auto i = f(); i > 0)
{
return 3;
}
switch (auto i = f(); i + 4)
{
case 17:
return 2;
default:
return 1;
}
}
}
#if !defined(REALLY_CLANG)
namespace test_template_argument_deduction_for_class_templates
{
// TODO: test it with clang++ from git
template <typename T1, typename T2>
struct pair
{
pair (T1 p1, T2 p2)
: m1 {p1},
m2 {p2}
{}
T1 m1;
T2 m2;
};
void f()
{
[[maybe_unused]] auto p = pair{13, 42u};
}
}
#endif // !defined(REALLY_CLANG)
namespace test_non_type_auto_template_parameters
{
template <auto n>
struct B
{};
B<5> b1;
B<'a'> b2;
}
#if !defined(REALLY_CLANG)
namespace test_structured_bindings
{
// TODO: test it with clang++ from git
int arr[2] = { 1, 2 };
std::pair<int, int> pr = { 1, 2 };
auto f1() -> int(&)[2]
{
return arr;
}
auto f2() -> std::pair<int, int>&
{
return pr;
}
struct S
{
int x1 : 2;
volatile double y1;
};
S f3()
{
return {};
}
auto [ x1, y1 ] = f1();
auto& [ xr1, yr1 ] = f1();
auto [ x2, y2 ] = f2();
auto& [ xr2, yr2 ] = f2();
const auto [ x3, y3 ] = f3();
}
#endif // !defined(REALLY_CLANG)
#if !defined(REALLY_CLANG)
namespace test_exception_spec_type_system
{
// TODO: test it with clang++ from git
struct Good {};
struct Bad {};
void g1() noexcept;
void g2();
template<typename T>
Bad
f(T*, T*);
template<typename T1, typename T2>
Good
f(T1*, T2*);
static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
}
#endif // !defined(REALLY_CLANG)
namespace test_inline_variables
{
template<class T> void f(T)
{}
template<class T> inline T g(T)
{
return T{};
}
template<> inline void f<>(int)
{}
template<> int g<>(int)
{
return 5;
}
}
} // namespace cxx17
#endif // __cplusplus <= 201402L
]])
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_lapack.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LAPACK([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
#
# DESCRIPTION
#
# This macro looks for a library that implements the LAPACK linear-algebra
# interface (see http://www.netlib.org/lapack/). On success, it sets the
# LAPACK_LIBS output variable to hold the requisite library linkages.
#
# To link with LAPACK, you should link with:
#
# $LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS
#
# in that order. BLAS_LIBS is the output variable of the AX_BLAS macro,
# called automatically. FLIBS is the output variable of the
# AC_F77_LIBRARY_LDFLAGS macro (called if necessary by AX_BLAS), and is
# sometimes necessary in order to link with F77 libraries. Users will also
# need to use AC_F77_DUMMY_MAIN (see the autoconf manual), for the same
# reason.
#
# The user may also use --with-lapack=<lib> in order to use some specific
# LAPACK library <lib>. In order to link successfully, however, be aware
# that you will probably need to use the same Fortran compiler (which can
# be set via the F77 env. var.) as was used to compile the LAPACK and BLAS
# libraries.
#
# ACTION-IF-FOUND is a list of shell commands to run if a LAPACK library
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
# is not found. If ACTION-IF-FOUND is not specified, the default action
# will define HAVE_LAPACK.
#
# LICENSE
#
# Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 8
AU_ALIAS([ACX_LAPACK], [AX_LAPACK])
AC_DEFUN([AX_LAPACK], [
AC_REQUIRE([AX_BLAS])
ax_lapack_ok=no
AC_ARG_WITH(lapack,
[AS_HELP_STRING([--with-lapack=<lib>], [use LAPACK library <lib>])])
case $with_lapack in
yes | "") ;;
no) ax_lapack_ok=disable ;;
-* | */* | *.a | *.so | *.so.* | *.o) LAPACK_LIBS="$with_lapack" ;;
*) LAPACK_LIBS="-l$with_lapack" ;;
esac
# Get fortran linker name of LAPACK function to check for.
# AC_F77_FUNC(cheev)
cheev=cheev_
# We cannot use LAPACK if BLAS is not found
if test "x$ax_blas_ok" != xyes; then
ax_lapack_ok=noblas
LAPACK_LIBS=""
fi
# First, check LAPACK_LIBS environment variable
if test "x$LAPACK_LIBS" != x; then
save_LIBS="$LIBS"; LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
AC_MSG_CHECKING([for $cheev in $LAPACK_LIBS])
AC_TRY_LINK_FUNC($cheev, [ax_lapack_ok=yes], [LAPACK_LIBS=""])
AC_MSG_RESULT($ax_lapack_ok)
LIBS="$save_LIBS"
if test $ax_lapack_ok = no; then
LAPACK_LIBS=""
fi
fi
# LAPACK linked to by default? (is sometimes included in BLAS lib)
if test $ax_lapack_ok = no; then
save_LIBS="$LIBS"; LIBS="$LIBS $BLAS_LIBS $FLIBS"
AC_CHECK_FUNC($cheev, [ax_lapack_ok=yes])
LIBS="$save_LIBS"
fi
# Generic LAPACK library?
for lapack in lapack lapack_rs6k; do
if test $ax_lapack_ok = no; then
save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
AC_CHECK_LIB($lapack, $cheev,
[ax_lapack_ok=yes; LAPACK_LIBS="-l$lapack"], [], [$FLIBS])
LIBS="$save_LIBS"
fi
done
AC_SUBST(LAPACK_LIBS)
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$ax_lapack_ok" = xyes; then
ifelse([$1],,AC_DEFINE(HAVE_LAPACK,1,[Define if you have LAPACK library.]),[$1])
:
else
ax_lapack_ok=no
$2
fi
])dnl AX_LAPACK
AC_DEFUN([FA_CHECK_CUDA], [
AC_ARG_WITH(cuda,
[AS_HELP_STRING([--with-cuda=<prefix>], [prefix of the CUDA installation])])
case $with_cuda in
"") cuda_prefix=/usr/local/cuda ;;
*) cuda_prefix="$with_cuda"
esac
AC_CHECK_PROG(NVCC, "nvcc", "$cuda_prefix/bin/nvcc", "", "$cuda_prefix/bin")
fa_nvcc_bin=$NVCC
if test x$fa_nvcc_bin != x; then
fa_save_CPPFLAGS="$CPPFLAGS"
fa_save_LDFLAGS="$LDFLAGS"
fa_save_LIBS="$LIBS"
NVCC_CPPFLAGS="-I$cuda_prefix/include"
NVCC_LDFLAGS="-L$cuda_prefix/lib64"
CPPFLAGS="$NVCC_CPPFLAGS $CPPFLAGS"
LDFLAGS="$NVCC_LDFLAGS $LDFLAGS"
AC_CHECK_HEADER([cuda.h], [], AC_MSG_FAILURE([Couldn't find cuda.h]))
AC_CHECK_LIB([cuda], [cuInit], [], AC_MSG_FAILURE([Couldn't find libcuda]))
AC_CHECK_LIB([cublas], [cublasAlloc], [], AC_MSG_FAILURE([Couldn't find libcublas]))
AC_CHECK_LIB([cudart], [cudaSetDevice], [], AC_MSG_FAILURE([Couldn't find libcudart]))
NVCC_LIBS="$LIBS"
NVCC_CPPFLAGS="$CPPFLAGS"
NVCC_LDFLAGS="$LDFLAGS"
CPPFLAGS="$fa_save_CPPFLAGS"
LDFLAGS="$fa_save_LDFLAGS"
LIBS="$fa_save_LIBS"
else
cuda_prefix=""
fi
AC_SUBST(NVCC)
AC_SUBST(NVCC_CPPFLAGS)
AC_SUBST(NVCC_LDFLAGS)
AC_SUBST(NVCC_LIBS)
AC_SUBST(CUDA_PREFIX, $cuda_prefix)
])
AC_DEFUN([FA_NUMPY], [
AC_REQUIRE([FA_PYTHON])
AC_MSG_CHECKING([for numpy headers path])
fa_numpy_headers=`$PYTHON -c "import numpy; print(numpy.get_include())"`
if test $? == 0; then
if test x$fa_numpy_headers != x; then
AC_MSG_RESULT($fa_numpy_headers)
AC_SUBST(NUMPY_INCLUDE, $fa_numpy_headers)
else
AC_MSG_RESULT([not found])
AC_MSG_WARN([You won't be able to build the python interface.])
fi
else
AC_MSG_RESULT([not found])
AC_MSG_WARN([You won't be able to build the python interface.])
fi
])dnl
dnl
dnl Check for an nm(1) utility.
dnl
AC_DEFUN([FA_PROG_NM],
[
case "${NM-unset}" in
unset) AC_CHECK_PROGS(NM, nm, nm) ;;
*) AC_CHECK_PROGS(NM, $NM nm, nm) ;;
esac
AC_MSG_CHECKING(nm flags)
case "${NMFLAGS-unset}" in
unset) NMFLAGS= ;;
esac
AC_MSG_RESULT($NMFLAGS)
AC_SUBST(NMFLAGS)
])
AC_DEFUN([FA_PROG_SWIG], [
AC_ARG_WITH(swig,
[AS_HELP_STRING([--with-swig=<bin>], [use SWIG binary <bin>])])
case $with_swig in
"") SWIG_BIN=swig ;;
*) SWIG_BIN="$with_swig"
esac
AC_CHECK_PROG(SWIG, $SWIG_BIN, $SWIG_BIN)
AC_SUBST(SWIG)
])
AC_DEFUN([FA_PYTHON], [
AC_ARG_WITH(python,
[AS_HELP_STRING([--with-python=<bin>], [use Python binary <bin>])])
case $with_python in
"") PYTHON_BIN=python ;;
*) PYTHON_BIN="$with_python"
esac
AC_CHECK_PROG(PYTHON, $PYTHON_BIN, $PYTHON_BIN)
fa_python_bin=$PYTHON
AC_ARG_WITH(python-config,
[AS_HELP_STRING([--with-python-config=<bin>], [use Python config binary <bin>])])
case $with_python_config in
"") PYTHON_CFG_BIN="${PYTHON_BIN}-config" ;;
*) PYTHON_CFG_BIN="$with_python_config"
esac
AC_CHECK_PROG(PYTHON_CFG, $PYTHON_CFG_BIN, $PYTHON_CFG_BIN)
fa_python_cfg_bin=$PYTHON_CFG
if test x$fa_python_cfg_bin != x; then
AC_MSG_CHECKING([for Python C flags])
fa_python_cflags=`${PYTHON_CFG} --includes`
if test x"$fa_python_cflags" == x; then
AC_MSG_RESULT([not found])
AC_MSG_WARN([You won't be able to build the python interface.])
else
AC_MSG_RESULT($fa_python_cflags)
AC_SUBST(PYTHON_CFLAGS, $fa_python_cflags)
fi
AC_MSG_CHECKING([for Python ld flags])
fa_python_ldflags=`${PYTHON_CFG} --ldflags`
if test x"$fa_python_ldflags" == x; then
AC_MSG_RESULT([not found])
else
AC_MSG_RESULT($fa_python_ldflags)
AC_SUBST(PYTHON_LDFLAGS, $fa_python_ldflags)
fi
else
AC_MSG_WARN([You won't be able to build the python interface.])
fi
])
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright 1992-2017 Free Software Foundation, Inc.
timestamp='2017-05-27'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
# Please send patches to <config-patches@gnu.org>.
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
Output the configuration name of the system \`$me' is run on.
Operation modes:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright 1992-2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
echo "$me: invalid option $1$help" >&2
exit 1 ;;
* )
break ;;
esac
done
if test $# != 0; then
echo "$me: too many arguments$help" >&2
exit 1
fi
trap 'exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
,,) echo "int x;" > $dummy.c ;
for c in cc gcc c89 c99 ; do
if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
esac ; set_cc_for_build= ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
PATH=$PATH:/.attbin ; export PATH
fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_SYSTEM}" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
eval $set_cc_for_build
cat <<-EOF > $dummy.c
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
#else
LIBC=gnu
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
;;
esac
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
# compatibility and a consistent mechanism for selecting the
# object file format.
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
/sbin/$sysctl 2>/dev/null || \
/usr/sbin/$sysctl 2>/dev/null || \
echo unknown)`
case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
machine=${arch}${endian}-unknown
;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
case "${UNAME_MACHINE_ARCH}" in
earm*)
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
os=netbsd
else
os=netbsdelf
fi
;;
*)
os=netbsd
;;
esac
# Determine ABI tags.
case "${UNAME_MACHINE_ARCH}" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
;;
esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
case "${UNAME_VERSION}" in
Debian*)
release='-gnu'
;;
*)
release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
exit ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
exit ;;
*:ekkoBSD:*:*)
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
exit ;;
*:SolidBSD:*:*)
echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
exit ;;
macppc:MirBSD:*:*)
echo powerpc-unknown-mirbsd${UNAME_RELEASE}
exit ;;
*:MirBSD:*:*)
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
exit ;;
*:Sortix:*:*)
echo ${UNAME_MACHINE}-unknown-sortix
exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
UNAME_MACHINE=alpha ;;
"LCA4 (21066/21068)")
UNAME_MACHINE=alpha ;;
"EV5 (21164)")
UNAME_MACHINE=alphaev5 ;;
"EV5.6 (21164A)")
UNAME_MACHINE=alphaev56 ;;
"EV5.6 (21164PC)")
UNAME_MACHINE=alphapca56 ;;
"EV5.7 (21164PC)")
UNAME_MACHINE=alphapca57 ;;
"EV6 (21264)")
UNAME_MACHINE=alphaev6 ;;
"EV6.7 (21264A)")
UNAME_MACHINE=alphaev67 ;;
"EV6.8CB (21264C)")
UNAME_MACHINE=alphaev68 ;;
"EV6.8AL (21264B)")
UNAME_MACHINE=alphaev68 ;;
"EV6.8CX (21264D)")
UNAME_MACHINE=alphaev68 ;;
"EV6.9A (21264/EV69A)")
UNAME_MACHINE=alphaev69 ;;
"EV7 (21364)")
UNAME_MACHINE=alphaev7 ;;
"EV7.9 (21364A)")
UNAME_MACHINE=alphaev79 ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
# of the specific Alpha model?
echo alpha-pc-interix
exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
exit ;;
*:z/VM:*:*)
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
fi
exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit ;;
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
exit ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
echo i386-pc-auroraux${UNAME_RELEASE}
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH=x86_64
fi
fi
echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
echo m68k-sun-sunos${UNAME_RELEASE}
;;
sun4)
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
# > m68000). The system name ranges from "MiNT" over "FreeMiNT"
# to the lowercase version "mint" (or "freemint"). Finally
# the system name "TOS" denotes a system which is actually not
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
int main (int argc, char *argv[]) {
#else
int main (argc, argv) int argc; char *argv[]; {
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c &&
dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
SYSTEM_NAME=`$dummy $dummyarg` &&
{ echo "$SYSTEM_NAME"; exit; }
echo mips-mips-riscos${UNAME_RELEASE}
exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
exit ;;
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
exit ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
[ ${TARGET_BINARY_INTERFACE}x = x ]
then
echo m88k-dg-dgux${UNAME_RELEASE}
else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
fi
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#include <sys/systemcfg.h>
main()
{
if (!__power_pc())
exit(1);
puts("powerpc-ibm-aix3.2.5");
exit(0);
}
EOF
if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
then
echo "$SYSTEM_NAME"
else
echo rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
exit ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if [ -x /usr/bin/lslpp ] ; then
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
EOF
(CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
if [ ${HP_ARCH} = hppa2.0w ]
then
eval $set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
# generating 64-bit code. GNU and HP use different nomenclature:
#
# $ CC_FOR_BUILD=cc ./config.guess
# => hppa2.0w-hp-hpux11.23
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
HP_ARCH=hppa2.0w
else
HP_ARCH=hppa64
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#include <unistd.h>
int
main ()
{
long cpu = sysconf (_SC_CPU_VERSION);
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
results, however. */
if (CPU_IS_PA_RISC (cpu))
{
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
default: puts ("hppa-hitachi-hiuxwe2"); break;
}
}
else if (CPU_IS_HP_MC68K (cpu))
puts ("m68k-hitachi-hiuxwe2");
else puts ("unknown-hitachi-hiuxwe2");
exit (0);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
*:UNICOS/mp:*:*)
echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
case ${UNAME_PROCESSOR} in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
*:MINGW64*:*)
echo ${UNAME_MACHINE}-pc-mingw64
exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
authenticamd | genuineintel | EM64T)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
echo ia64-unknown-interix${UNAME_RELEASE}
exit ;;
esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
8664:Windows_NT:*)
echo x86_64-pc-mks
exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
echo i586-pc-interix
exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
echo x86_64-unknown-cygwin
exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
*:GNU:*:*)
# the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
PCA57) UNAME_MACHINE=alphapca56 ;;
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
e2k:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
frv:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
k1om:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
#undef ${UNAME_MACHINE}
#undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
mips64el:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
openrisc*:Linux:*:*)
echo or1k-unknown-linux-${LIBC}
exit ;;
or32:Linux:*:* | or1k*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
*) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-${LIBC}
exit ;;
ppc64le:Linux:*:*)
echo powerpc64le-unknown-linux-${LIBC}
exit ;;
ppcle:Linux:*:*)
echo powerpcle-unknown-linux-${LIBC}
exit ;;
riscv32:Linux:*:* | riscv64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
echo ${UNAME_MACHINE}-pc-os2-emx
exit ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
exit ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit ;;
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
exit ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
exit ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
paragon:*:*:*)
echo i860-intel-osf1
exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
exit ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
exit ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
exit ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
echo ${UNAME_MACHINE}-sni-sysv4
else
echo ns32k-sni-sysv
fi
exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
exit ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
echo ${UNAME_MACHINE}-stratus-vos
exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
x86_64:Haiku:*:*)
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
exit ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit ;;
SX-7:SUPER-UX:*:*)
echo sx7-nec-superux${UNAME_RELEASE}
exit ;;
SX-8:SUPER-UX:*:*)
echo sx8-nec-superux${UNAME_RELEASE}
exit ;;
SX-8R:SUPER-UX:*:*)
echo sx8r-nec-superux${UNAME_RELEASE}
exit ;;
SX-ACE:SUPER-UX:*:*)
echo sxace-nec-superux${UNAME_RELEASE}
exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
eval $set_cc_for_build
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_PPC >/dev/null
then
UNAME_PROCESSOR=powerpc
fi
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub
# that puts up a graphical alert prompting to install
# developer tools. Any system running Mac OS X 10.7 or
# later (Darwin 11 and later) is required to have a 64-bit
# processor. This is not true of the ARM version of Darwin
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
NEO-*:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-*:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit ;;
NSX-*:NONSTOP_KERNEL:*:*)
echo nsx-tandem-nsk${UNAME_RELEASE}
exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
esac ;;
*:XENIX:*:SysV)
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
exit ;;
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
exit ;;
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
x86_64:VMkernel:*:*)
echo ${UNAME_MACHINE}-unknown-esx
exit ;;
amd64:Isilon\ OneFS:*:*)
echo x86_64-unknown-onefs
exit ;;
esac
cat >&2 <<EOF
$0: unable to guess system type
This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite
config.guess and config.sub with the latest versions from:
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
provide the necessary information to handle your system.
config.guess timestamp = $timestamp
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
hostinfo = `(hostinfo) 2>/dev/null`
/bin/universe = `(/bin/universe) 2>/dev/null`
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
/bin/arch = `(/bin/arch) 2>/dev/null`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
UNAME_MACHINE = ${UNAME_MACHINE}
UNAME_RELEASE = ${UNAME_RELEASE}
UNAME_SYSTEM = ${UNAME_SYSTEM}
UNAME_VERSION = ${UNAME_VERSION}
EOF
exit 1
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
#! /bin/sh
# Configuration validation subroutine script.
# Copyright 1992-2017 Free Software Foundation, Inc.
timestamp='2017-04-02'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
Operation modes:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
Copyright 1992-2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
echo "$me: invalid option $1$help"
exit 1 ;;
*local*)
# First pass through any local machine types.
echo $1
exit ;;
* )
break ;;
esac
done
case $# in
0) echo "$me: missing argument$help" >&2
exit 1;;
1) ;;
*) echo "$me: too many arguments$help" >&2
exit 1;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | cloudabi*-eabi* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
then os=`echo $1 | sed 's/.*-/-/'`
else os=; fi
;;
esac
### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work. We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
-sun*os*)
# Prevent following clause from handling this invalid input.
;;
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
-bluegene*)
os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
;;
-scout)
;;
-wrs)
os=-vxworks
basic_machine=$1
;;
-chorusos*)
os=-chorusos
basic_machine=$1
;;
-chorusrdb)
os=-chorusrdb
basic_machine=$1
;;
-hiux*)
os=-hiuxwe2
;;
-sco6)
os=-sco5v6
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5)
os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-udk*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-lynx*178)
os=-lynxos178
;;
-lynx*5)
os=-lynxos5
;;
-lynx*)
os=-lynxos
;;
-ptx*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
;;
-windowsnt*)
os=`echo $os | sed -e 's/windowsnt/winnt/'`
;;
-psos*)
os=-psos
;;
-mint | -mint[0-9]*)
basic_machine=m68k-atari
os=-mint
;;
esac
# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
| aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
| ba \
| be32 | be64 \
| bfin \
| c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
| e2k | epiphany \
| fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
| k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pru \
| pyramid \
| riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu \
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| visium \
| wasm32 \
| we32k \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
c54x)
basic_machine=tic54x-unknown
;;
c55x)
basic_machine=tic55x-unknown
;;
c6x)
basic_machine=tic6x-unknown
;;
leon|leon[3-9])
basic_machine=sparc-$basic_machine
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;;
ms1)
basic_machine=mt-unknown
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
xgate)
basic_machine=$basic_machine-unknown
os=-none
;;
xscaleeb)
basic_machine=armeb-unknown
;;
xscaleel)
basic_machine=armel-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| ba-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| e2k-* | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
| ip2k-* | iq2000-* \
| k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
| mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
| mips64r5900-* | mips64r5900el-* \
| mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pru-* \
| pyramid-* \
| riscv32-* | riscv64-* \
| rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
| tron-* \
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| visium-* \
| wasm32-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
;;
# Recognize the basic CPU types without company name, with glob match.
xtensa*)
basic_machine=$basic_machine-unknown
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
basic_machine=i386-unknown
os=-bsd
;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
;;
3b*)
basic_machine=we32k-att
;;
a29khif)
basic_machine=a29k-amd
os=-udi
;;
abacus)
basic_machine=abacus-unknown
;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
;;
alliant | fx80)
basic_machine=fx80-alliant
;;
altos | altos3068)
basic_machine=m68k-altos
;;
am29k)
basic_machine=a29k-none
os=-bsd
;;
amd64)
basic_machine=x86_64-pc
;;
amd64-*)
basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
amdahl)
basic_machine=580-amdahl
os=-sysv
;;
amiga | amiga-*)
basic_machine=m68k-unknown
;;
amigaos | amigados)
basic_machine=m68k-unknown
os=-amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
os=-bsd
;;
aros)
basic_machine=i386-pc
os=-aros
;;
asmjs)
basic_machine=asmjs-unknown
;;
aux)
basic_machine=m68k-apple
os=-aux
;;
balance)
basic_machine=ns32k-sequent
os=-dynix
;;
blackfin)
basic_machine=bfin-unknown
os=-linux
;;
blackfin-*)
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
bluegene*)
basic_machine=powerpc-ibm
os=-cnk
;;
c54x-*)
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c55x-*)
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c6x-*)
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c90)
basic_machine=c90-cray
os=-unicos
;;
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
convex-c1)
basic_machine=c1-convex
os=-bsd
;;
convex-c2)
basic_machine=c2-convex
os=-bsd
;;
convex-c32)
basic_machine=c32-convex
os=-bsd
;;
convex-c34)
basic_machine=c34-convex
os=-bsd
;;
convex-c38)
basic_machine=c38-convex
os=-bsd
;;
cray | j90)
basic_machine=j90-cray
os=-unicos
;;
craynv)
basic_machine=craynv-cray
os=-unicosmp
;;
cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
basic_machine=m68k-crds
;;
crisv32 | crisv32-* | etraxfs*)
basic_machine=crisv32-axis
;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
crx)
basic_machine=crx-unknown
os=-elf
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
;;
decsystem10* | dec10*)
basic_machine=pdp10-dec
os=-tops10
;;
decsystem20* | dec20*)
basic_machine=pdp10-dec
os=-tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
;;
delta88)
basic_machine=m88k-motorola
os=-sysv3
;;
dicos)
basic_machine=i686-pc
os=-dicos
;;
djgpp)
basic_machine=i586-pc
os=-msdosdjgpp
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
;;
dpx2* | dpx2*-bull)
basic_machine=m68k-bull
os=-sysv3
;;
e500v[12])
basic_machine=powerpc-unknown
os=$os"spe"
;;
e500v[12]-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
os=$os"spe"
;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
;;
elxsi)
basic_machine=elxsi-elxsi
os=-bsd
;;
encore | umax | mmax)
basic_machine=ns32k-encore
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
os=-ose
;;
fx2800)
basic_machine=i860-alliant
;;
genix)
basic_machine=ns32k-ns
;;
gmicro)
basic_machine=tron-gmicro
os=-sysv
;;
go32)
basic_machine=i386-pc
os=-go32
;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
h8300hms)
basic_machine=h8300-hitachi
os=-hms
;;
h8300xray)
basic_machine=h8300-hitachi
os=-xray
;;
h8500hms)
basic_machine=h8500-hitachi
os=-hms
;;
harris)
basic_machine=m88k-harris
os=-sysv3
;;
hp300-*)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=-bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=-hpux
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
basic_machine=hppa1.1-hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
basic_machine=hppa1.1-hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hppa-next)
os=-nextstep3
;;
hppaosf)
basic_machine=hppa1.1-hp
os=-osf
;;
hppro)
basic_machine=hppa1.1-hp
os=-proelf
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i*86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i*86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i*86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
i386mach)
basic_machine=i386-mach
os=-mach
;;
i386-vsta | vsta)
basic_machine=i386-unknown
os=-vsta
;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
-irix*)
;;
*)
os=-irix4
;;
esac
;;
isi68 | isi)
basic_machine=m68k-isi
os=-sysv
;;
leon-*|leon[3-9]-*)
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
m88k-omron*)
basic_machine=m88k-omron
;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
;;
merlin)
basic_machine=ns32k-utek
os=-sysv
;;
microblaze*)
basic_machine=microblaze-xilinx
;;
mingw64)
basic_machine=x86_64-pc
os=-mingw64
;;
mingw32)
basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
basic_machine=arm-unknown
os=-mingw32ce
;;
miniframe)
basic_machine=m68000-convergent
;;
*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
basic_machine=m68k-atari
os=-mint
;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
monitor)
basic_machine=m68k-rom68k
os=-coff
;;
morphos)
basic_machine=powerpc-unknown
os=-morphos
;;
moxiebox)
basic_machine=moxie-unknown
os=-moxiebox
;;
msdos)
basic_machine=i386-pc
os=-msdos
;;
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i686-pc
os=-msys
;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
nacl)
basic_machine=le32-unknown
os=-nacl
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
netbsd386)
basic_machine=i386-unknown
os=-netbsd
;;
netwinder)
basic_machine=armv4l-rebel
os=-linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
;;
news1000)
basic_machine=m68030-sony
os=-newsos
;;
news-3600 | risc-news)
basic_machine=mips-sony
os=-newsos
;;
necv70)
basic_machine=v70-nec
os=-sysv
;;
next | m*-next )
basic_machine=m68k-next
case $os in
-nextstep* )
;;
-ns2*)
os=-nextstep2
;;
*)
os=-nextstep3
;;
esac
;;
nh3000)
basic_machine=m68k-harris
os=-cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=-cxux
;;
nindy960)
basic_machine=i960-intel
os=-nindy
;;
mon960)
basic_machine=i960-intel
os=-mon960
;;
nonstopux)
basic_machine=mips-compaq
os=-nonstopux
;;
np1)
basic_machine=np1-gould
;;
neo-tandem)
basic_machine=neo-tandem
;;
nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem)
basic_machine=nsr-tandem
;;
nsx-tandem)
basic_machine=nsx-tandem
;;
op50n-* | op60c-*)
basic_machine=hppa1.1-oki
os=-proelf
;;
openrisc | openrisc-*)
basic_machine=or32-unknown
;;
os400)
basic_machine=powerpc-ibm
os=-os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=-ose
;;
os68k)
basic_machine=m68k-none
os=-os68k
;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
paragon)
basic_machine=i860-intel
os=-osf
;;
parisc)
basic_machine=hppa-unknown
os=-linux
;;
parisc-*)
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
pbd)
basic_machine=sparc-tti
;;
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pc98)
basic_machine=i386-pc
;;
pc98-*)
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
pentiumpro | p6 | 6x86 | athlon | athlon_*)
basic_machine=i686-pc
;;
pentiumii | pentium2 | pentiumiii | pentium3)
basic_machine=i686-pc
;;
pentium4)
basic_machine=i786-pc
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium4-*)
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=power-ibm
;;
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little)
basic_machine=powerpc64le-unknown
;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
;;
pw32)
basic_machine=i586-unknown
os=-pw32
;;
rdos | rdos64)
basic_machine=x86_64-pc
os=-rdos
;;
rdos32)
basic_machine=i386-pc
os=-rdos
;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
;;
rm[46]00)
basic_machine=mips-siemens
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
s390 | s390-*)
basic_machine=s390-ibm
;;
s390x | s390x-*)
basic_machine=s390x-ibm
;;
sa29200)
basic_machine=a29k-amd
os=-udi
;;
sb1)
basic_machine=mipsisa64sb1-unknown
;;
sb1el)
basic_machine=mipsisa64sb1el-unknown
;;
sde)
basic_machine=mipsisa32-sde
os=-elf
;;
sei)
basic_machine=mips-sei
os=-seiux
;;
sequent)
basic_machine=i386-sequent
;;
sh)
basic_machine=sh-hitachi
os=-hms
;;
sh5el)
basic_machine=sh5le-unknown
;;
sh64)
basic_machine=sh64-unknown
;;
sparclite-wrs | simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
;;
sps7)
basic_machine=m68k-bull
os=-sysv2
;;
spur)
basic_machine=spur-unknown
;;
st2000)
basic_machine=m68k-tandem
;;
stratus)
basic_machine=i860-stratus
os=-sysv4
;;
strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
sun2)
basic_machine=m68000-sun
;;
sun2os3)
basic_machine=m68000-sun
os=-sunos3
;;
sun2os4)
basic_machine=m68000-sun
os=-sunos4
;;
sun3os3)
basic_machine=m68k-sun
os=-sunos3
;;
sun3os4)
basic_machine=m68k-sun
os=-sunos4
;;
sun4os3)
basic_machine=sparc-sun
os=-sunos3
;;
sun4os4)
basic_machine=sparc-sun
os=-sunos4
;;
sun4sol2)
basic_machine=sparc-sun
os=-solaris2
;;
sun3 | sun3-*)
basic_machine=m68k-sun
;;
sun4)
basic_machine=sparc-sun
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
sv1)
basic_machine=sv1-cray
os=-unicos
;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
t3e)
basic_machine=alphaev5-cray
os=-unicos
;;
t90)
basic_machine=t90-cray
os=-unicos
;;
tile*)
basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
basic_machine=mipstx39-unknown
;;
tx39el)
basic_machine=mipstx39el-unknown
;;
toad1)
basic_machine=pdp10-xkl
os=-tops20
;;
tower | tower-32)
basic_machine=m68k-ncr
;;
tpf)
basic_machine=s390x-ibm
os=-tpf
;;
udi29k)
basic_machine=a29k-amd
os=-udi
;;
ultra3)
basic_machine=a29k-nyu
os=-sym1
;;
v810 | necv810)
basic_machine=v810-nec
os=-none
;;
vaxv)
basic_machine=vax-dec
os=-sysv
;;
vms)
basic_machine=vax-dec
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
;;
vxworks68)
basic_machine=m68k-wrs
os=-vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
os=-vxworks
;;
wasm32)
basic_machine=wasm32-unknown
;;
w65*)
basic_machine=w65-wdc
os=-none
;;
w89k-*)
basic_machine=hppa1.1-winbond
os=-proelf
;;
xbox)
basic_machine=i686-pc
os=-mingw32
;;
xps | xps100)
basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
;;
z8k-*-coff)
basic_machine=z8k-unknown
os=-sim
;;
z80-*-coff)
basic_machine=z80-unknown
os=-sim
;;
none)
basic_machine=none-none
os=-none
;;
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
w89k)
basic_machine=hppa1.1-winbond
;;
op50n)
basic_machine=hppa1.1-oki
;;
op60c)
basic_machine=hppa1.1-oki
;;
romp)
basic_machine=romp-ibm
;;
mmix)
basic_machine=mmix-knuth
;;
rs6000)
basic_machine=rs6000-ibm
;;
vax)
basic_machine=vax-dec
;;
pdp10)
# there are many clones, so DEC is not a safe bet
basic_machine=pdp10-unknown
;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
;;
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sparc-sun
;;
cydra)
basic_machine=cydra-cydrome
;;
orion)
basic_machine=orion-highlevel
;;
orion105)
basic_machine=clipper-highlevel
;;
mac | mpw | mac-mpw)
basic_machine=m68k-apple
;;
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
;;
*-commodore*)
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
-auroraux)
os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
-solaris)
os=-solaris2
;;
-svr4*)
os=-sysv4
;;
-unixware*)
os=-sysv4.2uw
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# First accept the basic system types.
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* | -cloudabi* | -sortix* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
case $basic_machine in
x86-* | i*86-*)
;;
*)
os=-nto$os
;;
esac
;;
-nto-qnx*)
;;
-nto*)
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
os=`echo $os | sed -e 's|mac|macos|'`
;;
-linux-dietlibc)
os=-linux-dietlibc
;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
-opened*)
os=-openedition
;;
-os400*)
os=-os400
;;
-wince*)
os=-wince
;;
-osfrose*)
os=-osfrose
;;
-osf*)
os=-osf
;;
-utek*)
os=-bsd
;;
-dynix*)
os=-bsd
;;
-acis*)
os=-aos
;;
-atheos*)
os=-atheos
;;
-syllable*)
os=-syllable
;;
-386bsd)
os=-bsd
;;
-ctix* | -uts*)
os=-sysv
;;
-nova*)
os=-rtmk-nova
;;
-ns2 )
os=-nextstep2
;;
-nsk*)
os=-nsk
;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
-sinix*)
os=-sysv4
;;
-tpf*)
os=-tpf
;;
-triton*)
os=-sysv3
;;
-oss*)
os=-sysv3
;;
-svr4)
os=-sysv4
;;
-svr3)
os=-sysv3
;;
-sysvr4)
os=-sysv4
;;
# This must come after -sysvr4.
-sysv*)
;;
-ose*)
os=-ose
;;
-es1800*)
os=-ose
;;
-xenix)
os=-xenix
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
;;
-aros*)
os=-aros
;;
-zvmoe)
os=-zvmoe
;;
-dicos*)
os=-dicos
;;
-nacl*)
;;
-ios)
;;
-none)
;;
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
exit 1
;;
esac
else
# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.
# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system. Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
case $basic_machine in
score-*)
os=-elf
;;
spu-*)
os=-elf
;;
*-acorn)
os=-riscix1.2
;;
arm*-rebel)
os=-linux
;;
arm*-semi)
os=-aout
;;
c4x-* | tic4x-*)
os=-coff
;;
c8051-*)
os=-elf
;;
hexagon-*)
os=-elf
;;
tic54x-*)
os=-coff
;;
tic55x-*)
os=-coff
;;
tic6x-*)
os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
;;
pdp11-*)
os=-none
;;
*-dec | vax-*)
os=-ultrix4.2
;;
m68*-apollo)
os=-domain
;;
i386-sun)
os=-sunos4.0.2
;;
m68000-sun)
os=-sunos3
;;
m68*-cisco)
os=-aout
;;
mep-*)
os=-elf
;;
mips*-cisco)
os=-elf
;;
mips*-*)
os=-elf
;;
or32-*)
os=-coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
;;
pru-*)
os=-elf
;;
*-be)
os=-beos
;;
*-haiku)
os=-haiku
;;
*-ibm)
os=-aix
;;
*-knuth)
os=-mmixware
;;
*-wec)
os=-proelf
;;
*-winbond)
os=-proelf
;;
*-oki)
os=-proelf
;;
*-hp)
os=-hpux
;;
*-hitachi)
os=-hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
os=-sysv
;;
*-cbm)
os=-amigaos
;;
*-dg)
os=-dgux
;;
*-dolphin)
os=-sysv3
;;
m68k-ccur)
os=-rtu
;;
m88k-omron*)
os=-luna
;;
*-next )
os=-nextstep
;;
*-sequent)
os=-ptx
;;
*-crds)
os=-unos
;;
*-ns)
os=-genix
;;
i370-*)
os=-mvs
;;
*-next)
os=-nextstep3
;;
*-gould)
os=-sysv
;;
*-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
*-sgi)
os=-irix
;;
*-siemens)
os=-sysv4
;;
*-masscomp)
os=-rtu
;;
f30[01]-fujitsu | f700-fujitsu)
os=-uxpv
;;
*-rom68k)
os=-coff
;;
*-*bug)
os=-coff
;;
*-apple)
os=-macos
;;
*-atari*)
os=-mint
;;
*)
os=-none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
*-unknown)
case $os in
-riscix*)
vendor=acorn
;;
-sunos*)
vendor=sun
;;
-cnk*|-aix*)
vendor=ibm
;;
-beos*)
vendor=be
;;
-hpux*)
vendor=hp
;;
-mpeix*)
vendor=hp
;;
-hiux*)
vendor=hitachi
;;
-unos*)
vendor=crds
;;
-dgux*)
vendor=dg
;;
-luna*)
vendor=omron
;;
-genix*)
vendor=ns
;;
-mvs* | -opened*)
vendor=ibm
;;
-os400*)
vendor=ibm
;;
-ptx*)
vendor=sequent
;;
-tpf*)
vendor=ibm
;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
-aux*)
vendor=apple
;;
-hms*)
vendor=hitachi
;;
-mpw* | -macos*)
vendor=apple
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
vendor=atari
;;
-vos*)
vendor=stratus
;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
echo $basic_machine$os
exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2016-01-11.22; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
tab=' '
nl='
'
IFS=" $tab$nl"
# Set DOITPROG to "echo" to test this script.
doit=${DOITPROG-}
doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t)
is_target_a_directory=always
dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
oIFS=$IFS
IFS=/
set -f
set fnord $dstdir
shift
set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
This source diff could not be displayed because it is too large. You can view the blob instead.
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([faiss], [1.0])
AC_COPYRIGHT([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.])
AC_CONFIG_SRCDIR([Index.h])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([acinclude])
: ${CXXFLAGS="-g -O3 -Wall -Wextra"}
# Checks for programs.
AC_LANG(C++)
AC_PROG_CXX
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
AC_PROG_CPP
AC_PROG_MAKE_SET
AC_PROG_MKDIR_P
FA_PYTHON
if test x$PYTHON != x; then
FA_NUMPY
fi
FA_PROG_SWIG
FA_CHECK_CUDA
# Checks for header files.
AC_CHECK_HEADERS([float.h limits.h stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_CHECK_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_INT32_T
AC_TYPE_INT64_T
AC_C_RESTRICT
AC_TYPE_SIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_MMAP
AC_CHECK_FUNCS([clock_gettime floor gettimeofday memmove memset munmap pow sqrt strerror strstr])
AC_OPENMP
AX_BLAS
if test "x$ax_blas_ok" == "xno"; then
AC_MSG_ERROR([An implementation of BLAS is required but none was found.])
fi
AX_LAPACK
if test "x$ax_lapack_ok" == "xno"; then
AC_MSG_ERROR([An implementation of LAPACK is required but none was found.])
fi
AC_CONFIG_FILES([makefile.inc])
AC_OUTPUT
# 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
DEMOS_SRC=$(wildcard demo_*.cpp)
DEMOS=$(DEMOS_SRC:.cpp=)
all: $(DEMOS)
clean:
rm -f $(DEMOS)
%: %.cpp ../libfaiss.a
$(CXX) -o $@ $(CXXFLAGS) $^ $(LDFLAGS) $(LIBS)
.PHONY: all clean
AutoTune.o: AutoTune.cpp AutoTune.h Index.h FaissAssert.h \
FaissException.h utils.h Heap.h IndexFlat.h VectorTransform.h IndexLSH.h \
IndexPQ.h ProductQuantizer.h Clustering.h PolysemousTraining.h \
IndexIVF.h IndexIVFPQ.h IndexIVFFlat.h MetaIndexes.h \
IndexScalarQuantizer.h IndexHNSW.h
AuxIndexStructures.o: AuxIndexStructures.cpp AuxIndexStructures.h Index.h
Clustering.o: Clustering.cpp Clustering.h Index.h utils.h Heap.h \
FaissAssert.h FaissException.h IndexFlat.h
FaissException.o: FaissException.cpp FaissException.h
Heap.o: Heap.cpp Heap.h
Index.o: Index.cpp IndexFlat.h Index.h FaissAssert.h FaissException.h
IndexFlat.o: IndexFlat.cpp IndexFlat.h Index.h utils.h Heap.h \
FaissAssert.h FaissException.h AuxIndexStructures.h
IndexHNSW.o: IndexHNSW.cpp IndexHNSW.h IndexFlat.h Index.h IndexPQ.h \
ProductQuantizer.h Clustering.h Heap.h PolysemousTraining.h \
IndexScalarQuantizer.h IndexIVF.h utils.h FaissAssert.h FaissException.h \
IndexIVFPQ.h
IndexIVF.o: IndexIVF.cpp IndexIVF.h Index.h Clustering.h Heap.h utils.h \
hamming.h FaissAssert.h FaissException.h IndexFlat.h \
AuxIndexStructures.h
IndexIVFFlat.o: IndexIVFFlat.cpp IndexIVFFlat.h IndexIVF.h Index.h \
Clustering.h Heap.h utils.h FaissAssert.h FaissException.h IndexFlat.h \
AuxIndexStructures.h
IndexIVFPQ.o: IndexIVFPQ.cpp IndexIVFPQ.h IndexIVF.h Index.h Clustering.h \
Heap.h IndexPQ.h ProductQuantizer.h PolysemousTraining.h utils.h \
IndexFlat.h hamming.h FaissAssert.h FaissException.h \
AuxIndexStructures.h
IndexLSH.o: IndexLSH.cpp IndexLSH.h Index.h VectorTransform.h utils.h \
Heap.h hamming.h FaissAssert.h FaissException.h
IndexPQ.o: IndexPQ.cpp IndexPQ.h Index.h ProductQuantizer.h Clustering.h \
Heap.h PolysemousTraining.h FaissAssert.h FaissException.h \
AuxIndexStructures.h hamming.h
IndexScalarQuantizer.o: IndexScalarQuantizer.cpp IndexScalarQuantizer.h \
IndexIVF.h Index.h Clustering.h Heap.h utils.h FaissAssert.h \
FaissException.h
MetaIndexes.o: MetaIndexes.cpp MetaIndexes.h Index.h FaissAssert.h \
FaissException.h Heap.h AuxIndexStructures.h
OnDiskInvertedLists.o: OnDiskInvertedLists.cpp OnDiskInvertedLists.h \
IndexIVF.h Index.h Clustering.h Heap.h FaissAssert.h FaissException.h
PolysemousTraining.o: PolysemousTraining.cpp PolysemousTraining.h \
ProductQuantizer.h Clustering.h Index.h Heap.h utils.h hamming.h \
FaissAssert.h FaissException.h
ProductQuantizer.o: ProductQuantizer.cpp ProductQuantizer.h Clustering.h \
Index.h Heap.h FaissAssert.h FaissException.h VectorTransform.h \
IndexFlat.h utils.h
VectorTransform.o: VectorTransform.cpp VectorTransform.h Index.h utils.h \
Heap.h FaissAssert.h FaissException.h IndexPQ.h ProductQuantizer.h \
Clustering.h PolysemousTraining.h
hamming.o: hamming.cpp hamming.h Heap.h FaissAssert.h FaissException.h
index_io.o: index_io.cpp index_io.h FaissAssert.h FaissException.h \
IndexFlat.h Index.h VectorTransform.h IndexLSH.h IndexPQ.h \
ProductQuantizer.h Clustering.h Heap.h PolysemousTraining.h IndexIVF.h \
IndexIVFPQ.h IndexIVFFlat.h MetaIndexes.h IndexScalarQuantizer.h \
IndexHNSW.h utils.h OnDiskInvertedLists.h
utils.o: utils.cpp utils.h Heap.h AuxIndexStructures.h Index.h \
FaissAssert.h FaissException.h
# -*- 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.
# -*- makefile -*-
# tested on CentOS 7, Ubuntu 16 and Ubuntu 14, see below to adjust flags to distribution.
CC=gcc
CXX=g++
CFLAGS=-fPIC -m64 -Wall -g -O3 -mavx -msse4 -mpopcnt -fopenmp -Wno-sign-compare
CXXFLAGS=$(CFLAGS) -std=c++11
LDFLAGS=-g -fPIC -fopenmp
CXX = g++ -std=c++11
CXXFLAGS = -fPIC -m64 -Wall -g -O3 -fopenmp -Wno-sign-compare
CPUFLAGS = -mavx -msse4 -mpopcnt
LDFLAGS = -fPIC -fopenmp
# common linux flags
SHAREDEXT=so
SHAREDFLAGS=-shared
FAISSSHAREDFLAGS=-shared
SHAREDEXT = so
SHAREDFLAGS = -shared
MKDIR_P = mkdir -p
prefix ?= /usr/local
exec_prefix ?= ${prefix}
libdir = ${exec_prefix}/lib
includedir = ${prefix}/include
##########################################################################
# Uncomment one of the 4 BLAS/Lapack implementation options
......@@ -37,24 +38,25 @@ FAISSSHAREDFLAGS=-shared
#
# https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor
#
# The latest tested version is MLK 2017.0.098 (2017 Initial Release) and can
# The latest tested version is MKL 2017.0.098 (2017 Initial Release) and can
# be downloaded here:
#
# https://registrationcenter.intel.com/en/forms/?productid=2558&licensetype=2
#
# The following settings are working if MLK is installed on its default folder:
# The following settings are working if MKL is installed on its default folder:
#
# MKLROOT = /opt/intel/compilers_and_libraries/linux/mkl/
#
# MKLROOT=/opt/intel/compilers_and_libraries/linux/mkl/
# LDFLAGS += -Wl,--no-as-needed -L$(MKLROOT)/lib/intel64
# LIBS += -lmkl_intel_ilp64 -lmkl_core -lmkl_gnu_thread -ldl -lpthread
#
# BLASLDFLAGS=-Wl,--no-as-needed -L$(MKLROOT)/lib/intel64 -lmkl_intel_ilp64 \
# -lmkl_core -lmkl_gnu_thread -ldl -lpthread
# CPPFLAGS += -DFINTEGER=long
#
# BLASCFLAGS=-DFINTEGER=long
# You may have to set the LD_LIBRARY_PATH=$MKLROOT/lib/intel64 at runtime.
#
# you may have to set the LD_LIBRARY_PATH=$MKLROOT/lib/intel64 at runtime.
# If at runtime you get the error:
# Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.
# You may add set
# Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so
# you may set
# LD_PRELOAD=$MKLROOT/lib/intel64/libmkl_core.so:$MKLROOT/lib/intel64/libmkl_sequential.so
# at runtime as well.
......@@ -65,19 +67,15 @@ FAISSSHAREDFLAGS=-shared
# https://github.com/facebookresearch/faiss/wiki/Troubleshooting#slow-brute-force-search-with-openblas
# to fix performance problemes with OpenBLAS
BLASCFLAGS=-DFINTEGER=int
# This is for Centos:
BLASLDFLAGS?=/usr/lib64/libopenblas.so.0
# for Ubuntu 16:
# sudo apt-get install libopenblas-dev python-numpy python-dev
# BLASLDFLAGS?=/usr/lib/libopenblas.so.0
# for Ubuntu 14:
# sudo apt-get install libopenblas-dev liblapack3 python-numpy python-dev
# BLASLDFLAGS?=/usr/lib/libopenblas.so.0 /usr/lib/lapack/liblapack.so.3.0
#
CPPFLAGS += -DFINTEGER=int
LIBS += -lopenblas -llapack
# 3. Atlas
#
# Automatically tuned linear algebra package. As the name indicates,
......@@ -93,8 +91,8 @@ BLASLDFLAGS?=/usr/lib64/libopenblas.so.0
# This is just a compiled version of the reference BLAS
# implementation, that is not optimized at all.
#
# BLASCFLAGS=-DFINTEGER=int
# BLASLDFLAGS=/usr/lib64/libblas.so.3 /usr/lib64/liblapack.so.3.2
# CPPFLAGS += -DFINTEGER=int
# LIBS += /usr/lib64/libblas.so.3 /usr/lib64/liblapack.so.3.2
#
......@@ -103,7 +101,7 @@ BLASLDFLAGS?=/usr/lib64/libopenblas.so.0
##########################################################################
# SWIG executable. This should be at least version 3.x
SWIGEXEC=swig
SWIG = swig
# The Python include directories for a given python executable can
# typically be found with
......@@ -117,8 +115,8 @@ SWIGEXEC=swig
# python3 -c "import numpy ; print(numpy.get_include())"
#
PYTHONCFLAGS=-I/usr/include/python2.7/ -I/usr/lib64/python2.7/site-packages/numpy/core/include/
PYTHONCFLAGS = -I/usr/include/python2.7/ -I/usr/lib64/python2.7/site-packages/numpy/core/include/
PYTHONLIB = -lpython
###########################################################################
# Cuda GPU flags
......@@ -127,26 +125,16 @@ PYTHONCFLAGS=-I/usr/include/python2.7/ -I/usr/lib64/python2.7/site-packages/nump
# root of the cuda 8 installation
CUDAROOT=/usr/local/cuda-8.0/
CUDACFLAGS=-I$(CUDAROOT)/include
NVCC=$(CUDAROOT)/bin/nvcc
NVCCFLAGS= $(CUDAFLAGS) \
-I $(CUDAROOT)/targets/x86_64-linux/include/ \
-Xcompiler -fPIC \
-Xcudafe --diag_suppress=unrecognized_attribute \
-gencode arch=compute_35,code="compute_35" \
-gencode arch=compute_52,code="compute_52" \
-gencode arch=compute_60,code="compute_60" \
--std c++11 -lineinfo \
-ccbin $(CXX) -DFAISS_USE_FLOAT16
# BLAS LD flags for nvcc (used to generate an executable)
# if BLASLDFLAGS contains several flags, each one may
# need to be prepended with -Xlinker
BLASLDFLAGSNVCC=-Xlinker $(BLASLDFLAGS)
# Same, but to generate a .so
BLASLDFLAGSSONVCC=-Xlinker $(BLASLDFLAGS)
CUDAROOT = /usr/local/cuda-8.0
NVCC = $(CUDAROOT)/bin/nvcc
NVCCLDFLAGS = -L$(CUDAROOT)/lib64
NVCCLIBS = -lcudart -lcublas -lcuda
CUDACFLAGS = -I$(CUDAROOT)/include
NVCCFLAGS = -I $(CUDAROOT)/targets/x86_64-linux/include/ \
-Xcompiler -fPIC \
-Xcudafe --diag_suppress=unrecognized_attribute \
-gencode arch=compute_35,code="compute_35" \
-gencode arch=compute_52,code="compute_52" \
-gencode arch=compute_60,code="compute_60" \
-lineinfo \
-ccbin $(CXX) -DFAISS_USE_FLOAT16
# -*- 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.
# Tested on macOS Sierra (10.12.2) with llvm installed using Homebrew (https://brew.sh)
# brew install llvm
CXX=/usr/local/opt/llvm/bin/clang++
CFLAGS=-fPIC -m64 -Wall -g -O3 -msse4 -mpopcnt -fopenmp -Wno-sign-compare -I/usr/local/opt/llvm/include
CXXFLAGS=$(CFLAGS) -std=c++11
CXX = /usr/local/opt/llvm/bin/clang++ -std=c++11
CXXFLAGS = -fPIC -m64 -Wall -g -O3 -fopenmp -Wno-sign-compare -I/usr/local/opt/llvm/include
CPUFLAGS = -msse4 -mpopcnt
LLVM_VERSION_PATH=$(shell ls -rt /usr/local/Cellar/llvm/ | tail -n1)
LDFLAGS=-g -fPIC -fopenmp -L/usr/local/opt/llvm/lib -L/usr/local/Cellar/llvm/${LLVM_VERSION_PATH}/lib
LDFLAGS = -fPIC -fopenmp -L/usr/local/opt/llvm/lib -L/usr/local/Cellar/llvm/${LLVM_VERSION_PATH}/lib
# common mac flags
SHAREDEXT=dylib
SHAREDFLAGS=-Wl,-F. -bundle -undefined dynamic_lookup
FAISSSHAREDFLAGS=-dynamiclib
SHAREDEXT = dylib
SHAREDFLAGS = -dynamiclib
MKDIR_P = mkdir -p
# wrapldflags=""
# sharedext=dylib
# sharedflags="-dynamiclib"
# yaelsharedflags="$sharedflags -install_name $yaelprefix/yael/libyael.dylib"
prefix ?= /usr/local
exec_prefix ?= ${prefix}
libdir = ${exec_prefix}/lib
includedir = ${prefix}/include
##########################################################################
# Uncomment one of the 4 BLAS/Lapack implementation options
......@@ -34,28 +39,29 @@ FAISSSHAREDFLAGS=-dynamiclib
#
# https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor
#
# for a start on setting the link flags. On version IntelComposerXE
# 2015.0.090, the following flags work
# The latest tested version is MKL 2017.0.098 (2017 Initial Release) and can
# be downloaded here:
#
# MKLROOT=$(HOME)/fbsource/fbcode/third-party2//IntelComposerXE/2015.0.090/gcc-4.8.1-glibc-2.17/c3f970a/mkl
# https://registrationcenter.intel.com/en/forms/?productid=2558&licensetype=2
#
# BLASLDFLAGS=-Wl,--no-as-needed -L$(MKLROOT)/lib/intel64 -lmkl_intel_ilp64 \
# -lmkl_core -lmkl_gnu_thread -ldl -lpthread
# The following settings are working if MKL is installed on its default folder:
#
# the ilp64 means that the integers are 64-bit.
# MKLROOT = /opt/intel/compilers_and_libraries/linux/mkl/
#
# BLASLDFLAGS=-DFINTEGER=long
# LDFLAGS += -Wl,--no-as-needed -L$(MKLROOT)/lib/intel64
# LIBS += -lmkl_intel_ilp64 -lmkl_core -lmkl_gnu_thread -ldl -lpthread
#
# you may have to set the LD_LIBRARY_PATH=$MKLROOT/lib/intel64 at runtime
# CPPFLAGS += -DFINTEGER=long
#
# You may have to set the LD_LIBRARY_PATH=$MKLROOT/lib/intel64 at runtime.
#
# 2. Openblas
#
# The library contains both BLAS and Lapack. Install with brew install OpenBLAS
#
# BLASCFLAGS=-DFINTEGER=int
# BLASLDFLAGS=/usr/local/opt/openblas/lib/libblas.dylib
# CPPFLAGS += -DFINTEGER=int
# LIBS += /usr/local/opt/openblas/lib/libblas.dylib
#
#
......@@ -65,8 +71,8 @@ FAISSSHAREDFLAGS=-dynamiclib
# as it is provided by default on the mac. It is not very fast, though.
#
BLASCFLAGS=-DFINTEGER=int
BLASLDFLAGS=-framework Accelerate
CPPFLAGS += -DFINTEGER=int
LIBS += -framework Accelerate
......@@ -77,13 +83,14 @@ BLASLDFLAGS=-framework Accelerate
# SWIG executable. This should be at least version 3.x
# brew install swig
SWIGEXEC=/usr/local/bin/swig
SWIG = /usr/local/bin/swig
# The Python include directories for the current python executable
PYTHON_INC=$(shell python -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())")
NUMPY_INC=$(shell python -c "import numpy ; print(numpy.get_include())")
PYTHONCFLAGS=-I${PYTHON_INC} -I${NUMPY_INC}
PYTHONLIB=-lpython
##########################################################################
# Faiss GPU
......
# -*- 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.
#
# tested on Mac OS X 10.12.2 Sierra with additional software installed via macports
# The system default clang does not support openmp
# You can install an openmp compatible g++ with macports:
# port install g++-mp-6
CXX=/opt/local/bin/g++-mp-6
CFLAGS=-fPIC -m64 -Wall -g -O3 -msse4 -mpopcnt -fopenmp -Wno-sign-compare
CXXFLAGS=$(CFLAGS) -std=c++11
LDFLAGS=-g -fPIC -fopenmp
CXX = /opt/local/bin/g++-mp-6 -std=c++11
CXXFLAGS = -fPIC -m64 -Wall -g -O3 -fopenmp -Wno-sign-compare
CPUFLAGS = -msse4 -mpopcnt
LDFLAGS = -g -fPIC -fopenmp
# common linux flags
SHAREDEXT=dylib
SHAREDFLAGS=-Wl,-F. -bundle -undefined dynamic_lookup
FAISSSHAREDFLAGS=-dynamiclib
SHAREDEXT = dylib
SHAREDFLAGS = -dynamiclib
MKDIR_P = mkdir -p
# wrapldflags=""
# sharedext=dylib
# sharedflags="-dynamiclib"
# yaelsharedflags="$sharedflags -install_name $yaelprefix/yael/libyael.dylib"
prefix ?= /usr/local
exec_prefix ?= ${prefix}
libdir = ${exec_prefix}/lib
includedir = ${prefix}/include
##########################################################################
# Uncomment one of the 4 BLAS/Lapack implementation options
......@@ -39,28 +41,29 @@ FAISSSHAREDFLAGS=-dynamiclib
#
# https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor
#
# for a start on setting the link flags. On version IntelComposerXE
# 2015.0.090, the following flags work
# The latest tested version is MKL 2017.0.098 (2017 Initial Release) and can
# be downloaded here:
#
# MKLROOT=$(HOME)/fbsource/fbcode/third-party2//IntelComposerXE/2015.0.090/gcc-4.8.1-glibc-2.17/c3f970a/mkl
# https://registrationcenter.intel.com/en/forms/?productid=2558&licensetype=2
#
# BLASLDFLAGS=-Wl,--no-as-needed -L$(MKLROOT)/lib/intel64 -lmkl_intel_ilp64 \
# -lmkl_core -lmkl_gnu_thread -ldl -lpthread
# The following settings are working if MKL is installed on its default folder:
#
# the ilp64 means that the integers are 64-bit.
# MKLROOT = /opt/intel/compilers_and_libraries/linux/mkl/
#
# BLASLDFLAGS=-DFINTEGER=long
# LDFLAGS += -Wl,--no-as-needed -L$(MKLROOT)/lib/intel64
# LIBS += -lmkl_intel_ilp64 -lmkl_core -lmkl_gnu_thread -ldl -lpthread
#
# you may have to set the LD_LIBRARY_PATH=$MKLROOT/lib/intel64 at runtime
# CPPFLAGS += -DFINTEGER=long
#
# You may have to set the LD_LIBRARY_PATH=$MKLROOT/lib/intel64 at runtime.
#
# 2. Openblas
#
# The library contains both BLAS and Lapack. Install with port install OpenBLAS
#
# BLASCFLAGS=-DFINTEGER=int
# BLASLDFLAGS=/opt/local/lib/libopenblas.dylib
# CPPFLAGS += -DFINTEGER=int
# LIBS += /opt/local/lib/libopenblas.dylib
#
#
......@@ -70,8 +73,8 @@ FAISSSHAREDFLAGS=-dynamiclib
# as it is provided by default on the mac. It is not very fast, though.
#
BLASCFLAGS=-DFINTEGER=int
BLASLDFLAGS=-framework Accelerate
CPPFLAGS += -DFINTEGER=int
LIBS += -framework Accelerate
......@@ -82,7 +85,7 @@ BLASLDFLAGS=-framework Accelerate
# SWIG executable. This should be at least version 3.x
# port install swig swig-python
SWIGEXEC=/opt/local/bin/swig
SWIG = /opt/local/bin/swig
# The Python include directories for the current python executable can
# typically be found with
......@@ -94,7 +97,7 @@ SWIGEXEC=/opt/local/bin/swig
PYTHONCFLAGS=-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 \
-I/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include
PYTHONLIB=-lpython
##########################################################################
# Faiss GPU
......
......@@ -4,22 +4,11 @@
# This source code is licensed under the BSD+Patents license found in the
# LICENSE file in the root directory of this source tree.
.SUFFIXES: .cpp .o .cu
-include ../makefile.inc
include ../makefile.inc
all: libgpufaiss.a libgpufaiss.$(SHAREDEXT)
LIBNAME=libgpufaiss
all: $(LIBNAME).a test/demo_ivfpq_indexing_gpu
py:../_swigfaiss_gpu.so
CPPOBJ= GpuResources.o \
CPPOBJ = GpuResources.o \
IndexProxy.o \
StandardGpuResources.o \
GpuAutoTune.o \
......@@ -33,10 +22,9 @@ CPPOBJ= GpuResources.o \
utils/WorkerThread.o
INS=1 32 64 128 256 F512 T512 F1024 T1024
INS = 1 32 64 128 256 F512 T512 F1024 T1024
CUOBJ= impl/BroadcastSum.o \
CUOBJ = impl/BroadcastSum.o \
impl/Distance.o \
impl/FlatIndex.o \
impl/InvertedListAppend.o \
......@@ -72,1359 +60,29 @@ CUOBJ= impl/BroadcastSum.o \
utils/warpselect/WarpSelectFloat$(v).o \
)
%.o: %.cpp
$(CXX) $(CXXFLAGS) $(CPUFLAGS) -c $< -o $@ $(CUDACFLAGS)
.cpp.o:
$(CXX) $(CXXFLAGS) -fPIC -m64 -Wall -g -Wno-sign-compare -O3 -fopenmp \
-c $< -o $@ $(EXTRAFLAGS) $(CUDACFLAGS)
%.o: %.cu
$(NVCC) $(NVCCFLAGS) -g -O3 -c $< -o $@
.cu.o:
$(NVCC) $(NVCCFLAGS) -g -O3 \
-c $< -o $@ $(EXTRAFLAGS)
$(LIBNAME).a: $(CPPOBJ) $(CUOBJ)
libgpufaiss.a: $(CPPOBJ) $(CUOBJ)
ar r $@ $^
$(LIBNAME).$(SHAREDEXT): $(CPPOBJ) $(CUOBJ)
$(CXX) -L$(CUDAROOT)/lib64 -lcublas -lcudart $(LDFLAGS) \
$(FAISSSHAREDFLAGS) -o $(LIBNAME).$(SHAREDEXT) $^
test/demo_ivfpq_indexing_gpu: test/demo_ivfpq_indexing_gpu.cpp \
$(LIBNAME).a ../libfaiss.a
$(NVCC) $(NVCCFLAGS) -o $@ $^ -Xcompiler -fopenmp -lcublas \
$(BLASLDFLAGSNVCC)
#############################################################
# Python interface
#############################################################
# also silently generates python/swigfaiss.py
../python/swigfaiss_gpu_wrap.cxx: ../swigfaiss.swig
cd ../python; $(SWIGEXEC) -Doverride= -python -c++ -DGPU_WRAPPER -o $@ $<
# extension is .so even on the mac
../python/_swigfaiss_gpu.so: ../python/swigfaiss_gpu_wrap.cxx \
$(LIBNAME).a ../libfaiss.a
$(NVCC) -I.. $(NVCCFLAGS) $(PYTHONCFLAGS) -shared -o $@ $^ \
-Xcompiler -fopenmp -lcublas \
$(BLASLDFLAGSSONVCC)
../_swigfaiss_gpu.so: ../python/_swigfaiss_gpu.so
cp ../python/_swigfaiss_gpu.so ../python/swigfaiss_gpu.py ..
libgpufaiss.$(SHAREDEXT): $(CPPOBJ) $(CUOBJ)
$(CXX) $(SHAREDFLAGS) $(LDFLAGS) $(NVCCLDFLAGS) \
-o libgpufaiss.$(SHAREDEXT) $^ $(LIBS) $(NVCCLIBS)
clean:
rm -rf *.o impl/*.o utils/*.o test/*.o $(LIBNAME).a \
$(LIBNAME).$(SHAREDEXT) \
../python/*swigfaiss_gpu* ../*swigfaiss_gpu*
rm -rf *.o impl/*.o utils/*.o test/*.o libgpufaiss.a \
libgpufaiss.$(SHAREDEXT) \
-include depend
# make dep > x
# then copy x below
dep:
depend:
for i in $(patsubst %.o,%.cpp,$(CPPOBJ)) \
$(patsubst %.o,%.cu,$(CUOBJ)); do \
echo -n $$( dirname $$i )/ ; \
cpp -MM -std=gnu++0x $$i; \
done
$(CXXCPP) $(CPPFLAGS) -x c++ -MM $$i; \
done > depend
./GpuResources.o: GpuResources.cpp GpuResources.h utils/DeviceMemory.h \
utils/DeviceUtils.h utils/../../FaissAssert.h \
utils/../../FaissException.h
./IndexProxy.o: IndexProxy.cpp IndexProxy.h ../Index.h utils/WorkerThread.h \
../FaissAssert.h ../FaissException.h ../Clustering.h ../Index.h \
GpuIndexFlat.h GpuIndex.h utils/MemorySpace.h utils/../../FaissAssert.h \
StandardGpuResources.h GpuResources.h utils/DeviceMemory.h \
utils/StackDeviceMemory.h utils/DeviceUtils.h
./StandardGpuResources.o: StandardGpuResources.cpp StandardGpuResources.h \
GpuResources.h utils/DeviceMemory.h utils/StackDeviceMemory.h \
utils/DeviceUtils.h utils/../../FaissAssert.h \
utils/../../FaissException.h ../FaissAssert.h
./GpuAutoTune.o: GpuAutoTune.cpp GpuAutoTune.h ../Index.h ../AutoTune.h \
../Index.h GpuClonerOptions.h GpuIndicesOptions.h GpuIndex.h \
utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h ../FaissAssert.h ../index_io.h \
../IndexFlat.h ../IndexIVF.h ../Clustering.h ../Heap.h ../IndexIVFPQ.h \
../IndexIVF.h ../IndexPQ.h ../ProductQuantizer.h ../PolysemousTraining.h \
../VectorTransform.h ../MetaIndexes.h GpuIndexFlat.h GpuIndexIVFFlat.h \
GpuIndexIVF.h ../Clustering.h GpuIndexIVFPQ.h IndexProxy.h \
utils/WorkerThread.h
./GpuClonerOptions.o: GpuClonerOptions.cpp GpuClonerOptions.h \
GpuIndicesOptions.h
impl/RemapIndices.o: impl/RemapIndices.cpp impl/RemapIndices.h \
impl/../../FaissAssert.h impl/../../FaissException.h
utils/DeviceMemory.o: utils/DeviceMemory.cpp utils/DeviceMemory.h \
utils/DeviceUtils.h utils/../../FaissAssert.h \
utils/../../FaissException.h
utils/StackDeviceMemory.o: utils/StackDeviceMemory.cpp \
utils/StackDeviceMemory.h utils/DeviceMemory.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/../../FaissException.h \
utils/StaticUtils.h
utils/DeviceUtils.o: utils/DeviceUtils.cpp utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/../../FaissException.h
utils/Timer.o: utils/Timer.cpp utils/Timer.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/../../FaissException.h
utils/MemorySpace.o: utils/MemorySpace.cpp utils/MemorySpace.h \
utils/../../FaissAssert.h utils/../../FaissException.h
utils/WorkerThread.o: utils/WorkerThread.cpp utils/WorkerThread.h \
utils/../../FaissAssert.h utils/../../FaissException.h
impl/BroadcastSum.o: impl/BroadcastSum.cu impl/../../FaissAssert.h \
impl/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/MathOperators.cuh \
impl/../utils/Float16.cuh impl/../utils/../GpuResources.h \
impl/../utils/../utils/DeviceMemory.h impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/StaticUtils.h
impl/Distance.o: impl/Distance.cu impl/Distance.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/BroadcastSum.cuh impl/L2Norm.cuh \
impl/L2Select.cuh impl/../../FaissAssert.h impl/../utils/Limits.cuh \
impl/../utils/Pair.cuh impl/../utils/MathOperators.cuh \
impl/../utils/WarpShuffles.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/MatrixMult.cuh impl/../utils/BlockSelectKernel.cuh \
impl/../utils/Select.cuh impl/../utils/Comparators.cuh \
impl/../utils/MergeNetworkBlock.cuh impl/../utils/MergeNetworkUtils.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/StaticUtils.h \
impl/../utils/MergeNetworkWarp.cuh impl/../utils/Reductions.cuh \
impl/../utils/ReductionOperators.cuh
impl/FlatIndex.o: impl/FlatIndex.cu impl/FlatIndex.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/DeviceVector.cuh \
impl/../utils/StaticUtils.h impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/Distance.cuh impl/L2Norm.cuh \
impl/../utils/CopyUtils.cuh impl/../utils/HostTensor.cuh \
impl/../utils/HostTensor-inl.cuh impl/../utils/Transpose.cuh
impl/InvertedListAppend.o: impl/InvertedListAppend.cu \
impl/InvertedListAppend.cuh impl/../GpuIndicesOptions.h \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../../FaissAssert.h \
impl/../utils/Float16.cuh impl/../utils/../GpuResources.h \
impl/../utils/../utils/DeviceMemory.h impl/../utils/DeviceTensor.cuh \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/StaticUtils.h
impl/IVFBase.o: impl/IVFBase.cu impl/IVFBase.cuh impl/../GpuIndicesOptions.h \
impl/../utils/DeviceVector.cuh impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/MemorySpace.h impl/../utils/StaticUtils.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor-inl.cuh impl/../GpuResources.h \
impl/FlatIndex.cuh impl/../utils/Float16.cuh impl/InvertedListAppend.cuh \
impl/RemapIndices.h impl/../utils/DeviceDefs.cuh \
impl/../utils/HostTensor.cuh impl/../utils/HostTensor-inl.cuh
impl/IVFFlat.o: impl/IVFFlat.cu impl/IVFFlat.cuh impl/IVFBase.cuh \
impl/../GpuIndicesOptions.h impl/../utils/DeviceVector.cuh \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/MemorySpace.h \
impl/../utils/StaticUtils.h impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/DeviceTensor-inl.cuh \
impl/../GpuResources.h impl/FlatIndex.cuh impl/../utils/Float16.cuh \
impl/InvertedListAppend.cuh impl/IVFFlatScan.cuh impl/RemapIndices.h \
impl/../utils/CopyUtils.cuh impl/../utils/HostTensor.cuh \
impl/../utils/HostTensor-inl.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/Transpose.cuh
impl/IVFFlatScan.o: impl/IVFFlatScan.cu impl/IVFFlatScan.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../GpuResources.h impl/../utils/DeviceMemory.h impl/IVFUtils.cuh \
impl/../utils/ConversionOperators.cuh impl/../utils/Float16.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/MathOperators.cuh impl/../utils/LoadStoreOperators.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/Reductions.cuh \
impl/../utils/ReductionOperators.cuh impl/../utils/Limits.cuh \
impl/../utils/Pair.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/StaticUtils.h
impl/IVFPQ.o: impl/IVFPQ.cu impl/IVFPQ.cuh impl/IVFBase.cuh \
impl/../GpuIndicesOptions.h impl/../utils/DeviceVector.cuh \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/MemorySpace.h \
impl/../utils/StaticUtils.h impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/Float16.cuh impl/../utils/../GpuResources.h \
impl/BroadcastSum.cuh impl/Distance.cuh impl/FlatIndex.cuh \
impl/InvertedListAppend.cuh impl/L2Norm.cuh impl/PQCodeDistances.cuh \
impl/../utils/NoTypeTensor.cuh impl/PQScanMultiPassNoPrecomputed.cuh \
impl/PQScanMultiPassPrecomputed.cuh impl/RemapIndices.h \
impl/VectorResidual.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/HostTensor.cuh impl/../utils/HostTensor-inl.cuh \
impl/../utils/MatrixMult.cuh impl/../utils/Transpose.cuh
impl/IVFUtils.o: impl/IVFUtils.cu impl/IVFUtils.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/StaticUtils.h impl/../utils/ThrustAllocator.cuh
impl/IVFUtilsSelect1.o: impl/IVFUtilsSelect1.cu impl/IVFUtils.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/Limits.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/Pair.cuh \
impl/../utils/MathOperators.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/Select.cuh \
impl/../utils/Comparators.cuh impl/../utils/MergeNetworkBlock.cuh \
impl/../utils/MergeNetworkUtils.cuh impl/../utils/PtxUtils.cuh \
impl/../utils/StaticUtils.h impl/../utils/MergeNetworkWarp.cuh \
impl/../utils/Reductions.cuh impl/../utils/ReductionOperators.cuh
impl/IVFUtilsSelect2.o: impl/IVFUtilsSelect2.cu impl/IVFUtils.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/Limits.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/Pair.cuh \
impl/../utils/MathOperators.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/Select.cuh \
impl/../utils/Comparators.cuh impl/../utils/MergeNetworkBlock.cuh \
impl/../utils/MergeNetworkUtils.cuh impl/../utils/PtxUtils.cuh \
impl/../utils/StaticUtils.h impl/../utils/MergeNetworkWarp.cuh \
impl/../utils/Reductions.cuh impl/../utils/ReductionOperators.cuh
impl/L2Norm.o: impl/L2Norm.cu impl/L2Norm.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../../FaissAssert.h impl/../utils/ConversionOperators.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/MathOperators.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/StaticUtils.h \
impl/../utils/Reductions.cuh impl/../utils/ReductionOperators.cuh \
impl/../utils/Limits.cuh impl/../utils/Pair.cuh \
impl/../utils/WarpShuffles.cuh
impl/L2Select.o: impl/L2Select.cu impl/L2Select.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../../FaissAssert.h impl/../utils/MathOperators.cuh \
impl/../utils/Pair.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/Reductions.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/ReductionOperators.cuh \
impl/../utils/Limits.cuh impl/../utils/StaticUtils.h \
impl/../utils/Select.cuh impl/../utils/Comparators.cuh \
impl/../utils/MergeNetworkBlock.cuh impl/../utils/MergeNetworkUtils.cuh \
impl/../utils/MergeNetworkWarp.cuh
impl/PQCodeDistances.o: impl/PQCodeDistances.cu impl/PQCodeDistances.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/NoTypeTensor.cuh \
impl/BroadcastSum.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/Distance.cuh impl/L2Norm.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/MatrixMult.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/StaticUtils.h \
impl/../utils/Transpose.cuh
impl/PQScanMultiPassNoPrecomputed.o: impl/PQScanMultiPassNoPrecomputed.cu \
impl/PQScanMultiPassNoPrecomputed.cuh impl/../GpuIndicesOptions.h \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../GpuResources.h \
impl/../utils/DeviceMemory.h impl/PQCodeDistances.cuh \
impl/../utils/NoTypeTensor.cuh impl/PQCodeLoad.cuh \
impl/../utils/PtxUtils.cuh impl/IVFUtils.cuh \
impl/../utils/ConversionOperators.cuh impl/../utils/Float16.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/LoadStoreOperators.cuh \
impl/../utils/StaticUtils.h impl/../utils/HostTensor.cuh \
impl/../utils/HostTensor-inl.cuh
impl/PQScanMultiPassPrecomputed.o: impl/PQScanMultiPassPrecomputed.cu \
impl/PQScanMultiPassPrecomputed.cuh impl/../GpuIndicesOptions.h \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/NoTypeTensor.cuh \
impl/../GpuResources.h impl/../utils/DeviceMemory.h impl/PQCodeLoad.cuh \
impl/../utils/PtxUtils.cuh impl/IVFUtils.cuh \
impl/../utils/ConversionOperators.cuh impl/../utils/Float16.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/LoadStoreOperators.cuh \
impl/../utils/MathOperators.cuh impl/../utils/StaticUtils.h
impl/VectorResidual.o: impl/VectorResidual.cu impl/VectorResidual.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../../FaissAssert.h \
impl/../utils/ConversionOperators.cuh impl/../utils/StaticUtils.h
./GpuIndex.o: GpuIndex.cu GpuIndex.h ../Index.h utils/MemorySpace.h \
utils/../../FaissAssert.h utils/../../FaissException.h ../FaissAssert.h \
GpuResources.h utils/DeviceMemory.h utils/DeviceUtils.h
./GpuIndexFlat.o: GpuIndexFlat.cu GpuIndexFlat.h GpuIndex.h ../Index.h \
utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h ../IndexFlat.h ../Index.h GpuResources.h \
utils/DeviceMemory.h impl/FlatIndex.cuh impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/DeviceVector.cuh \
impl/../utils/StaticUtils.h impl/../utils/Float16.cuh \
utils/CopyUtils.cuh utils/HostTensor.cuh utils/HostTensor-inl.cuh
./GpuIndexIVF.o: GpuIndexIVF.cu GpuIndexIVF.h GpuIndex.h ../Index.h \
utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h GpuIndexFlat.h GpuIndicesOptions.h \
../Clustering.h ../Index.h ../FaissAssert.h ../IndexFlat.h ../IndexIVF.h \
../Clustering.h ../Heap.h utils/DeviceUtils.h utils/Float16.cuh \
utils/../GpuResources.h utils/../utils/DeviceMemory.h \
utils/DeviceTensor.cuh utils/Tensor.cuh utils/Tensor-inl.cuh \
utils/../GpuFaissAssert.h utils/../../FaissAssert.h \
utils/DeviceTensor-inl.cuh
./GpuIndexIVFFlat.o: GpuIndexIVFFlat.cu GpuIndexIVFFlat.h GpuIndexIVF.h \
GpuIndex.h ../Index.h utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h GpuIndexFlat.h GpuIndicesOptions.h \
../Clustering.h ../Index.h ../IndexFlat.h ../IndexIVF.h ../Clustering.h \
../Heap.h GpuResources.h utils/DeviceMemory.h impl/IVFFlat.cuh \
impl/IVFBase.cuh impl/../utils/DeviceVector.cuh \
impl/../utils/../../FaissAssert.h impl/../utils/DeviceUtils.h \
impl/../utils/StaticUtils.h impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceTensor-inl.cuh utils/CopyUtils.cuh \
utils/HostTensor.cuh utils/HostTensor-inl.cuh utils/Float16.cuh
./GpuIndexIVFPQ.o: GpuIndexIVFPQ.cu GpuIndexIVFPQ.h GpuIndexIVF.h \
GpuIndex.h ../Index.h utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h GpuIndexFlat.h GpuIndicesOptions.h \
../Clustering.h ../Index.h ../IndexFlat.h ../IndexIVFPQ.h ../IndexIVF.h \
../Clustering.h ../Heap.h ../IndexPQ.h ../ProductQuantizer.h \
../PolysemousTraining.h ../ProductQuantizer.h GpuResources.h \
utils/DeviceMemory.h impl/IVFPQ.cuh impl/IVFBase.cuh \
impl/../utils/DeviceVector.cuh impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceUtils.h impl/../utils/StaticUtils.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/Float16.cuh utils/CopyUtils.cuh utils/HostTensor.cuh \
utils/HostTensor-inl.cuh
utils/Float16.o: utils/Float16.cu utils/Float16.cuh utils/../GpuResources.h \
utils/../utils/DeviceMemory.h utils/DeviceTensor.cuh utils/Tensor.cuh \
utils/Tensor-inl.cuh utils/../GpuFaissAssert.h utils/../../FaissAssert.h \
utils/../../FaissException.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/MemorySpace.h utils/DeviceTensor-inl.cuh \
utils/nvidia/fp16_emu.cuh
utils/MatrixMult.o: utils/MatrixMult.cu utils/MatrixMult.cuh utils/Float16.cuh \
utils/../GpuResources.h utils/../utils/DeviceMemory.h \
utils/DeviceTensor.cuh utils/Tensor.cuh utils/Tensor-inl.cuh \
utils/../GpuFaissAssert.h utils/../../FaissAssert.h \
utils/../../FaissException.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/MemorySpace.h utils/DeviceTensor-inl.cuh \
utils/HostTensor.cuh utils/HostTensor-inl.cuh
utils/BlockSelectFloat.o: utils/BlockSelectFloat.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/BlockSelectHalf.o: utils/BlockSelectHalf.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/WarpSelectFloat.o: utils/WarpSelectFloat.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/WarpSelectHalf.o: utils/WarpSelectHalf.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/nvidia/fp16_emu.o: utils/nvidia/fp16_emu.cu utils/nvidia/fp16_emu.cuh
utils/blockselect/BlockSelectHalf1.o: utils/blockselect/BlockSelectHalf1.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloat1.o: utils/blockselect/BlockSelectFloat1.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalf1.o: utils/warpselect/WarpSelectHalf1.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloat1.o: utils/warpselect/WarpSelectFloat1.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalf32.o: utils/blockselect/BlockSelectHalf32.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloat32.o: utils/blockselect/BlockSelectFloat32.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalf32.o: utils/warpselect/WarpSelectHalf32.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloat32.o: utils/warpselect/WarpSelectFloat32.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalf64.o: utils/blockselect/BlockSelectHalf64.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloat64.o: utils/blockselect/BlockSelectFloat64.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalf64.o: utils/warpselect/WarpSelectHalf64.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloat64.o: utils/warpselect/WarpSelectFloat64.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalf128.o: utils/blockselect/BlockSelectHalf128.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloat128.o: utils/blockselect/BlockSelectFloat128.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalf128.o: utils/warpselect/WarpSelectHalf128.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloat128.o: utils/warpselect/WarpSelectFloat128.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalf256.o: utils/blockselect/BlockSelectHalf256.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloat256.o: utils/blockselect/BlockSelectFloat256.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalf256.o: utils/warpselect/WarpSelectHalf256.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloat256.o: utils/warpselect/WarpSelectFloat256.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalfF512.o: utils/blockselect/BlockSelectHalfF512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloatF512.o: utils/blockselect/BlockSelectFloatF512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalfF512.o: utils/warpselect/WarpSelectHalfF512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloatF512.o: utils/warpselect/WarpSelectFloatF512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalfT512.o: utils/blockselect/BlockSelectHalfT512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloatT512.o: utils/blockselect/BlockSelectFloatT512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalfT512.o: utils/warpselect/WarpSelectHalfT512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloatT512.o: utils/warpselect/WarpSelectFloatT512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalfF1024.o: utils/blockselect/BlockSelectHalfF1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloatF1024.o: utils/blockselect/BlockSelectFloatF1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalfF1024.o: utils/warpselect/WarpSelectHalfF1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloatF1024.o: utils/warpselect/WarpSelectFloatF1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/blockselect/BlockSelectHalfT1024.o: utils/blockselect/BlockSelectHalfT1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/blockselect/BlockSelectFloatT1024.o: utils/blockselect/BlockSelectFloatT1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
utils/warpselect/WarpSelectHalfT1024.o: utils/warpselect/WarpSelectHalfT1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
utils/warpselect/WarpSelectFloatT1024.o: utils/warpselect/WarpSelectFloatT1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
.PHONY: all clean
GpuResources.o: GpuResources.cpp GpuResources.h utils/DeviceMemory.h \
utils/DeviceUtils.h utils/../../FaissAssert.h \
utils/../../FaissException.h
IndexProxy.o: IndexProxy.cpp IndexProxy.h ../Index.h utils/WorkerThread.h \
../FaissAssert.h ../FaissException.h ../Clustering.h ../Index.h \
GpuIndexFlat.h GpuIndex.h utils/MemorySpace.h utils/../../FaissAssert.h \
StandardGpuResources.h GpuResources.h utils/DeviceMemory.h \
utils/StackDeviceMemory.h utils/DeviceUtils.h
StandardGpuResources.o: StandardGpuResources.cpp StandardGpuResources.h \
GpuResources.h utils/DeviceMemory.h utils/StackDeviceMemory.h \
utils/DeviceUtils.h utils/../../FaissAssert.h \
utils/../../FaissException.h ../FaissAssert.h
GpuAutoTune.o: GpuAutoTune.cpp GpuAutoTune.h ../Index.h ../AutoTune.h \
../Index.h GpuClonerOptions.h GpuIndicesOptions.h GpuIndex.h \
utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h ../FaissAssert.h ../index_io.h \
../IndexFlat.h ../IndexIVF.h ../Clustering.h ../Heap.h ../IndexIVFFlat.h \
../IndexIVF.h ../IndexIVFPQ.h ../IndexPQ.h ../ProductQuantizer.h \
../PolysemousTraining.h ../VectorTransform.h ../MetaIndexes.h \
GpuIndexFlat.h GpuIndexIVFFlat.h GpuIndexIVF.h ../Clustering.h \
GpuIndexIVFPQ.h IndexProxy.h utils/WorkerThread.h
GpuClonerOptions.o: GpuClonerOptions.cpp GpuClonerOptions.h \
GpuIndicesOptions.h
RemapIndices.o: impl/RemapIndices.cpp impl/RemapIndices.h \
impl/../../FaissAssert.h impl/../../FaissException.h
DeviceMemory.o: utils/DeviceMemory.cpp utils/DeviceMemory.h \
utils/DeviceUtils.h utils/../../FaissAssert.h \
utils/../../FaissException.h
StackDeviceMemory.o: utils/StackDeviceMemory.cpp \
utils/StackDeviceMemory.h utils/DeviceMemory.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/../../FaissException.h \
utils/StaticUtils.h
DeviceUtils.o: utils/DeviceUtils.cpp utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/../../FaissException.h
Timer.o: utils/Timer.cpp utils/Timer.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/../../FaissException.h
MemorySpace.o: utils/MemorySpace.cpp utils/MemorySpace.h \
utils/../../FaissAssert.h utils/../../FaissException.h
WorkerThread.o: utils/WorkerThread.cpp utils/WorkerThread.h \
utils/../../FaissAssert.h utils/../../FaissException.h
BroadcastSum.o: impl/BroadcastSum.cu impl/../../FaissAssert.h \
impl/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/MathOperators.cuh \
impl/../utils/Float16.cuh impl/../utils/../GpuResources.h \
impl/../utils/../utils/DeviceMemory.h impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/StaticUtils.h
Distance.o: impl/Distance.cu impl/Distance.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/BroadcastSum.cuh impl/L2Norm.cuh \
impl/L2Select.cuh impl/../../FaissAssert.h impl/../utils/Limits.cuh \
impl/../utils/Pair.cuh impl/../utils/MathOperators.cuh \
impl/../utils/WarpShuffles.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/MatrixMult.cuh impl/../utils/BlockSelectKernel.cuh \
impl/../utils/Select.cuh impl/../utils/Comparators.cuh \
impl/../utils/MergeNetworkBlock.cuh impl/../utils/MergeNetworkUtils.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/StaticUtils.h \
impl/../utils/MergeNetworkWarp.cuh impl/../utils/Reductions.cuh \
impl/../utils/ReductionOperators.cuh
FlatIndex.o: impl/FlatIndex.cu impl/FlatIndex.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/DeviceVector.cuh \
impl/../utils/StaticUtils.h impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/Distance.cuh impl/L2Norm.cuh \
impl/../utils/CopyUtils.cuh impl/../utils/HostTensor.cuh \
impl/../utils/HostTensor-inl.cuh impl/../utils/Transpose.cuh
InvertedListAppend.o: impl/InvertedListAppend.cu \
impl/InvertedListAppend.cuh impl/../GpuIndicesOptions.h \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../../FaissAssert.h \
impl/../utils/Float16.cuh impl/../utils/../GpuResources.h \
impl/../utils/../utils/DeviceMemory.h impl/../utils/DeviceTensor.cuh \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/StaticUtils.h
IVFBase.o: impl/IVFBase.cu impl/IVFBase.cuh impl/../GpuIndicesOptions.h \
impl/../utils/DeviceVector.cuh impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/MemorySpace.h impl/../utils/StaticUtils.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor-inl.cuh impl/../GpuResources.h \
impl/FlatIndex.cuh impl/../utils/Float16.cuh impl/InvertedListAppend.cuh \
impl/RemapIndices.h impl/../utils/DeviceDefs.cuh \
impl/../utils/HostTensor.cuh impl/../utils/HostTensor-inl.cuh
IVFFlat.o: impl/IVFFlat.cu impl/IVFFlat.cuh impl/IVFBase.cuh \
impl/../GpuIndicesOptions.h impl/../utils/DeviceVector.cuh \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/MemorySpace.h \
impl/../utils/StaticUtils.h impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/DeviceTensor-inl.cuh \
impl/../GpuResources.h impl/FlatIndex.cuh impl/../utils/Float16.cuh \
impl/InvertedListAppend.cuh impl/IVFFlatScan.cuh impl/RemapIndices.h \
impl/../utils/CopyUtils.cuh impl/../utils/HostTensor.cuh \
impl/../utils/HostTensor-inl.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/Transpose.cuh
IVFFlatScan.o: impl/IVFFlatScan.cu impl/IVFFlatScan.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../GpuResources.h impl/../utils/DeviceMemory.h impl/IVFUtils.cuh \
impl/../utils/ConversionOperators.cuh impl/../utils/Float16.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/MathOperators.cuh impl/../utils/LoadStoreOperators.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/Reductions.cuh \
impl/../utils/ReductionOperators.cuh impl/../utils/Limits.cuh \
impl/../utils/Pair.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/StaticUtils.h
IVFPQ.o: impl/IVFPQ.cu impl/IVFPQ.cuh impl/IVFBase.cuh \
impl/../GpuIndicesOptions.h impl/../utils/DeviceVector.cuh \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/MemorySpace.h \
impl/../utils/StaticUtils.h impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceMemory.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/Float16.cuh impl/../utils/../GpuResources.h \
impl/BroadcastSum.cuh impl/Distance.cuh impl/FlatIndex.cuh \
impl/InvertedListAppend.cuh impl/L2Norm.cuh impl/PQCodeDistances.cuh \
impl/../utils/NoTypeTensor.cuh impl/PQScanMultiPassNoPrecomputed.cuh \
impl/PQScanMultiPassPrecomputed.cuh impl/RemapIndices.h \
impl/VectorResidual.cuh impl/../utils/DeviceDefs.cuh \
impl/../utils/HostTensor.cuh impl/../utils/HostTensor-inl.cuh \
impl/../utils/MatrixMult.cuh impl/../utils/Transpose.cuh
IVFUtils.o: impl/IVFUtils.cu impl/IVFUtils.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/StaticUtils.h impl/../utils/ThrustAllocator.cuh
IVFUtilsSelect1.o: impl/IVFUtilsSelect1.cu impl/IVFUtils.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/Limits.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/Pair.cuh \
impl/../utils/MathOperators.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/Select.cuh \
impl/../utils/Comparators.cuh impl/../utils/MergeNetworkBlock.cuh \
impl/../utils/MergeNetworkUtils.cuh impl/../utils/PtxUtils.cuh \
impl/../utils/StaticUtils.h impl/../utils/MergeNetworkWarp.cuh \
impl/../utils/Reductions.cuh impl/../utils/ReductionOperators.cuh
IVFUtilsSelect2.o: impl/IVFUtilsSelect2.cu impl/IVFUtils.cuh \
impl/../GpuIndicesOptions.h impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/Limits.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/Pair.cuh \
impl/../utils/MathOperators.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/Select.cuh \
impl/../utils/Comparators.cuh impl/../utils/MergeNetworkBlock.cuh \
impl/../utils/MergeNetworkUtils.cuh impl/../utils/PtxUtils.cuh \
impl/../utils/StaticUtils.h impl/../utils/MergeNetworkWarp.cuh \
impl/../utils/Reductions.cuh impl/../utils/ReductionOperators.cuh
L2Norm.o: impl/L2Norm.cu impl/L2Norm.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../../FaissAssert.h impl/../utils/ConversionOperators.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/MathOperators.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/StaticUtils.h \
impl/../utils/Reductions.cuh impl/../utils/ReductionOperators.cuh \
impl/../utils/Limits.cuh impl/../utils/Pair.cuh \
impl/../utils/WarpShuffles.cuh
L2Select.o: impl/L2Select.cu impl/L2Select.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/../../FaissException.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/MemorySpace.h impl/../utils/DeviceTensor-inl.cuh \
impl/../../FaissAssert.h impl/../utils/MathOperators.cuh \
impl/../utils/Pair.cuh impl/../utils/WarpShuffles.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/Reductions.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/ReductionOperators.cuh \
impl/../utils/Limits.cuh impl/../utils/StaticUtils.h \
impl/../utils/Select.cuh impl/../utils/Comparators.cuh \
impl/../utils/MergeNetworkBlock.cuh impl/../utils/MergeNetworkUtils.cuh \
impl/../utils/MergeNetworkWarp.cuh
PQCodeDistances.o: impl/PQCodeDistances.cu impl/PQCodeDistances.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/NoTypeTensor.cuh \
impl/BroadcastSum.cuh impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/Distance.cuh impl/L2Norm.cuh \
impl/../utils/DeviceDefs.cuh impl/../utils/MatrixMult.cuh \
impl/../utils/PtxUtils.cuh impl/../utils/StaticUtils.h \
impl/../utils/Transpose.cuh
PQScanMultiPassNoPrecomputed.o: impl/PQScanMultiPassNoPrecomputed.cu \
impl/PQScanMultiPassNoPrecomputed.cuh impl/../GpuIndicesOptions.h \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../GpuResources.h \
impl/../utils/DeviceMemory.h impl/PQCodeDistances.cuh \
impl/../utils/NoTypeTensor.cuh impl/PQCodeLoad.cuh \
impl/../utils/PtxUtils.cuh impl/IVFUtils.cuh \
impl/../utils/ConversionOperators.cuh impl/../utils/Float16.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/LoadStoreOperators.cuh \
impl/../utils/StaticUtils.h impl/../utils/HostTensor.cuh \
impl/../utils/HostTensor-inl.cuh
PQScanMultiPassPrecomputed.o: impl/PQScanMultiPassPrecomputed.cu \
impl/PQScanMultiPassPrecomputed.cuh impl/../GpuIndicesOptions.h \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/NoTypeTensor.cuh \
impl/../GpuResources.h impl/../utils/DeviceMemory.h impl/PQCodeLoad.cuh \
impl/../utils/PtxUtils.cuh impl/IVFUtils.cuh \
impl/../utils/ConversionOperators.cuh impl/../utils/Float16.cuh \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/LoadStoreOperators.cuh \
impl/../utils/MathOperators.cuh impl/../utils/StaticUtils.h
VectorResidual.o: impl/VectorResidual.cu impl/VectorResidual.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/../../FaissException.h impl/../utils/DeviceUtils.h \
impl/../utils/../../FaissAssert.h impl/../utils/Float16.cuh \
impl/../utils/../GpuResources.h impl/../utils/../utils/DeviceMemory.h \
impl/../utils/DeviceTensor.cuh impl/../utils/MemorySpace.h \
impl/../utils/DeviceTensor-inl.cuh impl/../../FaissAssert.h \
impl/../utils/ConversionOperators.cuh impl/../utils/StaticUtils.h
GpuIndex.o: GpuIndex.cu GpuIndex.h ../Index.h utils/MemorySpace.h \
utils/../../FaissAssert.h utils/../../FaissException.h ../FaissAssert.h \
GpuResources.h utils/DeviceMemory.h utils/DeviceUtils.h
GpuIndexFlat.o: GpuIndexFlat.cu GpuIndexFlat.h GpuIndex.h ../Index.h \
utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h ../IndexFlat.h ../Index.h GpuResources.h \
utils/DeviceMemory.h impl/FlatIndex.cuh impl/../utils/DeviceTensor.cuh \
impl/../utils/Tensor.cuh impl/../utils/Tensor-inl.cuh \
impl/../utils/../GpuFaissAssert.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceUtils.h impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceTensor-inl.cuh impl/../utils/DeviceVector.cuh \
impl/../utils/StaticUtils.h impl/../utils/Float16.cuh \
utils/CopyUtils.cuh utils/HostTensor.cuh utils/HostTensor-inl.cuh
GpuIndexIVF.o: GpuIndexIVF.cu GpuIndexIVF.h GpuIndex.h ../Index.h \
utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h GpuIndexFlat.h GpuIndicesOptions.h \
../Clustering.h ../Index.h ../FaissAssert.h ../IndexFlat.h ../IndexIVF.h \
../Clustering.h ../Heap.h utils/DeviceUtils.h utils/Float16.cuh \
utils/../GpuResources.h utils/../utils/DeviceMemory.h \
utils/DeviceTensor.cuh utils/Tensor.cuh utils/Tensor-inl.cuh \
utils/../GpuFaissAssert.h utils/../../FaissAssert.h \
utils/DeviceTensor-inl.cuh
GpuIndexIVFFlat.o: GpuIndexIVFFlat.cu GpuIndexIVFFlat.h GpuIndexIVF.h \
GpuIndex.h ../Index.h utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h GpuIndexFlat.h GpuIndicesOptions.h \
../Clustering.h ../Index.h ../IndexFlat.h ../IndexIVFFlat.h \
../IndexIVF.h ../Clustering.h ../Heap.h GpuResources.h \
utils/DeviceMemory.h impl/IVFFlat.cuh impl/IVFBase.cuh \
impl/../utils/DeviceVector.cuh impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceUtils.h impl/../utils/StaticUtils.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/DeviceTensor-inl.cuh \
utils/CopyUtils.cuh utils/HostTensor.cuh utils/HostTensor-inl.cuh \
utils/Float16.cuh
GpuIndexIVFPQ.o: GpuIndexIVFPQ.cu GpuIndexIVFPQ.h GpuIndexIVF.h \
GpuIndex.h ../Index.h utils/MemorySpace.h utils/../../FaissAssert.h \
utils/../../FaissException.h GpuIndexFlat.h GpuIndicesOptions.h \
../Clustering.h ../Index.h ../IndexFlat.h ../IndexIVFPQ.h ../IndexIVF.h \
../Clustering.h ../Heap.h ../IndexPQ.h ../ProductQuantizer.h \
../PolysemousTraining.h ../ProductQuantizer.h GpuResources.h \
utils/DeviceMemory.h impl/IVFPQ.cuh impl/IVFBase.cuh \
impl/../utils/DeviceVector.cuh impl/../utils/../../FaissAssert.h \
impl/../utils/DeviceUtils.h impl/../utils/StaticUtils.h \
impl/../utils/DeviceTensor.cuh impl/../utils/Tensor.cuh \
impl/../utils/Tensor-inl.cuh impl/../utils/../GpuFaissAssert.h \
impl/../utils/../../FaissAssert.h impl/../utils/DeviceTensor-inl.cuh \
impl/../utils/Float16.cuh utils/CopyUtils.cuh utils/HostTensor.cuh \
utils/HostTensor-inl.cuh
Float16.o: utils/Float16.cu utils/Float16.cuh utils/../GpuResources.h \
utils/../utils/DeviceMemory.h utils/DeviceTensor.cuh utils/Tensor.cuh \
utils/Tensor-inl.cuh utils/../GpuFaissAssert.h utils/../../FaissAssert.h \
utils/../../FaissException.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/MemorySpace.h utils/DeviceTensor-inl.cuh \
utils/nvidia/fp16_emu.cuh
MatrixMult.o: utils/MatrixMult.cu utils/MatrixMult.cuh utils/Float16.cuh \
utils/../GpuResources.h utils/../utils/DeviceMemory.h \
utils/DeviceTensor.cuh utils/Tensor.cuh utils/Tensor-inl.cuh \
utils/../GpuFaissAssert.h utils/../../FaissAssert.h \
utils/../../FaissException.h utils/DeviceUtils.h \
utils/../../FaissAssert.h utils/MemorySpace.h utils/DeviceTensor-inl.cuh \
utils/HostTensor.cuh utils/HostTensor-inl.cuh
BlockSelectFloat.o: utils/BlockSelectFloat.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectHalf.o: utils/BlockSelectHalf.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectFloat.o: utils/WarpSelectFloat.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectHalf.o: utils/WarpSelectHalf.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
fp16_emu.o: utils/nvidia/fp16_emu.cu utils/nvidia/fp16_emu.cuh
BlockSelectHalf1.o: utils/blockselect/BlockSelectHalf1.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloat1.o: utils/blockselect/BlockSelectFloat1.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalf1.o: utils/warpselect/WarpSelectHalf1.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloat1.o: utils/warpselect/WarpSelectFloat1.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalf32.o: utils/blockselect/BlockSelectHalf32.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloat32.o: utils/blockselect/BlockSelectFloat32.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalf32.o: utils/warpselect/WarpSelectHalf32.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloat32.o: utils/warpselect/WarpSelectFloat32.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalf64.o: utils/blockselect/BlockSelectHalf64.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloat64.o: utils/blockselect/BlockSelectFloat64.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalf64.o: utils/warpselect/WarpSelectHalf64.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloat64.o: utils/warpselect/WarpSelectFloat64.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalf128.o: utils/blockselect/BlockSelectHalf128.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloat128.o: utils/blockselect/BlockSelectFloat128.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalf128.o: utils/warpselect/WarpSelectHalf128.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloat128.o: utils/warpselect/WarpSelectFloat128.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalf256.o: utils/blockselect/BlockSelectHalf256.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloat256.o: utils/blockselect/BlockSelectFloat256.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalf256.o: utils/warpselect/WarpSelectHalf256.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloat256.o: utils/warpselect/WarpSelectFloat256.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalfF512.o: utils/blockselect/BlockSelectHalfF512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloatF512.o: utils/blockselect/BlockSelectFloatF512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalfF512.o: utils/warpselect/WarpSelectHalfF512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloatF512.o: utils/warpselect/WarpSelectFloatF512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalfT512.o: utils/blockselect/BlockSelectHalfT512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloatT512.o: utils/blockselect/BlockSelectFloatT512.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalfT512.o: utils/warpselect/WarpSelectHalfT512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloatT512.o: utils/warpselect/WarpSelectFloatT512.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalfF1024.o: utils/blockselect/BlockSelectHalfF1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloatF1024.o: utils/blockselect/BlockSelectFloatF1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalfF1024.o: utils/warpselect/WarpSelectHalfF1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloatF1024.o: utils/warpselect/WarpSelectFloatF1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
BlockSelectHalfT1024.o: utils/blockselect/BlockSelectHalfT1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
BlockSelectFloatT1024.o: utils/blockselect/BlockSelectFloatT1024.cu \
utils/blockselect/BlockSelectImpl.cuh \
utils/blockselect/../BlockSelectKernel.cuh \
utils/blockselect/../Float16.cuh utils/blockselect/../../GpuResources.h \
utils/blockselect/../../utils/DeviceMemory.h \
utils/blockselect/../DeviceTensor.cuh utils/blockselect/../Tensor.cuh \
utils/blockselect/../Tensor-inl.cuh \
utils/blockselect/../../GpuFaissAssert.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../../../FaissException.h \
utils/blockselect/../DeviceUtils.h \
utils/blockselect/../../../FaissAssert.h \
utils/blockselect/../MemorySpace.h \
utils/blockselect/../DeviceTensor-inl.cuh \
utils/blockselect/../Select.cuh utils/blockselect/../Comparators.cuh \
utils/blockselect/../DeviceDefs.cuh \
utils/blockselect/../MergeNetworkBlock.cuh \
utils/blockselect/../MergeNetworkUtils.cuh \
utils/blockselect/../PtxUtils.cuh utils/blockselect/../StaticUtils.h \
utils/blockselect/../WarpShuffles.cuh \
utils/blockselect/../MergeNetworkWarp.cuh \
utils/blockselect/../Reductions.cuh \
utils/blockselect/../ReductionOperators.cuh \
utils/blockselect/../Limits.cuh utils/blockselect/../Pair.cuh \
utils/blockselect/../MathOperators.cuh
WarpSelectHalfT1024.o: utils/warpselect/WarpSelectHalfT1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
WarpSelectFloatT1024.o: utils/warpselect/WarpSelectFloatT1024.cu \
utils/warpselect/WarpSelectImpl.cuh \
utils/warpselect/../WarpSelectKernel.cuh utils/warpselect/../Float16.cuh \
utils/warpselect/../../GpuResources.h \
utils/warpselect/../../utils/DeviceMemory.h \
utils/warpselect/../DeviceTensor.cuh utils/warpselect/../Tensor.cuh \
utils/warpselect/../Tensor-inl.cuh \
utils/warpselect/../../GpuFaissAssert.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../../../FaissException.h \
utils/warpselect/../DeviceUtils.h \
utils/warpselect/../../../FaissAssert.h \
utils/warpselect/../MemorySpace.h \
utils/warpselect/../DeviceTensor-inl.cuh utils/warpselect/../Select.cuh \
utils/warpselect/../Comparators.cuh utils/warpselect/../DeviceDefs.cuh \
utils/warpselect/../MergeNetworkBlock.cuh \
utils/warpselect/../MergeNetworkUtils.cuh \
utils/warpselect/../PtxUtils.cuh utils/warpselect/../StaticUtils.h \
utils/warpselect/../WarpShuffles.cuh \
utils/warpselect/../MergeNetworkWarp.cuh \
utils/warpselect/../Reductions.cuh \
utils/warpselect/../ReductionOperators.cuh \
utils/warpselect/../Limits.cuh utils/warpselect/../Pair.cuh \
utils/warpselect/../MathOperators.cuh
# 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
demo_ivfpq_indexing_gpu: demo_ivfpq_indexing_gpu.cpp ../../libfaiss.a ../libgpufaiss.a
$(NVCC) $(NVCCFLAGS) -o $@ $^ $(NVCCLDFLAGS) $(LIBS) $(NVCCLIBS)
clean:
rm -f demo_ivfpq_indexing_gpu
.PHONY: clean
# 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.
CXX = @CXX@
CXXCPP = @CXXCPP@
# NOTE: Change to `-DFINTEGER=long` if using MKL.
# TODO: Investigate the LAPACKE wrapper for LAPACK, which defines the correct
# type for FORTRAN integers.
CPPFLAGS = -DFINTEGER=int @CPPFLAGS@
CXXFLAGS = -fPIC @OPENMP_CXXFLAGS@ -m64 -Wno-sign-compare @CXXFLAGS@
CPUFLAGS = -msse4 -mpopcnt
LDFLAGS = @OPENMP_CXXFLAGS@ @LDFLAGS@
LIBS = @BLAS_LIBS@ @LAPACK_LIBS@ @LIBS@
PYTHONCFLAGS = @PYTHON_CFLAGS@ -I@NUMPY_INCLUDE@
NVCC = @NVCC@
NVCCLDFLAGS = @NVCC_LDFLAGS@
NVCCLIBS = @NVCC_LIBS@
CUDAROOT = @CUDA_PREFIX@
CUDACFLAGS = @NVCC_CPPFLAGS@
NVCCFLAGS = -I $(CUDAROOT)/targets/x86_64-linux/include/ \
-Xcompiler -fPIC \
-Xcudafe --diag_suppress=unrecognized_attribute \
-gencode arch=compute_35,code="compute_35" \
-gencode arch=compute_52,code="compute_52" \
-gencode arch=compute_60,code="compute_60" \
-lineinfo \
-ccbin $(CXX) -DFAISS_USE_FLOAT16
OS = $(shell uname -s)
SHAREDEXT = so
SHAREDFLAGS = -shared
ifeq ($(OS),Darwin)
SHAREDEXT = dylib
SHAREDFLAGS = -dynamiclib -undefined dynamic_lookup
endif
MKDIR_P = @MKDIR_P@
PYTHON = @PYTHON@
SWIG = @SWIG@
prefix ?= @prefix@
exec_prefix ?= @exec_prefix@
libdir = @libdir@
includedir = @includedir@
# 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
HEADERS = $(wildcard ../*.h)
all: cpu
#############################
# CPU
cpu: _swigfaiss.so
# Also silently generates swigfaiss.py.
swigfaiss_wrap.cpp: swigfaiss.swig $(HEADERS)
$(SWIG) -python -c++ -Doverride= -I../ -o $@ $<
swigfaiss_wrap.o: swigfaiss_wrap.cpp
$(CXX) $(CXXFLAGS) $(CPUFLAGS) $(PYTHONCFLAGS) -I../ -c $< -o $@
# Extension is .so even on OSX.
_swigfaiss.so: swigfaiss_wrap.o ../libfaiss.a
$(CXX) $(SHAREDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
#############################
# GPU
gpu: _swigfaiss_gpu.so
# Also silently generates swigfaiss.py.
swigfaiss_gpu_wrap.cpp: swigfaiss.swig
$(SWIG) -python -c++ -Doverride= -I../ -DGPU_WRAPPER -o $@ $<
swigfaiss_gpu_wrap.o: swigfaiss_gpu_wrap.cpp
$(NVCC) $(NVCCFLAGS) $(PYTHONCFLAGS) -I../ -c $< -o $@
_swigfaiss_gpu.so: swigfaiss_gpu_wrap.o ../gpu/libgpufaiss.a ../libfaiss.a
$(CXX) $(SHAREDFLAGS) $(NVCCLDFLAGS) -o $@ $^ $(NVCCLIBS)
clean:
rm -f swigfaiss_wrap.cpp swigfaiss_gpu_wrap.cpp
rm -f swigfaiss.py swigfaiss_gpu.py
rm -f _swigfaiss.so _swigfaiss_gpu.so
test: _swigfaiss.so
PYTHONPATH=./ $(PYTHON) -m unittest discover tests/ -v
.PHONY: all clean cpu gpu test
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
MAKEFILE_INC=../makefile.inc
# 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)
-include ../makefile.inc
CC_TESTS = test_ivfpq_indexing test_ivfpq_codec test_merge test_ondisk_ivf test_pairs_decoding
TESTS_SRC = $(wildcard *.cpp)
TESTS = $(TESTS_SRC:.cpp=.o)
all: $(CC_TESTS) ../py
all: run
run: all
./run_tests.sh
run: tests
./tests
%: %.cpp ../libfaiss.a gtest/make/gtest_main.a
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(BLASLDFLAGS) \
-Igtest/include -I../..
tests: $(TESTS) ../libfaiss.a gtest/make/gtest_main.a
$(CXX) -o $@ $^ $(LDFLAGS) $(LIBS)
../libfaiss.a:
cd ../ && make libfaiss.a
../py:
cd ../ && make py
%.o: %.cpp gtest
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CPUFLAGS) -c -o $@ $< -Igtest/include -I../..
gtest/make/gtest_main.a: gtest
cd gtest/make && make CXX=$(CC) gtest_main.a
make -C gtest/make CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" gtest_main.a
gtest:
curl -L https://github.com/google/googletest/archive/release-1.8.0.tar.gz | tar xz && \
......@@ -28,4 +29,9 @@ gtest:
rm -rf googletest-release-1.8.0
clean:
rm -rf $(CC_TESTS) gtest
rm -f test_runner
rm -f *.o
rm -rf gtest
.PHONY: all clean run
#!/bin/sh
PYTHON=${PYTHON:-"python"}
make
for t in test_*.py; do
PYTHONPATH=.. $PYTHON $t || exit 1
done
for t in test_*.cpp; do
if [ "$t" != "test_blas.cpp" ]; then
./${t%.*} || exit 1
fi
done
......@@ -16,6 +16,8 @@
#include <faiss/utils.h>
namespace {
// dimension of the vectors to index
int d = 64;
......@@ -43,6 +45,7 @@ double eval_codec_error (long ncentroids, long m, const std::vector<float> &v)
return faiss::fvec_L2sqr (v.data(), v2.data(), nb * d);
}
} // namespace
TEST(IVFPQ, codec) {
......
......@@ -20,21 +20,21 @@
#include <faiss/OnDiskInvertedLists.h>
namespace faiss {
namespace {
// Main function to test
// Merge index1 into index0. Works on IndexIVF's and IndexIVF's
// embedded in a IndexPreTransform
void merge_into(Index *index0, Index *index1, bool shift_ids) {
void merge_into(faiss::Index *index0, faiss::Index *index1, bool shift_ids) {
FAISS_THROW_IF_NOT (index0->d == index1->d);
IndexIVF *ivf0 = dynamic_cast<IndexIVF *>(index0);
IndexIVF *ivf1 = dynamic_cast<IndexIVF *>(index1);
faiss::IndexIVF *ivf0 = dynamic_cast<faiss::IndexIVF *>(index0);
faiss::IndexIVF *ivf1 = dynamic_cast<faiss::IndexIVF *>(index1);
if (!ivf0) {
IndexPreTransform *pt0 = dynamic_cast<IndexPreTransform *>(index0);
IndexPreTransform *pt1 = dynamic_cast<IndexPreTransform *>(index1);
faiss::IndexPreTransform *pt0 = dynamic_cast<faiss::IndexPreTransform *>(index0);
faiss::IndexPreTransform *pt1 = dynamic_cast<faiss::IndexPreTransform *>(index1);
// minimal sanity check
FAISS_THROW_IF_NOT (pt0 && pt1);
......@@ -43,8 +43,8 @@ void merge_into(Index *index0, Index *index1, bool shift_ids) {
FAISS_THROW_IF_NOT (typeid(pt0->chain[i]) == typeid(pt1->chain[i]));
}
ivf0 = dynamic_cast<IndexIVF *>(pt0->index);
ivf1 = dynamic_cast<IndexIVF *>(pt1->index);
ivf0 = dynamic_cast<faiss::IndexIVF *>(pt0->index);
ivf1 = dynamic_cast<faiss::IndexIVF *>(pt1->index);
}
FAISS_THROW_IF_NOT (ivf0);
......@@ -57,8 +57,6 @@ void merge_into(Index *index0, Index *index1, bool shift_ids) {
index1->ntotal = ivf1->ntotal;
}
};
struct Tempfilename {
......@@ -184,6 +182,8 @@ int compare_merged (faiss::IndexShards *index_shards, bool shift_ids,
return ndiff;
}
} // namespace
// test on IVFFlat with implicit numbering
TEST(MERGE, merge_flat_no_ids) {
......
......@@ -23,6 +23,7 @@
#include <faiss/index_io.h>
namespace {
struct Tempfilename {
......@@ -50,6 +51,8 @@ struct Tempfilename {
pthread_mutex_t Tempfilename::mutex = PTHREAD_MUTEX_INITIALIZER;
} // namespace
TEST(ONDISK, make_invlists) {
int nlist = 100;
......
......@@ -19,6 +19,10 @@
#include <faiss/VectorTransform.h>
namespace {
typedef faiss::Index::idx_t idx_t;
/*************************************************************
* The functions to test, that can be useful in FANN
*************************************************************/
......@@ -34,7 +38,7 @@
*/
void Search_centroid(faiss::Index *index,
const float* embeddings, int num_objects,
int64_t* centroid_ids)
idx_t* centroid_ids)
{
const float *x = embeddings;
std::unique_ptr<float[]> del;
......@@ -65,9 +69,9 @@ void search_and_retrun_centroids(faiss::Index *index,
const float* xin,
long k,
float *distances,
int64_t* labels,
int64_t* query_centroid_ids,
int64_t* result_centroid_ids)
idx_t* labels,
idx_t* query_centroid_ids,
idx_t* result_centroid_ids)
{
const float *x = xin;
std::unique_ptr<float []> del;
......@@ -80,7 +84,7 @@ void search_and_retrun_centroids(faiss::Index *index,
assert(index_ivf);
size_t nprobe = index_ivf->nprobe;
std::vector<long> cent_nos (n * nprobe);
std::vector<idx_t> cent_nos (n * nprobe);
std::vector<float> cent_dis (n * nprobe);
index_ivf->quantizer->search(
n, x, nprobe, cent_dis.data(), cent_nos.data());
......@@ -95,7 +99,7 @@ void search_and_retrun_centroids(faiss::Index *index,
distances, labels, true);
for (size_t i = 0; i < n * k; i++) {
int64_t label = labels[i];
idx_t label = labels[i];
if (label < 0) {
if (result_centroid_ids)
result_centroid_ids[i] = -1;
......@@ -166,7 +170,7 @@ bool test_Search_centroid(const char *index_key) {
vectors and make sure that each vector does indeed appear in
the inverted list corresponding to its centroid */
std::vector<int64_t> centroid_ids (nb);
std::vector<idx_t> centroid_ids (nb);
Search_centroid(index.get(), xb.data(), nb, centroid_ids.data());
const faiss::IndexIVF * ivf = get_IndexIVF(index.get());
......@@ -192,7 +196,7 @@ int test_search_and_return_centroids(const char *index_key) {
std::vector<float> xb = make_data(nb); // database vectors
auto index = make_index(index_key, xb);
std::vector<int64_t> centroid_ids (nb);
std::vector<idx_t> centroid_ids (nb);
Search_centroid(index.get(), xb.data(), nb, centroid_ids.data());
faiss::IndexIVF * ivf = get_IndexIVF(index.get());
......@@ -204,17 +208,17 @@ int test_search_and_return_centroids(const char *index_key) {
// compute a reference search result
std::vector<long> refI (nq * k);
std::vector<idx_t> refI (nq * k);
std::vector<float> refD (nq * k);
index->search (nq, xq.data(), k, refD.data(), refI.data());
// compute search result
std::vector<long> newI (nq * k);
std::vector<idx_t> newI (nq * k);
std::vector<float> newD (nq * k);
std::vector<int64_t> query_centroid_ids (nq);
std::vector<int64_t> result_centroid_ids (nq * k);
std::vector<idx_t> query_centroid_ids (nq);
std::vector<idx_t> result_centroid_ids (nq * k);
search_and_retrun_centroids(index.get(),
nq, xq.data(), k,
......@@ -253,6 +257,9 @@ int test_search_and_return_centroids(const char *index_key) {
return 0;
}
} // namespace
/*************************************************************
* Test entry points
*************************************************************/
......
MAKEFILE_INC=../../makefile.inc
# 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)
-include ../../makefile.inc
NVCCLDFLAGS = -Xcompiler \"-Wl,-rpath=../../:../../gpu/\" \
-L../.. -L../../gpu -lfaiss -lgpufaiss
CPU_TARGETS = 1-Flat 2-IVFFlat 3-IVFPQ
GPU_TARGETS = 4-GPU 5-Multiple-GPUs
LDFLAGS = -L../.. -Wl,-rpath=../.. -lfaiss
default: cpu
all: cpu gpu
cpu: 1-Flat 2-IVFFlat 3-IVFPQ
cpu: $(CPU_TARGETS)
gpu: 4-GPU 5-Multiple-GPUs
gpu: $(GPU_TARGETS)
1-Flat: 1-Flat.cpp ../../libfaiss.$(SHAREDEXT)
$(CXX) -o $@ $(CXXFLAGS) $< -I../../../ $(LDFLAGS)
$(CPU_TARGETS): %: %.cpp ../../libfaiss.a
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) -I../../.. $(LIBS)
2-IVFFlat: 2-IVFFlat.cpp ../../libfaiss.$(SHAREDEXT)
$(CXX) -o $@ $(CXXFLAGS) $< -I../../../ $(LDFLAGS)
3-IVFPQ: 3-IVFPQ.cpp ../../libfaiss.$(SHAREDEXT)
$(CXX) -o $@ $(CXXFLAGS) $< -I../../../ $(LDFLAGS)
4-GPU: 4-GPU.cpp ../../libfaiss.$(SHAREDEXT) ../../gpu/libgpufaiss.$(SHAREDEXT)
$(NVCC) $(NVCCFLAGS) -o $@ $< $(NVCCLDFLAGS) -I../../../
5-Multiple-GPUs: 5-Multiple-GPUs.cpp ../../libfaiss.$(SHAREDEXT) \
../../gpu/libgpufaiss.$(SHAREDEXT)
$(NVCC) $(NVCCFLAGS) -o $@ $< $(NVCCLDFLAGS) -I../../../
../../libfaiss.$(SHAREDEXT):
cd ../../ && make libfaiss.$(SHAREDEXT)
../../gpu/libgpufaiss.$(SHAREDEXT):
cd ../../gpu/ && make libgpufaiss.$(SHAREDEXT)
$(GPU_TARGETS): %: %.cpp ../../libfaiss.a ../../gpu/libgpufaiss.a
$(NVCC) $(NVCCFLAGS) -o $@ $^ $(NVCCLDFLAGS) -I../../.. $(NVCCLIBS)
clean:
rm -f 1-Flat 2-IVFFlat 3-IVFPQ 4-GPU 5-Multiple-GPUs
rm -f $(CPU_TARGETS) $(GPU_TARGETS)
.PHONY: all cpu default gpu clean
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment