GNU bug report logs -
#32681
OpenBLAS with ILP64 storage model
Previous Next
Reported by: Eric Brown <brown <at> fastmail.com>
Date: Mon, 10 Sep 2018 13:43:01 UTC
Severity: normal
Done: ludovic.courtes <at> inria.fr (Ludovic Courtès)
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 32681 in the body.
You can then email your comments to 32681 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-guix <at> gnu.org
:
bug#32681
; Package
guix
.
(Mon, 10 Sep 2018 13:43:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Eric Brown <brown <at> fastmail.com>
:
New bug report received and forwarded. Copy sent to
bug-guix <at> gnu.org
.
(Mon, 10 Sep 2018 13:43:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
This patch introduces a new package named `openblas-ilp64', which uses
the ILP64 model.
The library name contains the suffix "_ilp64" to the library name and so
hopefully may co-exist with the existing `openblas' port.
[0001-gnu-Add-openblas-ilp64.patch (text/x-diff, inline)]
From 8c9728eb66a45fd42f208df66d323981837c9c0c Mon Sep 17 00:00:00 2001
From: Eric Brown <brown <at> fastmail.com>
Date: Mon, 10 Sep 2018 08:33:43 -0500
Subject: [PATCH] gnu: Add openblas-ilp64.
* gnu/packages/maths.scm (openblas-ilp64): New variable.
---
gnu/packages/maths.scm | 71 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 01bd03c60..5f1dfec8a 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -27,6 +27,7 @@
;;; Copyright © 2018 Nadya Voronova <voronovank <at> gmail.com>
;;; Copyright © 2018 Adam Massmann <massmannak <at> gmail.com>
;;; Copyright © 2018 Marius Bakke <mbakke <at> fastmail.com>
+;;; Copyright © 2018 Eric Brown <brown <at> fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2909,6 +2910,76 @@ parts of it.")
"OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version.")
(license license:bsd-3)))
+(define-public openblas-ilp64
+ (package
+ (name "openblas-ilp64")
+ (version "0.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/openblas/v" version "/OpenBLAS%20"
+ version "%20version.tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0b20km2jv7m6qiylrlvhq2vnmkmilb633mr8rhqmgbn1wqrp58jq"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:test-target "test"
+ ;; DYNAMIC_ARCH is only supported on x86. When it is disabled and no
+ ;; TARGET is specified, OpenBLAS will tune itself to the build host, so
+ ;; we need to disable substitutions.
+ #:substitutable?
+ ,(let ((system (or (%current-target-system) (%current-system))))
+ (or (string-prefix? "x86_64" system)
+ (string-prefix? "i686" system)
+ (string-prefix? "mips" system)
+ (string-prefix? "aarch64" system)))
+ #:make-flags
+ (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+ "SHELL=bash"
+ ;; Build the library for all supported CPUs. This allows
+ ;; switching CPU targets at runtime with the environment variable
+ ;; OPENBLAS_CORETYPE=<type>, where "type" is a supported CPU type.
+ ;; Unfortunately, this is not supported on non-x86 architectures,
+ ;; where it leads to failed builds.
+ ,@(let ((system (or (%current-target-system) (%current-system))))
+ (cond
+ ((or (string-prefix? "x86_64" system)
+ (string-prefix? "i686" system))
+ '("DYNAMIC_ARCH=1" "INTERFACE64=1" "LIBNAMESUFFIX=ilp64"))
+ ;; On MIPS we force the "SICORTEX" TARGET, as for the other
+ ;; two available MIPS targets special extended instructions
+ ;; for Loongson cores are used.
+ ((string-prefix? "mips" system)
+ '("TARGET=SICORTEX" "INTERFACE64=1" "LIBNAMESUFFIX=ilp64"))
+ ;; On aarch64 force the generic 'armv8-a' target
+ ((string-prefix? "aarch64" system)
+ '("TARGET=ARMV8" "INTERFACE64=1" "LIBNAMESUFFIX=ilp64"))
+ (else '("INTERFACE64=1" "LIBNAMESUFFIX=ilp64")))))
+ ;; no configure script
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'set-extralib
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Get libgfortran found when building in utest.
+ (setenv "FEXTRALIB"
+ (string-append "-L" (assoc-ref inputs "fortran-lib")
+ "/lib"))
+ #t)))))
+ (inputs
+ `(("fortran-lib" ,gfortran "lib")))
+ (native-inputs
+ `(("cunit" ,cunit)
+ ("fortran" ,gfortran)
+ ("perl" ,perl)))
+ (home-page "http://www.openblas.net/")
+ (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
+ (description
+ "OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version. (ILP64 version)")
+ (license license:bsd-3)))
+
(define* (make-blis implementation #:optional substitutable?)
"Return a BLIS package with the given IMPLEMENTATION (see config/ in the
source tree for a list of implementations.)
--
2.18.0
[0001-gnu-Add-openblas-ilp64.patch (text/x-diff, attachment)]
Information forwarded
to
bug-guix <at> gnu.org
:
bug#32681
; Package
guix
.
(Tue, 11 Sep 2018 10:19:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 32681 <at> debbugs.gnu.org (full text, mbox):
Hi Eric,
(Cc Eric Bavier and Markus who may be familiar with OpenBLAS.)
Eric Brown <brown <at> fastmail.com> skribis:
>>From 8c9728eb66a45fd42f208df66d323981837c9c0c Mon Sep 17 00:00:00 2001
> From: Eric Brown <brown <at> fastmail.com>
> Date: Mon, 10 Sep 2018 08:33:43 -0500
> Subject: [PATCH] gnu: Add openblas-ilp64.
>
> * gnu/packages/maths.scm (openblas-ilp64): New variable.
[...]
> +(define-public openblas-ilp64
> + (package
> + (name "openblas-ilp64")
> + (version "0.3.2")
Should we write it as:
(package
(inherit openblas)
…)
? That would avoid duplication with the ‘openblas’ package.
Also, should we add a ‘supported-systems’ field to restrict builds to
x86_64-linux, aarch64-linux, and mips64el-linux?
Apart from that it LGTM.
Thanks for the patch!
Ludo’.
Information forwarded
to
bug-guix <at> gnu.org
:
bug#32681
; Package
guix
.
(Thu, 13 Sep 2018 14:17:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 32681 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
ludovic.courtes <at> inria.fr (Ludovic Courtès) writes:
> Should we write it as:
>
> (package
> (inherit openblas)
> …)
>
> ? That would avoid duplication with the ‘openblas’ package.
>
> Also, should we add a ‘supported-systems’ field to restrict builds to
> x86_64-linux, aarch64-linux, and mips64el-linux?
>
> Apart from that it LGTM.
>
> Thanks for the patch!
>
> Ludo’.
Hi Ludo',
Please find a patch attached which incorporates your suggestions.
Best regards,
Eric
[0001-openblas-ilp64-Add-support-for-the-ILP64-storage-mod.patch (text/x-diff, inline)]
From 08ec9c94431af425d5dfc2cafc428bee10904ff6 Mon Sep 17 00:00:00 2001
From: Eric Brown <brown <at> fastmail.com>
Date: Thu, 13 Sep 2018 08:54:36 -0500
Subject: [PATCH] openblas-ilp64: Add support for the ILP64 storage model.
* gnu/packages/maths.scm (openblas-ilp64): New variable.
---
gnu/packages/maths.scm | 59 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index af41093fb..7f1034dc4 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -27,6 +27,7 @@
;;; Copyright © 2018 Nadya Voronova <voronovank <at> gmail.com>
;;; Copyright © 2018 Adam Massmann <massmannak <at> gmail.com>
;;; Copyright © 2018 Marius Bakke <mbakke <at> fastmail.com>
+;;; Copyright © 2018 Eric Brown <brown <at> fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2873,6 +2874,64 @@ parts of it.")
"OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version.")
(license license:bsd-3)))
+(define-public openblas-ilp64
+ (package (inherit openblas)
+ (name "openblas-ilp64")
+ (version "0.3.2")
+ (supported-systems (list
+ "x86_64-linux"
+ "aarch64-linux"
+ "mips64el-linux"))
+ (arguments
+ `(#:test-target "test"
+ ;; DYNAMIC_ARCH is only supported on x86. When it is disabled and no
+ ;; TARGET is specified, OpenBLAS will tune itself to the build host, so
+ ;; we need to disable substitutions.
+ #:substitutable?
+ ,(let ((system (or (%current-target-system) (%current-system))))
+ (or (string-prefix? "x86_64" system)
+ (string-prefix? "mips" system)
+ (string-prefix? "aarch64" system)))
+ #:make-flags
+ (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+ "SHELL=bash"
+ ;; Build the library for all supported CPUs. This allows
+ ;; switching CPU targets at runtime with the environment variable
+ ;; OPENBLAS_CORETYPE=<type>, where "type" is a supported CPU type.
+ ;; Unfortunately, this is not supported on non-x86 architectures,
+ ;; where it leads to failed builds.
+ "INTERFACE64=1"
+ "LIBNAMESUFFIX=ilp64"
+ ,@(let ((system (or (%current-target-system) (%current-system))))
+ (cond
+ ((string-prefix? "x86_64" system)
+ '("DYNAMIC_ARCH=1"))
+ ;; On MIPS we force the "SICORTEX" TARGET, as for the other
+ ;; two available MIPS targets special extended instructions
+ ;; for Loongson cores are used.
+ ((string-prefix? "mips" system)
+ '("TARGET=SICORTEX"))
+ ;; On aarch64 force the generic 'armv8-a' target
+ ((string-prefix? "aarch64" system)
+ '("TARGET=ARMV8"))
+ (else '()))))
+ ;; no configure script
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'set-extralib
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Get libgfortran found when building in utest.
+ (setenv "FEXTRALIB"
+ (string-append "-L" (assoc-ref inputs "fortran-lib")
+ "/lib"))
+ #t)))))
+ (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
+ (description
+ "OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version. (ILP64 version)")
+ (license license:bsd-3)))
+
+
(define* (make-blis implementation #:optional substitutable?)
"Return a BLIS package with the given IMPLEMENTATION (see config/ in the
source tree for a list of implementations.)
--
2.19.0
[0001-openblas-ilp64-Add-support-for-the-ILP64-storage-mod.patch (text/x-diff, attachment)]
Reply sent
to
ludovic.courtes <at> inria.fr (Ludovic Courtès)
:
You have taken responsibility.
(Fri, 14 Sep 2018 09:25:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
Eric Brown <brown <at> fastmail.com>
:
bug acknowledged by developer.
(Fri, 14 Sep 2018 09:25:02 GMT)
Full text and
rfc822 format available.
Message #16 received at 32681-done <at> debbugs.gnu.org (full text, mbox):
Hi Eric,
Eric Brown <brown <at> fastmail.com> skribis:
> Please find a patch attached which incorporates your suggestions.
I simplified it further and pushed as
daa6036fda502460f626b7beb0afa93a0bac6d01.
Thanks!
Ludo’.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Fri, 12 Oct 2018 11:24:05 GMT)
Full text and
rfc822 format available.
This bug report was last modified 6 years and 310 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.