diff mbox series

[bug#63991,v2,3/3] gnu: Add tvm

Message ID c15ccc7c660f261f2c7771c0e96656fc7f0b19f4.1686980668.git.atai@atai.org
State New
Headers show
Series [bug#63991,v2,1/3] gnu: Add rang | expand

Commit Message

Andy Tai June 17, 2023, 5:45 a.m. UTC
* gnu/packages/machine-learning.scm (tvm): New variable
---
 gnu/packages/machine-learning.scm | 71 +++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)
diff mbox series

Patch

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index ac115fc2ad..4bc599373d 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -80,6 +80,7 @@  (define-module (gnu packages machine-learning)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jupyter)
+  #:use-module (gnu packages libedit)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -88,6 +89,7 @@  (define-module (gnu packages machine-learning)
   #:use-module (gnu packages ninja)
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages onc-rpc)
+  #:use-module (gnu packages opencl)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -99,6 +101,7 @@  (define-module (gnu packages machine-learning)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages rocm)
   #:use-module (gnu packages rpc)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sphinx)
@@ -108,6 +111,7 @@  (define-module (gnu packages machine-learning)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages vulkan)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xdisorg)
@@ -4608,3 +4612,70 @@  (define-public dmlc-dlpack
     (license license:asl2.0)))
 
 
+(define-public tvm
+  (package
+    (name "tvm")
+    (version "0.12.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/apache/tvm")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0h26203sz1z7rxb12lfgzbwb9brfh61i3psjags0dqjz3wsb0s8f"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:tests? #false ; tests do not build in this release so do not build or tun them
+     	   ;#:test-target "test"
+           #:configure-flags #~(list "--trace"
+                                     "-DUSE_OPENCL=ON"
+                                     "-DUSE_VULKAN=ON" ;TODO; now not building due to missing vta-hw
+                                     "-DUSE_OPENCL_ENABLE_HOST_PTR=ON"
+                                     "-DINSTALL_DEV=ON"
+                                     ;"-DUSE_GTEST=ON"  ; TODO: enable tests in future releases
+                                     (string-append "-DDLPACK_PATH="
+                                                    (assoc-ref %build-inputs
+                                                               "dmlc-dlpack")
+                                                    "/include")
+                                     (string-append "-DDMLC_PATH="
+                                                    (assoc-ref %build-inputs
+                                                               "dmlc-core")
+                                                    "/include")
+                                     (string-append "-DRANG_PATH="
+                                                    (assoc-ref %build-inputs
+                                                               "rang")
+                                                    "/include"))
+           #:phases '(modify-phases %standard-phases
+                       (add-after 'unpack 'enable-cpptest-build
+                         (lambda _
+                           (substitute* "CMakeLists.txt"
+                             (("set_target_properties\\(cpptest PROPERTIES EXCLUDE_FROM_ALL 1\\)")
+                              "")))))))
+    (inputs (list dmlc-core
+                  dmlc-dlpack
+                  libedit
+                  libxml2
+                  opencl-clhpp
+                  opencl-headers
+                  rang
+                  zlib
+                  mesa
+                  mesa-opencl
+                  spirv-headers
+                  spirv-tools
+                  vulkan-headers ;TODO; now not building due to missing vta-hw
+                  vulkan-loader))
+    (native-inputs (list googletest
+                         (module-ref (resolve-interface '(gnu packages debug))
+                                     'libbacktrace) python pkg-config))
+    (home-page "https://tvm.apache.org/")
+    (synopsis
+     "End to End Machine Learning Compiler Framework for CPUs, GPUs and accelerators")
+    (description
+     "Apache TVM is a compiler stack for deep learning systems.  It is designed
+to close the gap between the productivity-focused deep learning frameworks,
+and the performance- and efficiency-focused hardware backends.  TVM works with
+deep learning frameworks to provide end to end compilation to different backends")
+    (license license:asl2.0)))