gnu: Add python-faiss.
* gnu/packages/graph.scm (python-faiss): New variable.
This commit is contained in:
parent
3e40318772
commit
51a9971ccb
|
@ -22,6 +22,7 @@
|
||||||
#: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 utils)
|
||||||
#:use-module (guix build-system cmake)
|
#: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)
|
||||||
|
@ -42,6 +43,7 @@
|
||||||
#:use-module (gnu packages python-web)
|
#:use-module (gnu packages python-web)
|
||||||
#:use-module (gnu packages python-xyz)
|
#:use-module (gnu packages python-xyz)
|
||||||
#:use-module (gnu packages statistics)
|
#:use-module (gnu packages statistics)
|
||||||
|
#:use-module (gnu packages swig)
|
||||||
#:use-module (gnu packages time)
|
#:use-module (gnu packages time)
|
||||||
#:use-module (gnu packages xml))
|
#:use-module (gnu packages xml))
|
||||||
|
|
||||||
|
@ -322,3 +324,51 @@ 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
|
vectors of any size, up to ones that possibly do not fit in RAM. It also
|
||||||
contains supporting code for evaluation and parameter tuning.")
|
contains supporting code for evaluation and parameter tuning.")
|
||||||
(license license:bsd-3)))
|
(license license:bsd-3)))
|
||||||
|
|
||||||
|
(define-public python-faiss
|
||||||
|
(package (inherit faiss)
|
||||||
|
(name "python-faiss")
|
||||||
|
(build-system python-build-system)
|
||||||
|
(arguments
|
||||||
|
`(#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'chdir
|
||||||
|
(lambda _ (chdir "python") #t))
|
||||||
|
(add-after 'chdir 'build-swig
|
||||||
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
(with-output-to-file "../makefile.inc"
|
||||||
|
(lambda ()
|
||||||
|
(let ((python-version ,(version-major+minor (package-version python))))
|
||||||
|
(format #t "\
|
||||||
|
PYTHONCFLAGS =-I~a/include/python~am/ -I~a/lib/python~a/site-packages/numpy/core/include
|
||||||
|
LIBS = -lpython~am -lfaiss
|
||||||
|
SHAREDFLAGS = -shared -fopenmp
|
||||||
|
CXXFLAGS = -fpermissive -std=c++11 -fopenmp -fPIC
|
||||||
|
CPUFLAGS = ~{~a ~}~%"
|
||||||
|
(assoc-ref inputs "python*") python-version
|
||||||
|
(assoc-ref inputs "python-numpy") python-version
|
||||||
|
python-version
|
||||||
|
(cons "-mpopcnt"
|
||||||
|
(list ,@(let ((system (or (%current-target-system)
|
||||||
|
(%current-system))))
|
||||||
|
(cond
|
||||||
|
((string-prefix? "x86_64" system)
|
||||||
|
'("-mavx" "-msse2"))
|
||||||
|
((string-prefix? "i686" system)
|
||||||
|
'("-msse2"))
|
||||||
|
(else
|
||||||
|
'())))))))))
|
||||||
|
(substitute* "Makefile"
|
||||||
|
(("../libfaiss.a") ""))
|
||||||
|
(invoke "make" "cpu"))))))
|
||||||
|
(inputs
|
||||||
|
`(("faiss" ,faiss)
|
||||||
|
("openblas" ,openblas)
|
||||||
|
("python*" ,python)
|
||||||
|
("swig" ,swig)))
|
||||||
|
(propagated-inputs
|
||||||
|
`(("python-matplotlib" ,python-matplotlib)
|
||||||
|
("python-numpy" ,python-numpy)))
|
||||||
|
(description "Faiss is a library for efficient similarity search and
|
||||||
|
clustering of dense vectors. This package provides Python bindings to the
|
||||||
|
Faiss library.")))
|
||||||
|
|
Loading…
Reference in New Issue