mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: Add faiss.
* gnu/packages/graph.scm (faiss): New variable.
This commit is contained in:
parent
631b20f90b
commit
3e40318772
1 changed files with 83 additions and 0 deletions
|
@ -22,6 +22,7 @@ (define-module (gnu packages graph)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix git-download)
|
#:use-module (guix git-download)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
|
#:use-module (guix build-system cmake)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module (guix build-system python)
|
#:use-module (guix build-system python)
|
||||||
#:use-module (guix build-system r)
|
#:use-module (guix build-system r)
|
||||||
|
@ -30,6 +31,7 @@ (define-module (gnu packages graph)
|
||||||
#:use-module (gnu packages gcc)
|
#:use-module (gnu packages gcc)
|
||||||
#:use-module (gnu packages bioconductor)
|
#:use-module (gnu packages bioconductor)
|
||||||
#:use-module (gnu packages bioinformatics)
|
#:use-module (gnu packages bioinformatics)
|
||||||
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages cran)
|
#:use-module (gnu packages cran)
|
||||||
#:use-module (gnu packages graphviz)
|
#:use-module (gnu packages graphviz)
|
||||||
|
@ -239,3 +241,84 @@ (define-public python-plotly
|
||||||
|
|
||||||
(define-public python2-plotly
|
(define-public python2-plotly
|
||||||
(package-with-python2 python-plotly))
|
(package-with-python2 python-plotly))
|
||||||
|
|
||||||
|
(define-public faiss
|
||||||
|
(package
|
||||||
|
(name "faiss")
|
||||||
|
(version "1.5.0")
|
||||||
|
(source (origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/facebookresearch/faiss.git")
|
||||||
|
(commit (string-append "v" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"0pk15jfa775cy2pqmzq62nhd6zfjxmpvz5h731197c28aq3zw39w"))))
|
||||||
|
(build-system cmake-build-system)
|
||||||
|
(arguments
|
||||||
|
`(#:configure-flags
|
||||||
|
(list "-DBUILD_WITH_GPU=OFF" ; thanks, but no thanks, CUDA.
|
||||||
|
"-DBUILD_TUTORIAL=OFF") ; we don't need those
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'prepare-build
|
||||||
|
(lambda _
|
||||||
|
(let ((features (list ,@(let ((system (or (%current-target-system)
|
||||||
|
(%current-system))))
|
||||||
|
(cond
|
||||||
|
((string-prefix? "x86_64" system)
|
||||||
|
'("-mavx" "-msse2"))
|
||||||
|
((string-prefix? "i686" system)
|
||||||
|
'("-msse2"))
|
||||||
|
(else
|
||||||
|
'()))))))
|
||||||
|
(substitute* "CMakeLists.txt"
|
||||||
|
(("-msse4")
|
||||||
|
(string-append
|
||||||
|
(string-join features)
|
||||||
|
" -I" (getcwd)))
|
||||||
|
;; Build also the shared library
|
||||||
|
(("ARCHIVE DESTINATION lib")
|
||||||
|
"LIBRARY DESTINATION lib")
|
||||||
|
(("add_library.*" m)
|
||||||
|
"\
|
||||||
|
add_library(objlib OBJECT ${faiss_cpu_headers} ${faiss_cpu_cpp})
|
||||||
|
set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
|
||||||
|
add_library(${faiss_lib}_static STATIC $<TARGET_OBJECTS:objlib>)
|
||||||
|
add_library(${faiss_lib} SHARED $<TARGET_OBJECTS:objlib>)
|
||||||
|
install(TARGETS ${faiss_lib}_static ARCHIVE DESTINATION lib)
|
||||||
|
\n")))
|
||||||
|
|
||||||
|
;; See https://github.com/facebookresearch/faiss/issues/520
|
||||||
|
(substitute* "IndexScalarQuantizer.cpp"
|
||||||
|
(("#define USE_AVX") ""))
|
||||||
|
|
||||||
|
;; Make header files available for compiling tests.
|
||||||
|
(mkdir-p "faiss")
|
||||||
|
(for-each (lambda (file)
|
||||||
|
(mkdir-p (string-append "faiss/" (dirname file)))
|
||||||
|
(copy-file file (string-append "faiss/" file)))
|
||||||
|
(find-files "." "\\.h$"))
|
||||||
|
#t))
|
||||||
|
(replace 'check
|
||||||
|
(lambda _
|
||||||
|
(invoke "make" "-C" "tests"
|
||||||
|
(format #f "-j~a" (parallel-job-count)))))
|
||||||
|
(add-after 'install 'remove-tests
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(delete-file-recursively
|
||||||
|
(string-append (assoc-ref outputs "out")
|
||||||
|
"/test"))
|
||||||
|
#t)))))
|
||||||
|
(inputs
|
||||||
|
`(("openblas" ,openblas)))
|
||||||
|
(native-inputs
|
||||||
|
`(("googletest" ,googletest)))
|
||||||
|
(home-page "https://github.com/facebookresearch/faiss")
|
||||||
|
(synopsis "Efficient similarity search and clustering of dense vectors")
|
||||||
|
(description "Faiss is a library for efficient similarity search and
|
||||||
|
clustering of dense vectors. It contains algorithms that search in sets of
|
||||||
|
vectors of any size, up to ones that possibly do not fit in RAM. It also
|
||||||
|
contains supporting code for evaluation and parameter tuning.")
|
||||||
|
(license license:bsd-3)))
|
||||||
|
|
Loading…
Reference in a new issue