* [bug#31436] [PATCH 1/6] gnu: Add opencl-headers.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
@ 2018-05-12 19:49 ` Fis Trivial
2018-05-12 19:49 ` [bug#31436] [PATCH 2/6] gnu: Add opencl-clhpp Fis Trivial
` (6 subsequent siblings)
7 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-05-12 19:49 UTC (permalink / raw)
To: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm: New file.
(make-opencl-headers): New function.
(opencl-headers-2.2, opencl-headers-2.1, opencl-headers-2.0,
opencl-headers-1.2, opencl-headers-1.1, opencl-headers-1.0, opencl-headers):
New variables.
* gnu/local.mk: Add the new file.
---
gnu/local.mk | 1 +
gnu/packages/opencl.scm | 80 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 81 insertions(+)
create mode 100644 gnu/packages/opencl.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index 3ca7d45bd..39d53586d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -322,6 +322,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/ocaml.scm \
%D%/packages/ocr.scm \
%D%/packages/onc-rpc.scm \
+ %D%/packages/opencl.scm \
%D%/packages/openbox.scm \
%D%/packages/openldap.scm \
%D%/packages/openstack.scm \
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
new file mode 100644
index 000000000..25f5cb5a1
--- /dev/null
+++ b/gnu/packages/opencl.scm
@@ -0,0 +1,80 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages opencl)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:prefix license:))
+
+;; This file adds OpenCL implementation related packages. Due to the fact that
+;; OpenCL devices are not available during build (store environment), tests are
+;; all disabled.
+;; Check https://lists.gnu.org/archive/html/guix-devel/2018-04/msg00293.html
+
+(define (make-opencl-headers major-version subversion)
+ (let ((commit "e986688daf750633898dfd3994e14a9e618f2aa5")
+ (revision "0"))
+ (package
+ (name "opencl-headers")
+ (version (git-version
+ (string-append major-version "." subversion ".0")
+ revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/KhronosGroup/OpenCL-Headers.git")
+ (commit commit)))
+ (file-name (string-append name "-" commit))
+ (sha256
+ (base32
+ "176ydpbyws5nr4av6hf8p41pkhc0rc4m4vrah9w6gp2fw2i32838"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (copy-recursively (string-append "./opencl" (string-append
+ ,major-version
+ ,subversion) "/CL")
+ (string-append
+ (assoc-ref outputs "out")
+ "/include/CL")))))))
+ (synopsis "The Khronos OpenCL headers")
+ (description "This package provides the Khronos OpenCL c headers.")
+ (home-page "https://www.khronos.org/registry/OpenCL/")
+ (license license:expat))))
+
+(define-public opencl-headers-2.2
+ (make-opencl-headers "2" "2"))
+(define-public opencl-headers-2.1
+ (make-opencl-headers "2" "1"))
+(define-public opencl-headers-2.0
+ (make-opencl-headers "2" "0"))
+(define-public opencl-headers-1.2
+ (make-opencl-headers "1" "2"))
+(define-public opencl-headers-1.1
+ (make-opencl-headers "1" "1"))
+(define-public opencl-headers-1.0
+ (make-opencl-headers "1" "0"))
+
+(define-public opencl-headers opencl-headers-2.2)
--
2.14.3
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 2/6] gnu: Add opencl-clhpp.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
2018-05-12 19:49 ` [bug#31436] [PATCH 1/6] gnu: Add opencl-headers Fis Trivial
@ 2018-05-12 19:49 ` Fis Trivial
2018-05-12 19:50 ` [bug#31436] [PATCH 3/6] gnu: Add ocl-icd Fis Trivial
` (5 subsequent siblings)
7 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-05-12 19:49 UTC (permalink / raw)
To: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm (opencl-clhpp): New variable.
---
gnu/packages/opencl.scm | 39 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 38 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index 25f5cb5a1..996171713 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -18,9 +18,12 @@
(define-module (gnu packages opencl)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
- #:use-module ((guix licenses) #:prefix license:))
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages python))
;; This file adds OpenCL implementation related packages. Due to the fact that
;; OpenCL devices are not available during build (store environment), tests are
@@ -78,3 +81,37 @@
(make-opencl-headers "1" "0"))
(define-public opencl-headers opencl-headers-2.2)
+
+(define-public opencl-clhpp
+ (package
+ (name "opencl-clhpp")
+ (version "2.0.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/KhronosGroup/OpenCL-CLHPP/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0awg6yznbz3h285kmnd47fykx2qa34a07sr4x1657yn3jmi4a9zs"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (native-inputs
+ `(("python" ,python-wrapper)))
+ (propagated-inputs
+ `(("opencl-headers" ,opencl-headers)))
+ (arguments
+ `(#:configure-flags
+ (let ((out (assoc-ref %outputs "out")))
+ (list
+ "-DBUILD_EXAMPLES=OFF"
+ "-DBUILD_TESTS=OFF"
+ (string-append "-DCMAKE_INSTALL_PREFIX="
+ (assoc-ref %outputs "out")
+ "/include")))
+ ;; regression tests requires a lot more dependencies
+ #:tests? #f))
+ (build-system cmake-build-system)
+ (home-page "http://github.khronos.org/OpenCL-CLHPP/")
+ (synopsis "Khronos OpenCL-CLHPP")
+ (description "OpenCL Host API C++ bindings cl2.hpp.")
+ (license license:expat)))
--
2.14.3
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 3/6] gnu: Add ocl-icd.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
2018-05-12 19:49 ` [bug#31436] [PATCH 1/6] gnu: Add opencl-headers Fis Trivial
2018-05-12 19:49 ` [bug#31436] [PATCH 2/6] gnu: Add opencl-clhpp Fis Trivial
@ 2018-05-12 19:50 ` Fis Trivial
2018-05-12 19:50 ` [bug#31436] [PATCH 4/6] gnu: Add beignet Fis Trivial
` (4 subsequent siblings)
7 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-05-12 19:50 UTC (permalink / raw)
To: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm (ocl-icd): New variable.
---
gnu/packages/opencl.scm | 38 +++++++++++++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index 996171713..a7b639b8c 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -23,7 +23,9 @@
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
- #:use-module (gnu packages python))
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages ruby))
;; This file adds OpenCL implementation related packages. Due to the fact that
;; OpenCL devices are not available during build (store environment), tests are
@@ -115,3 +117,37 @@
(synopsis "Khronos OpenCL-CLHPP")
(description "OpenCL Host API C++ bindings cl2.hpp.")
(license license:expat)))
+
+(define-public ocl-icd
+ (package
+ (name "ocl-icd")
+ (version "2.2.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://forge.imag.fr/frs/download.php/836/ocl-icd-"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1x2dr8p4dkfds56r38av360i3nv1y3326jmshxvjngaf6mlg6rbn"))))
+ (inputs `(("ruby" ,ruby)
+ ("opencl-headers" ,opencl-headers)
+ ("libgcrypt" ,libgcrypt)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags
+ '("DEBUG_OCL_ICD=1")))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "OPENCL_VENDOR_PATH")
+ (files '("etc/OpenCL/vendors")))))
+ (search-paths native-search-paths)
+ (home-page "https://forge.imag.fr/projects/ocl-icd/")
+ (synopsis "OpenCL implementations are provided as ICD (Installable Client
+Driver)")
+ (description "OpenCL implementations are provided as ICD (Installable Client
+Driver). An OpenCL program can use several ICD thanks to the use of an ICD
+Loader as provided by this project. This free ICD Loader can load any (free or
+non free) ICD")
+ (license license:bsd-2)))
--
2.14.3
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 4/6] gnu: Add beignet.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
` (2 preceding siblings ...)
2018-05-12 19:50 ` [bug#31436] [PATCH 3/6] gnu: Add ocl-icd Fis Trivial
@ 2018-05-12 19:50 ` Fis Trivial
2018-05-12 19:51 ` [bug#31436] [PATCH 5/6] gnu: Add clinfo Fis Trivial
` (3 subsequent siblings)
7 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-05-12 19:50 UTC (permalink / raw)
To: 31436@debbugs.gnu.org
* gnu/packages/patches/beignet-correct-paths.patch: New file.
* gnu/local.mk: Add it.
* gnu/packages/opencl.scm (beignet): New variable.
---
gnu/local.mk | 1 +
gnu/packages/opencl.scm | 81 +++++++++++++++++++++++-
gnu/packages/patches/beignet-correct-paths.patch | 41 ++++++++++++
3 files changed, 122 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/beignet-correct-paths.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 39d53586d..2631b070e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -580,6 +580,7 @@ dist_patch_DATA = \
%D%/packages/patches/azr3.patch \
%D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
+ %D%/packages/patches/beignet-correct-paths.patch \
%D%/packages/patches/binutils-ld-new-dtags.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/blast+-fix-makefile.patch \
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index a7b639b8c..a84eeac01 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -23,9 +23,20 @@
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages libedit)
+ #:use-module (gnu packages llvm)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
- #:use-module (gnu packages ruby))
+ #:use-module (gnu packages ruby)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xorg))
;; This file adds OpenCL implementation related packages. Due to the fact that
;; OpenCL devices are not available during build (store environment), tests are
@@ -151,3 +162,71 @@ Driver). An OpenCL program can use several ICD thanks to the use of an ICD
Loader as provided by this project. This free ICD Loader can load any (free or
non free) ICD")
(license license:bsd-2)))
+
+(define-public beignet
+ (package
+ (name "beignet")
+ (version "1.3.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/intel/beignet/archive/Release_v"
+ version
+ ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "18r0lq3dkd4yn6bxa45s2lrr9cjbg70nr2nn6xablvgqwzw0jb0r"))
+ (patches (search-patches "beignet-correct-paths.patch"))))
+ (native-inputs `(("pkg-config" ,pkg-config)
+ ("python" ,python)))
+ (inputs `(("clang@3.7" ,clang-3.7)
+ ("clang-runtime@3.7" ,clang-runtime-3.7)
+ ("glu" ,glu)
+ ("llvm@3.7" ,llvm-3.7)
+ ("libdrm" ,libdrm)
+ ("libedit" ,libedit)
+ ("libpthread-stubs", libpthread-stubs)
+ ("libsm" ,libsm)
+ ("libva" ,libva)
+ ("libxfixes" ,libxfixes)
+ ("libxext" ,libxext)
+ ("mesa-utils" ,mesa-utils)
+ ("ncurses" ,ncurses)
+ ("ocl-icd" ,ocl-icd)
+ ("opencl-headers" ,opencl-headers)
+ ("xextproto" ,xextproto)
+ ("zlib" ,zlib)))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "-DCLANG_LIBRARY_DIR="
+ (assoc-ref %build-inputs "clang@3.7") "/lib")
+ "-DENABLE_GL_SHARING=ON"
+ "-DEXPERIMENTAL_DOUBLE=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'remove-headers
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (delete-file-recursively
+ (string-append out "/include")))))
+ ;; Kernel files are used for testing. But we don't have test here yet.
+ ;; So copying kernels is just a reminder for the future when we can
+ ;; enable tests.
+ (add-after 'remove-headers 'install-kernels
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (builddir (getcwd))
+ (source-dir (string-append
+ builddir
+ "/../beignet-Release_v1.3.2/kernels")))
+ (copy-recursively source-dir (string-append
+ out
+ "/lib/beignet/kernels"))))))
+ #:tests? #f))
+ (home-page "https://wiki.freedesktop.org/www/Software/Beignet/")
+ (synopsis "Intel's OpenCL framework")
+ (description "Intel's OpenCL framework that works with Intel IvyBridge GPUs
+and above.")
+ (license license:lgpl2.1)))
diff --git a/gnu/packages/patches/beignet-correct-paths.patch b/gnu/packages/patches/beignet-correct-paths.patch
new file mode 100644
index 000000000..0435f9503
--- /dev/null
+++ b/gnu/packages/patches/beignet-correct-paths.patch
@@ -0,0 +1,41 @@
+From 0ba525465782ec3fd6484b7483941344f293d3ab Mon Sep 17 00:00:00 2001
+From: fis <ybbs.daans@hotmail.com>
+Date: Sun, 8 Apr 2018 02:14:44 +0800
+Subject: [PATCH] Correct paths.
+
+* CMake/FindLLVM.cmake (CLANG_LIBRARY_DIR): New vairable.
+* CMakelists: Let cmake figure out where to install icd file.
+---
+ CMake/FindLLVM.cmake | 2 +-
+ CMakeLists.txt | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/CMake/FindLLVM.cmake b/CMake/FindLLVM.cmake
+index 5457f248..e8e8f94a 100644
+--- a/CMake/FindLLVM.cmake
++++ b/CMake/FindLLVM.cmake
+@@ -107,7 +107,7 @@ endif (LLVM_VERSION_NODOT VERSION_GREATER 34)
+ macro(add_one_lib name)
+ FIND_LIBRARY(CLANG_LIB
+ NAMES ${name}
+- PATHS ${LLVM_LIBRARY_DIR} NO_DEFAULT_PATH)
++ PATHS ${CLANG_LIBRARY_DIR} NO_DEFAULT_PATH)
+ set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_LIB})
+ unset(CLANG_LIB CACHE)
+ endmacro()
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c11acbb2..fb99e5c8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -217,7 +217,7 @@ IF(OCLIcd_FOUND)
+ "intel-beignet.icd.in"
+ "${ICD_FILE_NAME}"
+ )
+- install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ICD_FILE_NAME} DESTINATION /etc/OpenCL/vendors)
++ install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ICD_FILE_NAME} DESTINATION etc/OpenCL/vendors COMPONENT config)
+ ELSE(OCLIcd_FOUND)
+ MESSAGE(STATUS "Looking for OCL ICD header file - not found")
+ MESSAGE(FATAL_ERROR "OCL ICD loader miss. If you really want to disable OCL ICD support, please run cmake with option -DOCLICD_COMPAT=0.")
+--
+2.14.3
+
--
2.14.3
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 5/6] gnu: Add clinfo.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
` (3 preceding siblings ...)
2018-05-12 19:50 ` [bug#31436] [PATCH 4/6] gnu: Add beignet Fis Trivial
@ 2018-05-12 19:51 ` Fis Trivial
2018-05-12 19:52 ` [bug#31436] [PATCH 6/6] gnu: Add pocl Fis Trivial
` (2 subsequent siblings)
7 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-05-12 19:51 UTC (permalink / raw)
To: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm (clinfo): New variable.
---
gnu/packages/opencl.scm | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index a84eeac01..5346d23ac 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -163,6 +163,58 @@ Loader as provided by this project. This free ICD Loader can load any (free or
non free) ICD")
(license license:bsd-2)))
+(define-public clinfo
+ (package
+ (name "clinfo")
+ (version "2.2.18.04.06")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/Oblomov/clinfo/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0v7cy01irwdgns6lzaprkmm0502pp5a24zhhffydxz1sgfjj2w7p"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("opencl-headers" ,opencl-headers)))
+ (inputs
+ `(("ocl-icd" ,ocl-icd)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (let ((cores (number->string (parallel-job-count))))
+ (setenv "CC" "gcc")
+ (invoke "make" "-j" cores))))
+ (delete 'install)
+ (add-after 'build 'make-install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (invoke "make" "install" (string-append
+ "PREFIX="
+ (assoc-ref outputs "out")))))
+ ;; OpenCL vendors are registered in $GUIX_PROFILE/etc/OpenCL/vendors/
+ ;; So we wrap clinfo to find those files. Otherwise, clinfo will try
+ ;; to find them in /etc/OpenCL/vendors
+ (add-after 'make-install 'wrap
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin/clinfo")))
+ (wrap-program bin
+ `("OPENCL_VENDOR_PATH" ":" prefix
+ ("$GUIX_PROFILE$GUIX_ENVIRONMENT/etc/OpenCL/vendors")))))))
+ ;; Cannot be run in store environment.
+ #:tests? #f))
+ (home-page "https://github.com/Oblomov/clinfo")
+ (synopsis "Print all known information about all available OpenCL platforms
+and devices")
+ (description "clinfo is a simple command-line application that enumerates
+all possible (known) properties of the OpenCL platform and devices available on
+the system.")
+ (license license:cc0)))
+
(define-public beignet
(package
(name "beignet")
--
2.14.3
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 6/6] gnu: Add pocl.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
` (4 preceding siblings ...)
2018-05-12 19:51 ` [bug#31436] [PATCH 5/6] gnu: Add clinfo Fis Trivial
@ 2018-05-12 19:52 ` Fis Trivial
2018-05-26 17:42 ` [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
2018-06-25 20:22 ` Ludovic Courtès
7 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-05-12 19:52 UTC (permalink / raw)
To: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm (pocl): New variable.
---
gnu/packages/opencl.scm | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index 5346d23ac..fe90a639b 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -24,12 +24,14 @@
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
#:use-module (gnu packages compression)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gl)
#:use-module (gnu packages libedit)
#:use-module (gnu packages llvm)
+ #:use-module (gnu packages mpi)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -282,3 +284,44 @@ the system.")
(description "Intel's OpenCL framework that works with Intel IvyBridge GPUs
and above.")
(license license:lgpl2.1)))
+
+(define-public pocl
+ (package
+ (name "pocl")
+ (version "1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/pocl/pocl/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0lrw3hlb0w53xzmrf2hvbda406l70ar4gyadflvlkj4879lx138y"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("libltdl" ,libltdl)))
+ (inputs
+ `(("llvm" ,llvm)
+ ("hwloc" ,hwloc "lib")
+ ("clang" ,clang)
+ ("ocl-icd" ,ocl-icd)))
+ (arguments
+ `(#:configure-flags
+ '("-DENABLE_ICD=ON"
+ "-DENABLE_TESTSUITES=OFF"
+ "-DENABLE_CONFORMANCE=OFF")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'remove-headers
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (delete-file-recursively
+ (string-append out "/include"))))))
+ #:tests? #f)) ; failed
+ (home-page "http://portablecl.org/")
+ (synopsis "Portable Computing Language (pocl)")
+ (description "pocl is being developed towards an efficient implementation
+of OpenCL standard which can be easily adapted for new targets.")
+ (license license:expat)))
--
2.14.3
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 0/6] gnu: Add opencl related packages.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
` (5 preceding siblings ...)
2018-05-12 19:52 ` [bug#31436] [PATCH 6/6] gnu: Add pocl Fis Trivial
@ 2018-05-26 17:42 ` Fis Trivial
2018-05-28 12:51 ` Ludovic Courtès
2018-06-25 20:22 ` Ludovic Courtès
7 siblings, 1 reply; 21+ messages in thread
From: Fis Trivial @ 2018-05-26 17:42 UTC (permalink / raw)
To: Fis Trivial; +Cc: 31436
Fis Trivial writes:
> These patches add basic support for opencl. As noted in the new file
> opencl.scm, tests can't enabled by now. For the future, maybe we can
> patch the build system to make test targets installable so that people
> with right tools can help testing. Or maybe there are some other ways
> that we can modify the build environment for testing. But that's another
> day's problem. :)
>
> Although testing with packages' unit tests are not enabled. I tried to
> test them outside the store by simple hello world program, they works
> fine on my hardware.
>
> To make thing a little comfortable, I packaged clinfo, which is a little
> tool for displaying OpenCL platforms and device information by calling
> OpenCL host functions. If it works on your device, then at least you can
> confirm the corresponding implementation is not completely broken.
>
> Environment variable `OPENCL_VENDOR_PATH` is used to guide `ocl-icd`
> loading needed OpenCL implementation library. You need to source it in
> your profile before you try to use any of the implementation.
>
> I wrapped clinfo, notes are put in the package definition.
>
Hi, guixs.
Sorry.
I don't think any usable OpenCL implementation in guix can be done in
recent future. OpenCL is kind of deeply integrated with clang and
llvm. One of the problem of this integration is that ld is not invoked
with correct search path. And usually the link procedure is implemented
by calling llvm APIs since ld doesn't know how to link device binary
objects. Which means if we want to solve this problem we will have to
figure out how does llvm do linking and add the corresponding patches to
make a specialized llvm. If I were to do it, I would rather try to get
ld and gcc support basic OpenCL linking, the needed effort is not that
different.
You can still review these packages without pocl and beignet (these two
are implementation), so that others who want to enable OpenCL in guix
will not have to packages those headers and helper tools.
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 0/6] gnu: Add opencl related packages.
2018-05-26 17:42 ` [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
@ 2018-05-28 12:51 ` Ludovic Courtès
0 siblings, 0 replies; 21+ messages in thread
From: Ludovic Courtès @ 2018-05-28 12:51 UTC (permalink / raw)
To: Fis Trivial; +Cc: 31436
Hello,
Fis Trivial <ybbs.daans@hotmail.com> skribis:
> I don't think any usable OpenCL implementation in guix can be done in
> recent future. OpenCL is kind of deeply integrated with clang and
> llvm. One of the problem of this integration is that ld is not invoked
> with correct search path. And usually the link procedure is implemented
> by calling llvm APIs since ld doesn't know how to link device binary
> objects. Which means if we want to solve this problem we will have to
> figure out how does llvm do linking and add the corresponding patches to
> make a specialized llvm. If I were to do it, I would rather try to get
> ld and gcc support basic OpenCL linking, the needed effort is not that
> different.
In a similar vein, you might want to check
‘clang-3.5-libc-search-path.patch’. Maybe it doesn’t help for
pocl/beignet because it’s a patch against Clang, not LLVM.
We’ll need to investigate more precisely how pocl/beignet invoke the
linker, as discussed on help-guix.
Ludo’.
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 0/6] gnu: Add opencl related packages.
2018-05-12 19:46 [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
` (6 preceding siblings ...)
2018-05-26 17:42 ` [bug#31436] [PATCH 0/6] gnu: Add opencl related packages Fis Trivial
@ 2018-06-25 20:22 ` Ludovic Courtès
2018-06-25 20:58 ` Fis Trivial
7 siblings, 1 reply; 21+ messages in thread
From: Ludovic Courtès @ 2018-06-25 20:22 UTC (permalink / raw)
To: Fis Trivial; +Cc: 31436
Hello Fis!
Fis Trivial <ybbs.daans@hotmail.com> skribis:
> These patches add basic support for opencl. As noted in the new file
> opencl.scm, tests can't enabled by now. For the future, maybe we can
> patch the build system to make test targets installable so that people
> with right tools can help testing. Or maybe there are some other ways
> that we can modify the build environment for testing. But that's another
> day's problem. :)
>
> Although testing with packages' unit tests are not enabled. I tried to
> test them outside the store by simple hello world program, they works
> fine on my hardware.
>
> To make thing a little comfortable, I packaged clinfo, which is a little
> tool for displaying OpenCL platforms and device information by calling
> OpenCL host functions. If it works on your device, then at least you can
> confirm the corresponding implementation is not completely broken.
>
> Environment variable `OPENCL_VENDOR_PATH` is used to guide `ocl-icd`
> loading needed OpenCL implementation library. You need to source it in
> your profile before you try to use any of the implementation.
>
> I wrapped clinfo, notes are put in the package definition.
>
>
> fis (6):
> gnu: Add opencl-headers.
> gnu: Add opencl-clhpp.
> gnu: Add ocl-icd.
> gnu: Add beignet.
> gnu: Add clinfo.
> gnu: Add pocl.
I finally applied the first two patches.
Could you remind me what the blocker is for the subsequent patches? I
know we discussed it but I couldn’t find the details.
Thanks, and sorry for the delay!
Ludo’.
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 0/6] gnu: Add opencl related packages.
2018-06-25 20:22 ` Ludovic Courtès
@ 2018-06-25 20:58 ` Fis Trivial
2018-06-26 13:44 ` Ludovic Courtès
0 siblings, 1 reply; 21+ messages in thread
From: Fis Trivial @ 2018-06-25 20:58 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 31436@debbugs.gnu.org
Ludovic Courtès writes:
> Hello Fis!
>
> Fis Trivial <ybbs.daans@hotmail.com> skribis:
>
>> These patches add basic support for opencl. As noted in the new file
>> opencl.scm, tests can't enabled by now. For the future, maybe we can
>> patch the build system to make test targets installable so that people
>> with right tools can help testing. Or maybe there are some other ways
>> that we can modify the build environment for testing. But that's another
>> day's problem. :)
>>
>> Although testing with packages' unit tests are not enabled. I tried to
>> test them outside the store by simple hello world program, they works
>> fine on my hardware.
>>
>> To make thing a little comfortable, I packaged clinfo, which is a little
>> tool for displaying OpenCL platforms and device information by calling
>> OpenCL host functions. If it works on your device, then at least you can
>> confirm the corresponding implementation is not completely broken.
>>
>> Environment variable `OPENCL_VENDOR_PATH` is used to guide `ocl-icd`
>> loading needed OpenCL implementation library. You need to source it in
>> your profile before you try to use any of the implementation.
>>
>> I wrapped clinfo, notes are put in the package definition.
>>
>>
>> fis (6):
>> gnu: Add opencl-headers.
>> gnu: Add opencl-clhpp.
>> gnu: Add ocl-icd.
>> gnu: Add beignet.
>> gnu: Add clinfo.
>> gnu: Add pocl.
>
> I finally applied the first two patches.
>
> Could you remind me what the blocker is for the subsequent patches? I
> know we discussed it but I couldn’t find the details.
>
> Thanks, and sorry for the delay!
>
> Ludo’.
For POCL. The problem is ld couldn't find the right path. Another one is
Guix currently doesn't have any modern GPU support due to firmware
blobs. So OpenCL here is not very attractive in general unless one
maintain his/her own kernel. Or maybe someone here toys with FPGA? :)
Beignet is now deprecated in favor the new Neo project (both are from
Intel).
Jiaming
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 0/6] gnu: Add opencl related packages.
2018-06-25 20:58 ` Fis Trivial
@ 2018-06-26 13:44 ` Ludovic Courtès
2018-06-26 18:49 ` Fis Trivial
` (4 more replies)
0 siblings, 5 replies; 21+ messages in thread
From: Ludovic Courtès @ 2018-06-26 13:44 UTC (permalink / raw)
To: Fis Trivial; +Cc: 31436@debbugs.gnu.org
Fis Trivial <ybbs.daans@hotmail.com> skribis:
> For POCL. The problem is ld couldn't find the right path. Another one is
> Guix currently doesn't have any modern GPU support due to firmware
> blobs. So OpenCL here is not very attractive in general unless one
> maintain his/her own kernel. Or maybe someone here toys with FPGA? :)
>
> Beignet is now deprecated in favor the new Neo project (both are from
> Intel).
Sure, I understand the limitations regarding GPU supports. I think it
might still be useful for people using the OpenCL API for testing
purposes on CPUs, though.
In that spirit, would it make sense to merge everything but Beignet and
POCL?
Ludo’.
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 0/6] gnu: Add opencl related packages.
2018-06-26 13:44 ` Ludovic Courtès
@ 2018-06-26 18:49 ` Fis Trivial
2018-06-26 19:37 ` [bug#31436] [PATCH 0/3] Resend some opencl packages Fis Trivial
` (3 subsequent siblings)
4 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-06-26 18:49 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 31436@debbugs.gnu.org
Ludovic Courtès writes:
> Fis Trivial <ybbs.daans@hotmail.com> skribis:
>
>> For POCL. The problem is ld couldn't find the right path. Another one is
>> Guix currently doesn't have any modern GPU support due to firmware
>> blobs. So OpenCL here is not very attractive in general unless one
>> maintain his/her own kernel. Or maybe someone here toys with FPGA? :)
>>
>> Beignet is now deprecated in favor the new Neo project (both are from
>> Intel).
>
> Sure, I understand the limitations regarding GPU supports. I think it
> might still be useful for people using the OpenCL API for testing
> purposes on CPUs, though.
>
> In that spirit, would it make sense to merge everything but Beignet and
> POCL?
>
> Ludo’.
Thanks for the review. I will resend the rest with some notes soon.
Jiaming
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 0/3] Resend some opencl packages.
2018-06-26 13:44 ` Ludovic Courtès
2018-06-26 18:49 ` Fis Trivial
@ 2018-06-26 19:37 ` Fis Trivial
2018-06-26 19:39 ` [bug#31436] [PATCH 1/3] gnu: Add ocl-icd Fis Trivial
` (2 subsequent siblings)
4 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-06-26 19:37 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 31436@debbugs.gnu.org
Hi, after those headers being merged, I re-visited the rest of the
packages and did some modifications:
1. POCL is no longer included due to mis-configured path for `ld'. I
don't have time to patch it right now.
2. Some inputs of ocl-icd now native-inputs
3. clinfo is no longer wrapped. User needs to source the profile
explicitly. The "OPENCL_VENDOR_PATH" is for ocl-icd. Maybe there's a
more systematic way to use that variable so that we don't need to
wrap every opencl based package? This can be discussed, but again,
now I don't have much time to investigate.
4. Beignet is actually working! :) I tested (manually) it under pure
environment.
Lint is not completely run, I just reported in bug-guix:
http://lists.gnu.org/archive/html/bug-guix/2018-06/msg00292.html
fis (3):
gnu: Add ocl-icd.
gnu: Add clinfo.
gnu: Add beignet.
gnu/local.mk | 1 +
gnu/packages/opencl.scm | 161 ++++++++++++++++++++++-
gnu/packages/patches/beignet-correct-paths.patch | 41 ++++++
3 files changed, 201 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/beignet-correct-paths.patch
--
2.14.4
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 1/3] gnu: Add ocl-icd.
2018-06-26 13:44 ` Ludovic Courtès
2018-06-26 18:49 ` Fis Trivial
2018-06-26 19:37 ` [bug#31436] [PATCH 0/3] Resend some opencl packages Fis Trivial
@ 2018-06-26 19:39 ` Fis Trivial
2018-06-26 20:26 ` Ludovic Courtès
2018-06-26 19:39 ` [bug#31436] [PATCH 2/3] gnu: Add clinfo Fis Trivial
2018-06-26 19:40 ` [bug#31436] [PATCH 3/3] gnu: Add beignet Fis Trivial
4 siblings, 1 reply; 21+ messages in thread
From: Fis Trivial @ 2018-06-26 19:39 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm (ocl-icd): New variable.
---
gnu/packages/opencl.scm | 39 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 38 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index b31fa0947..b9cca3406 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -23,7 +23,9 @@
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
- #:use-module (gnu packages python))
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages ruby))
;; This file adds OpenCL implementation related packages. Due to the fact that
;; OpenCL devices are not available during build (store environment), tests are
@@ -118,3 +120,38 @@ programming.")
(description
"This package provides the @dfn{host API} C++ headers for OpenCL.")
(license license:expat)))
+
+(define-public ocl-icd
+ (package
+ (name "ocl-icd")
+ (version "2.2.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://forge.imag.fr/frs/download.php/836/ocl-icd-"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1x2dr8p4dkfds56r38av360i3nv1y3326jmshxvjngaf6mlg6rbn"))))
+ (native-inputs
+ `(("opencl-headers" ,opencl-headers)
+ ("ruby" ,ruby)))
+ (inputs
+ `(("libgcrypt" ,libgcrypt)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags
+ '("DEBUG_OCL_ICD=1")))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "OPENCL_VENDOR_PATH")
+ (files '("etc/OpenCL/vendors")))))
+ (search-paths native-search-paths)
+ (home-page "https://forge.imag.fr/projects/ocl-icd/")
+ (synopsis "OpenCL implementations are provided as ICD (Installable Client
+Driver)")
+ (description "OpenCL implementations are provided as ICD (Installable Client
+Driver). An OpenCL program can use several ICD thanks to the use of an ICD
+Loader as provided by this project. This free ICD Loader can load any ICD.")
+ (license (list license:gpl2 license:ruby))))
--
2.14.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 1/3] gnu: Add ocl-icd.
2018-06-26 19:39 ` [bug#31436] [PATCH 1/3] gnu: Add ocl-icd Fis Trivial
@ 2018-06-26 20:26 ` Ludovic Courtès
2018-06-26 20:57 ` Fis Trivial
0 siblings, 1 reply; 21+ messages in thread
From: Ludovic Courtès @ 2018-06-26 20:26 UTC (permalink / raw)
To: Fis Trivial; +Cc: 31436@debbugs.gnu.org
[-- Attachment #1: Type: text/plain, Size: 142 bytes --]
Fis Trivial <ybbs.daans@hotmail.com> skribis:
> * gnu/packages/opencl.scm (ocl-icd): New variable.
Applied with the changes below; thanks.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1857 bytes --]
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index b9cca3406..3b65d7512 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -133,7 +133,10 @@ programming.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1x2dr8p4dkfds56r38av360i3nv1y3326jmshxvjngaf6mlg6rbn"))))
+ "1x2dr8p4dkfds56r38av360i3nv1y3326jmshxvjngaf6mlg6rbn"))
+ (modules '((guix build utils)))
+ (snippet
+ '(delete-file-recursively "khronos-headers"))))
(native-inputs
`(("opencl-headers" ,opencl-headers)
("ruby" ,ruby)))
@@ -141,17 +144,16 @@ programming.")
`(("libgcrypt" ,libgcrypt)))
(build-system gnu-build-system)
(arguments
- '(#:configure-flags
- '("DEBUG_OCL_ICD=1")))
+ '(#:configure-flags '("DEBUG_OCL_ICD=1")))
(native-search-paths
(list (search-path-specification
(variable "OPENCL_VENDOR_PATH")
(files '("etc/OpenCL/vendors")))))
(search-paths native-search-paths)
(home-page "https://forge.imag.fr/projects/ocl-icd/")
- (synopsis "OpenCL implementations are provided as ICD (Installable Client
-Driver)")
- (description "OpenCL implementations are provided as ICD (Installable Client
-Driver). An OpenCL program can use several ICD thanks to the use of an ICD
-Loader as provided by this project. This free ICD Loader can load any ICD.")
- (license (list license:gpl2 license:ruby))))
+ (synopsis "OpenCL loader for Installable Client Drivers (ICDs)")
+ (description
+ "OpenCL implementations are provided as ICDs (Installable Client
+Drivers). An OpenCL program can use several ICDs thanks to the use of an ICD
+Loader as provided by this package.")
+ (license license:bsd-2)))
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 1/3] gnu: Add ocl-icd.
2018-06-26 20:26 ` Ludovic Courtès
@ 2018-06-26 20:57 ` Fis Trivial
0 siblings, 0 replies; 21+ messages in thread
From: Fis Trivial @ 2018-06-26 20:57 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 31436@debbugs.gnu.org
Ludovic Courtès writes:
> Fis Trivial <ybbs.daans@hotmail.com> skribis:
>
>> * gnu/packages/opencl.scm (ocl-icd): New variable.
>
> Applied with the changes below; thanks.
>
> diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
> index b9cca3406..3b65d7512 100644
> --- a/gnu/packages/opencl.scm
> +++ b/gnu/packages/opencl.scm
> @@ -133,7 +133,10 @@ programming.")
> (file-name (string-append name "-" version ".tar.gz"))
> (sha256
> (base32
> - "1x2dr8p4dkfds56r38av360i3nv1y3326jmshxvjngaf6mlg6rbn"))))
> + "1x2dr8p4dkfds56r38av360i3nv1y3326jmshxvjngaf6mlg6rbn"))
> + (modules '((guix build utils)))
> + (snippet
> + '(delete-file-recursively "khronos-headers"))))
> (native-inputs
> `(("opencl-headers" ,opencl-headers)
> ("ruby" ,ruby)))
> @@ -141,17 +144,16 @@ programming.")
> `(("libgcrypt" ,libgcrypt)))
> (build-system gnu-build-system)
> (arguments
> - '(#:configure-flags
> - '("DEBUG_OCL_ICD=1")))
> + '(#:configure-flags '("DEBUG_OCL_ICD=1")))
> (native-search-paths
> (list (search-path-specification
> (variable "OPENCL_VENDOR_PATH")
> (files '("etc/OpenCL/vendors")))))
> (search-paths native-search-paths)
> (home-page "https://forge.imag.fr/projects/ocl-icd/")
> - (synopsis "OpenCL implementations are provided as ICD (Installable Client
> -Driver)")
> - (description "OpenCL implementations are provided as ICD (Installable Client
> -Driver). An OpenCL program can use several ICD thanks to the use of an ICD
> -Loader as provided by this project. This free ICD Loader can load any ICD.")
> - (license (list license:gpl2 license:ruby))))
> + (synopsis "OpenCL loader for Installable Client Drivers (ICDs)")
> + (description
> + "OpenCL implementations are provided as ICDs (Installable Client
> +Drivers). An OpenCL program can use several ICDs thanks to the use of an ICD
> +Loader as provided by this package.")
> + (license license:bsd-2)))
Thanks for the review. That's messier than I thought...
^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 2/3] gnu: Add clinfo.
2018-06-26 13:44 ` Ludovic Courtès
` (2 preceding siblings ...)
2018-06-26 19:39 ` [bug#31436] [PATCH 1/3] gnu: Add ocl-icd Fis Trivial
@ 2018-06-26 19:39 ` Fis Trivial
2018-06-26 20:32 ` Ludovic Courtès
2018-06-26 19:40 ` [bug#31436] [PATCH 3/3] gnu: Add beignet Fis Trivial
4 siblings, 1 reply; 21+ messages in thread
From: Fis Trivial @ 2018-06-26 19:39 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm (clinfo): New variable.
---
gnu/packages/opencl.scm | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index b9cca3406..0c2f7d147 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -155,3 +155,46 @@ Driver)")
Driver). An OpenCL program can use several ICD thanks to the use of an ICD
Loader as provided by this project. This free ICD Loader can load any ICD.")
(license (list license:gpl2 license:ruby))))
+
+(define-public clinfo
+ (package
+ (name "clinfo")
+ (version "2.2.18.04.06")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/Oblomov/clinfo/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0v7cy01irwdgns6lzaprkmm0502pp5a24zhhffydxz1sgfjj2w7p"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("opencl-headers" ,opencl-headers)))
+ (inputs
+ `(("ocl-icd" ,ocl-icd)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (let ((cores (number->string (parallel-job-count))))
+ (setenv "CC" "gcc")
+ (invoke "make" "-j" cores))))
+ (delete 'install)
+ (add-after 'build 'make-install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (invoke "make" "install" (string-append
+ "PREFIX="
+ (assoc-ref outputs "out"))))))
+ #:tests? #f))
+ (home-page "https://github.com/Oblomov/clinfo")
+ (synopsis "Print all known information about all available OpenCL platforms
+and devices in the system")
+ ;; Only the implementation installed via guix will be detected.
+ (description "This package is a simple command-line application that
+enumerates all possible (known) properties of the OpenCL platform and devices
+available on the Guix.")
+ (license license:non-copyleft)))
--
2.14.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#31436] [PATCH 3/3] gnu: Add beignet.
2018-06-26 13:44 ` Ludovic Courtès
` (3 preceding siblings ...)
2018-06-26 19:39 ` [bug#31436] [PATCH 2/3] gnu: Add clinfo Fis Trivial
@ 2018-06-26 19:40 ` Fis Trivial
2018-06-26 21:00 ` bug#31436: " Ludovic Courtès
4 siblings, 1 reply; 21+ messages in thread
From: Fis Trivial @ 2018-06-26 19:40 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 31436@debbugs.gnu.org
* gnu/packages/opencl.scm (beignet): New variable.
* gnu/packages/patches/beignet-correct-paths.patch: New file.
* gnu/local.mk: Add it.
---
gnu/local.mk | 1 +
gnu/packages/opencl.scm | 81 +++++++++++++++++++++++-
gnu/packages/patches/beignet-correct-paths.patch | 41 ++++++++++++
3 files changed, 121 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/beignet-correct-paths.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 30d314c88..07cff9b0c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -583,6 +583,7 @@ dist_patch_DATA = \
%D%/packages/patches/azr3.patch \
%D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
+ %D%/packages/patches/beignet-correct-paths.patch \
%D%/packages/patches/bind-CVE-2018-5738.patch \
%D%/packages/patches/binutils-aarch64-symbol-relocation.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index 0c2f7d147..ca633f8de 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -21,11 +21,21 @@
#:use-module (guix build-system cmake)
#:use-module (guix download)
#:use-module (guix git-download)
- #:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages gl)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages libedit)
+ #:use-module (gnu packages llvm)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
- #:use-module (gnu packages ruby))
+ #:use-module (gnu packages ruby)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xorg))
;; This file adds OpenCL implementation related packages. Due to the fact that
;; OpenCL devices are not available during build (store environment), tests are
@@ -198,3 +208,70 @@ and devices in the system")
enumerates all possible (known) properties of the OpenCL platform and devices
available on the Guix.")
(license license:non-copyleft)))
+
+(define-public beignet
+ (package
+ (name "beignet")
+ (version "1.3.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/intel/beignet/archive/Release_v"
+ version
+ ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "18r0lq3dkd4yn6bxa45s2lrr9cjbg70nr2nn6xablvgqwzw0jb0r"))
+ (patches (search-patches "beignet-correct-paths.patch"))))
+ (native-inputs `(("pkg-config" ,pkg-config)
+ ("python" ,python)))
+ (inputs `(("clang@3.7" ,clang-3.7)
+ ("clang-runtime@3.7" ,clang-runtime-3.7)
+ ("glu" ,glu)
+ ("llvm@3.7" ,llvm-3.7)
+ ("libdrm" ,libdrm)
+ ("libedit" ,libedit)
+ ("libpthread-stubs", libpthread-stubs)
+ ("libsm" ,libsm)
+ ("libva" ,libva)
+ ("libxfixes" ,libxfixes)
+ ("libxext" ,libxext)
+ ("mesa-utils" ,mesa-utils)
+ ("ncurses" ,ncurses)
+ ("ocl-icd" ,ocl-icd)
+ ("opencl-headers" ,opencl-headers)
+ ("xextproto" ,xextproto)
+ ("zlib" ,zlib)))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list (string-append "-DCLANG_LIBRARY_DIR="
+ (assoc-ref %build-inputs "clang@3.7") "/lib")
+ "-DENABLE_GL_SHARING=ON"
+ "-DEXPERIMENTAL_DOUBLE=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'remove-headers
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (delete-file-recursively
+ (string-append out "/include")))))
+ (add-after 'remove-headers 'install-kernels
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (builddir (getcwd))
+ (source-dir (string-append
+ builddir
+ "/../beignet-Release_v1.3.2/kernels")))
+ (copy-recursively source-dir (string-append
+ out
+ "/lib/beignet/kernels"))))))
+ ;; Beignet tries to find GPU when running tests, which is not available
+ ;; during build.
+ #:tests? #f))
+ (home-page "https://wiki.freedesktop.org/www/Software/Beignet/")
+ (synopsis "Intel's OpenCL framework")
+ (description "Intel's OpenCL framework that works with Intel IvyBridge GPUs
+and above.")
+ (license license:gpl2)))
diff --git a/gnu/packages/patches/beignet-correct-paths.patch b/gnu/packages/patches/beignet-correct-paths.patch
new file mode 100644
index 000000000..0435f9503
--- /dev/null
+++ b/gnu/packages/patches/beignet-correct-paths.patch
@@ -0,0 +1,41 @@
+From 0ba525465782ec3fd6484b7483941344f293d3ab Mon Sep 17 00:00:00 2001
+From: fis <ybbs.daans@hotmail.com>
+Date: Sun, 8 Apr 2018 02:14:44 +0800
+Subject: [PATCH] Correct paths.
+
+* CMake/FindLLVM.cmake (CLANG_LIBRARY_DIR): New vairable.
+* CMakelists: Let cmake figure out where to install icd file.
+---
+ CMake/FindLLVM.cmake | 2 +-
+ CMakeLists.txt | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/CMake/FindLLVM.cmake b/CMake/FindLLVM.cmake
+index 5457f248..e8e8f94a 100644
+--- a/CMake/FindLLVM.cmake
++++ b/CMake/FindLLVM.cmake
+@@ -107,7 +107,7 @@ endif (LLVM_VERSION_NODOT VERSION_GREATER 34)
+ macro(add_one_lib name)
+ FIND_LIBRARY(CLANG_LIB
+ NAMES ${name}
+- PATHS ${LLVM_LIBRARY_DIR} NO_DEFAULT_PATH)
++ PATHS ${CLANG_LIBRARY_DIR} NO_DEFAULT_PATH)
+ set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_LIB})
+ unset(CLANG_LIB CACHE)
+ endmacro()
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c11acbb2..fb99e5c8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -217,7 +217,7 @@ IF(OCLIcd_FOUND)
+ "intel-beignet.icd.in"
+ "${ICD_FILE_NAME}"
+ )
+- install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ICD_FILE_NAME} DESTINATION /etc/OpenCL/vendors)
++ install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ICD_FILE_NAME} DESTINATION etc/OpenCL/vendors COMPONENT config)
+ ELSE(OCLIcd_FOUND)
+ MESSAGE(STATUS "Looking for OCL ICD header file - not found")
+ MESSAGE(FATAL_ERROR "OCL ICD loader miss. If you really want to disable OCL ICD support, please run cmake with option -DOCLICD_COMPAT=0.")
+--
+2.14.3
+
--
2.14.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* bug#31436: [PATCH 3/3] gnu: Add beignet.
2018-06-26 19:40 ` [bug#31436] [PATCH 3/3] gnu: Add beignet Fis Trivial
@ 2018-06-26 21:00 ` Ludovic Courtès
0 siblings, 0 replies; 21+ messages in thread
From: Ludovic Courtès @ 2018-06-26 21:00 UTC (permalink / raw)
To: Fis Trivial; +Cc: 31436@debbugs.gnu.org
[-- Attachment #1: Type: text/plain, Size: 1197 bytes --]
Fis Trivial <ybbs.daans@hotmail.com> skribis:
> * gnu/packages/opencl.scm (beignet): New variable.
> * gnu/packages/patches/beignet-correct-paths.patch: New file.
> * gnu/local.mk: Add it.
Applied with the changes below.
There’s one issue, though: the ‘beignet.pch’ file is not bit
reproducible, as can be seen when running ‘guix build beignet --check
-K’. The file is generated by Clang:
--8<---------------cut here---------------start------------->8---
ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.local.pch
COMMAND mkdir -p ${OCL_OBJECT_DIR}
COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I ${OCL_OBJECT_DIR}/include/ -emit-pch -x cl ${OCL_OBJECT_DIR}/include/ocl.h -o ${OCL_OBJECT_DIR}/beignet.local.pch
DEPENDS ${OCL_HEADER_FILES}
COMMENT "Generate the pch file: ${OCL_OBJECT_DIR}/beignet.local.pch"
)
--8<---------------cut here---------------end--------------->8---
This may be a Clang/LLVM issue not specific to Beignet, and we should
ask the Clang/LLVM people about it.
Thanks for following up on this patch series! I’m closing it now, but
hopefully later on we’ll have POCL as well.
Thanks,
Ludo’.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 4638 bytes --]
diff --git a/gnu/local.mk b/gnu/local.mk
index b400c9f18..08888da35 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -583,7 +583,7 @@ dist_patch_DATA = \
%D%/packages/patches/azr3.patch \
%D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
- %D%/packages/patches/beignet-correct-paths.patch \
+ %D%/packages/patches/beignet-correct-file-names.patch \
%D%/packages/patches/bind-CVE-2018-5738.patch \
%D%/packages/patches/binutils-aarch64-symbol-relocation.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index b209d361d..644cd95e9 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -224,7 +224,12 @@ the system.")
(sha256
(base32
"18r0lq3dkd4yn6bxa45s2lrr9cjbg70nr2nn6xablvgqwzw0jb0r"))
- (patches (search-patches "beignet-correct-paths.patch"))))
+ (patches (search-patches "beignet-correct-file-names.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; There's a suspicious .isa binary file under kernels/.
+ ;; Remove it.
+ '(for-each delete-file (find-files "." "\\.isa$")))))
(native-inputs `(("pkg-config" ,pkg-config)
("python" ,python)))
(inputs `(("clang@3.7" ,clang-3.7)
@@ -251,13 +256,15 @@ the system.")
(assoc-ref %build-inputs "clang@3.7") "/lib")
"-DENABLE_GL_SHARING=ON"
"-DEXPERIMENTAL_DOUBLE=ON")
+
#:phases
(modify-phases %standard-phases
(add-after 'install 'remove-headers
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(delete-file-recursively
- (string-append out "/include")))))
+ (string-append out "/include"))
+ #t)))
(add-after 'remove-headers 'install-kernels
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -265,14 +272,19 @@ the system.")
(source-dir (string-append
builddir
"/../beignet-Release_v1.3.2/kernels")))
- (copy-recursively source-dir (string-append
- out
- "/lib/beignet/kernels"))))))
+ (copy-recursively source-dir
+ (string-append out "/lib/beignet/kernels"))
+ #t))))
;; Beignet tries to find GPU when running tests, which is not available
;; during build.
#:tests? #f))
(home-page "https://wiki.freedesktop.org/www/Software/Beignet/")
- (synopsis "Intel's OpenCL framework")
- (description "Intel's OpenCL framework that works with Intel IvyBridge GPUs
-and above.")
- (license license:gpl2)))
+ (synopsis "OpenCL framework for Intel GPUs")
+ (description
+ "Beignet is an implementation of the OpenCL specification. This code
+base contains the code to run OpenCL programs on Intel GPUs---IvyBridge,
+Haswell, Skylake, Apollolake, etc. It defines and implements the OpenCL host
+functions required to initialize the device, create the command queues, the
+kernels and the programs, and run them on the GPU. The code also contains a
+back-end for the LLVM compiler framework.")
+ (license license:lgpl2.1+)))
diff --git a/gnu/packages/patches/beignet-correct-paths.patch b/gnu/packages/patches/beignet-correct-file-names.patch
similarity index 73%
rename from gnu/packages/patches/beignet-correct-paths.patch
rename to gnu/packages/patches/beignet-correct-file-names.patch
index 96f15d782..2c5d0bbae 100644
--- a/gnu/packages/patches/beignet-correct-paths.patch
+++ b/gnu/packages/patches/beignet-correct-file-names.patch
@@ -1,14 +1,5 @@
-From 0ba525465782ec3fd6484b7483941344f293d3ab Mon Sep 17 00:00:00 2001
-From: fis <ybbs.daans@hotmail.com>
-Date: Sun, 8 Apr 2018 02:14:44 +0800
-Subject: [PATCH] Correct paths.
-
-* CMake/FindLLVM.cmake (CLANG_LIBRARY_DIR): New vairable.
-* CMakelists: Let cmake figure out where to install icd file.
----
- CMake/FindLLVM.cmake | 2 +-
- CMakeLists.txt | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+Help CMake find Clang's libraries.
+Have it install the ICD file in the right place.
diff --git a/CMake/FindLLVM.cmake b/CMake/FindLLVM.cmake
index 5457f248..e8e8f94a 100644
^ permalink raw reply related [flat|nested] 21+ messages in thread