all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
To: 31386@debbugs.gnu.org
Cc: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
Subject: [bug#31386] [PATCH 3/3] gnu: Add tensorflow-core.
Date: Tue, 8 May 2018 16:59:09 +0200	[thread overview]
Message-ID: <20180508145909.25354-3-ricardo.wurmus@mdc-berlin.de> (raw)
In-Reply-To: <20180508145909.25354-1-ricardo.wurmus@mdc-berlin.de>

* gnu/packages/machine-learning.scm (tensorflow-core): New variable.
---
 gnu/packages/machine-learning.scm | 113 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 87fbec6b6..e02e89ef4 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -36,6 +36,7 @@
   #:use-module (guix build-system r)
   #:use-module (guix git-download)
   #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -48,6 +49,7 @@
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages swig)
@@ -609,6 +611,117 @@ at most 8 bits.  To avoid overflow, results are internally accumulated on more
 than 8 bits, and at the end only some significant 8 bits are kept.")
       (license license:asl2.0))))
 
+(define-public tensorflow-core
+  (package
+    (name "tensorflow-core")
+    (version "1.7.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tensorflow/tensorflow.git")
+             (commit (string-append "v" version))))
+       (file-name (string-append "tensorflow-" version "-checkout"))
+       (sha256
+        (base32
+         "0jljzbwhmxi8crbivwachcmlfrrv279qrsvwc62cnnbyw0n1g0kp"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no "check" target
+       #:make-flags
+       (list "-f" "tensorflow/contrib/makefile/Makefile"
+             "CC=gcc")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'fix-version
+           (lambda _
+             (substitute* "tensorflow/tools/git/gen_git_source.sh"
+               (("^GIT_VERSION=.*")
+                (string-append "GIT_VERSION=" ,version "\n")))
+             #t))
+         (add-after 'unpack 'unpack-third-party
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "tensorflow/contrib/makefile/"
+               (let ((fft2d "downloads/fft2d")
+                     (nsync "downloads/nsync"))
+                 (mkdir-p fft2d)
+                 (invoke "tar" "xf" (assoc-ref inputs "fft2d")
+                         "-C" fft2d "--strip-components=1")
+                 (mkdir-p nsync)
+                 (invoke "tar" "xf" (assoc-ref inputs "nsync")
+                         "-C" nsync "--strip-components=1")))))
+         ;; FIXME: it would be nice to build a separate package for nsync and
+         ;; use it here.  Unfortunately, I could not build Tensorflow with a
+         ;; separately built nsync.
+         (add-before 'build 'build-nsync
+           (lambda _
+             (with-directory-excursion "tensorflow/contrib/makefile/"
+               (invoke "bash" "compile_nsync.sh")
+               (setenv "TARGET_NSYNC_LIB"
+                       "tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/nsync.a")
+               (setenv "HOST_NSYNC_LIB"
+                       "tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/nsync.a")
+               #t)))
+         (add-after 'unpack 'find-eigen-headers
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Ensure that Eigen headers can be found
+             (setenv "CPLUS_INCLUDE_PATH"
+                     (string-append (getenv "CPLUS_INCLUDE_PATH")
+                                    ":"
+                                    (assoc-ref inputs "eigen")
+                                    "/include/eigen3"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib"))
+                    (inc (string-append out "/include")))
+               (install-file "tensorflow/contrib/makefile/gen/lib/libtensorflow-core.a" lib)
+               (for-each (lambda (file)
+                           (let ((target (string-append inc "/"
+                                                        (dirname file))))
+                             (mkdir-p target)
+                             (install-file file target)))
+                         (find-files "tensorflow/core" ".*\\.h$"))
+               #t))))))
+    (native-inputs
+     `(("protobuf" ,protobuf)           ; protoc
+       ;; "You may use, copy, modify this code for any purpose and without
+       ;; fee. You may distribute this ORIGINAL package."
+       ("fft2d"
+        ,(origin
+           (method url-fetch)
+           (uri "https://mirror.bazel.build/www.kurims.kyoto-u.ac.jp/~ooura/fft.tgz")
+           (sha256
+            (base32
+             "15jjkfvhqvl2c0753d2di8hz0pyzn598g74wqy79awdrf1y67fsj"))))
+       ("nsync"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://mirror.bazel.build/"
+                               "github.com/google/nsync/archive/"
+                               "0559ce013feac8db639ee1bf776aca0325d28777.tar.gz"))
+           (sha256
+            (base32
+             "0qdkyqym34x739mmzv97ah5r7ph462v5xkxqxvidmcfqbi64b132"))))
+       ("googletest" ,googletest)))
+    (inputs
+     `(("eigen" ,eigen-for-tensorflow)
+       ("gemmlowp" ,gemmlowp-for-tensorflow)
+       ("protobuf" ,protobuf)
+       ("zlib" ,zlib)))
+    (home-page "https://tensorflow.org")
+    (synopsis "Machine learning framework")
+    (description
+     "TensorFlow is a software library for high performance numerical
+computation.  Its flexible architecture allows easy deployment of computation
+across a variety of platforms, and from desktops to clusters of servers to
+mobile and edge devices.
+
+This package provides only the core library.")
+    (license license:asl2.0)))
+
 (define-public dlib
   (package
     (name "dlib")
-- 
2.15.1

  parent reply	other threads:[~2018-05-08 15:01 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-08 14:54 [bug#31386] TensorFlow Ricardo Wurmus
2018-05-08 14:59 ` [bug#31386] [PATCH 1/3] gnu: eigen: Include unsupported features Ricardo Wurmus
2018-05-08 14:59   ` [bug#31386] [PATCH 2/3] gnu: Add gemmlowp-for-tensorflow Ricardo Wurmus
2018-05-09 22:48     ` Ludovic Courtès
2018-05-10  8:40       ` Ricardo Wurmus
2018-05-08 14:59   ` Ricardo Wurmus [this message]
2018-05-09 22:51     ` [bug#31386] [PATCH 3/3] gnu: Add tensorflow-core Ludovic Courtès
2018-05-10  8:34       ` Ricardo Wurmus
2018-05-10 20:24         ` Ludovic Courtès
2018-05-09 22:44   ` [bug#31386] [PATCH 1/3] gnu: eigen: Include unsupported features Ludovic Courtès
2018-05-10  8:42     ` Ricardo Wurmus
2018-05-08 17:52 ` [bug#31386] TensorFlow Fis Trivial
2018-05-08 19:26   ` Björn Höfling
2018-05-09 22:43 ` Ludovic Courtès
2019-01-02 16:29 ` Ricardo Wurmus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180508145909.25354-3-ricardo.wurmus@mdc-berlin.de \
    --to=ricardo.wurmus@mdc-berlin.de \
    --cc=31386@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.