guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/04: gnu: Add python-faiss.


From: guix-commits
Subject: 02/04: gnu: Add python-faiss.
Date: Thu, 28 Mar 2019 22:56:07 -0400 (EDT)

rekado pushed a commit to branch master
in repository guix.

commit 51a9971ccb631e56d67f2cf71c2d8defae73955c
Author: Ricardo Wurmus <address@hidden>
Date:   Thu Mar 28 23:50:33 2019 +0100

    gnu: Add python-faiss.
    
    * gnu/packages/graph.scm (python-faiss): New variable.
---
 gnu/packages/graph.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index b3723d4..2e8f7c1 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -22,6 +22,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
@@ -42,6 +43,7 @@
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages statistics)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages time)
   #: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
 contains supporting code for evaluation and parameter tuning.")
     (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.")))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]