GNU bug report logs - #31436
[PATCH 0/6] gnu: Add opencl related packages.

Previous Next

Package: guix-patches;

Reported by: Fis Trivial <ybbs.daans <at> hotmail.com>

Date: Sat, 12 May 2018 19:47:01 UTC

Severity: normal

Tags: patch

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Fis Trivial <ybbs.daans <at> hotmail.com>
Subject: bug#31436: closed (Re: [PATCH 3/3] gnu: Add beignet.)
Date: Tue, 26 Jun 2018 21:01:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#31436: [PATCH 0/6] gnu: Add opencl related packages.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 31436 <at> debbugs.gnu.org.

-- 
31436: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=31436
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: ludo <at> gnu.org (Ludovic Courtès)
To: Fis Trivial <ybbs.daans <at> hotmail.com>
Cc: "31436 <at> debbugs.gnu.org" <31436-done <at> debbugs.gnu.org>
Subject: Re: [PATCH 3/3] gnu: Add beignet.
Date: Tue, 26 Jun 2018 23:00:16 +0200
[Message part 3 (text/plain, inline)]
Fis Trivial <ybbs.daans <at> 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’.

[Message part 4 (text/x-patch, inline)]
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 <at> 3.7" ,clang-3.7)
@@ -251,13 +256,15 @@ the system.")
                             (assoc-ref %build-inputs "clang <at> 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 <at> 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
[Message part 5 (message/rfc822, inline)]
From: Fis Trivial <ybbs.daans <at> hotmail.com>
To: "guix-patches <at> gnu.org" <guix-patches <at> gnu.org>
Subject: [PATCH 0/6] gnu: Add opencl related packages.
Date: Sat, 12 May 2018 19:46:15 +0000
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.

 gnu/local.mk                                     |   2 +
 gnu/packages/opencl.scm                          | 327 +++++++++++++++++++++++
 gnu/packages/patches/beignet-correct-paths.patch |  41 +++
 3 files changed, 370 insertions(+)
 create mode 100644 gnu/packages/opencl.scm
 create mode 100644 gnu/packages/patches/beignet-correct-paths.patch

-- 
2.14.3




This bug report was last modified 6 years and 331 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.