guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: gnu: fftw: Build SIMD codelets.


From: Eric Bavier
Subject: 01/01: gnu: fftw: Build SIMD codelets.
Date: Tue, 17 Apr 2018 17:25:51 -0400 (EDT)

bavier pushed a commit to branch core-updates
in repository guix.

commit 65bb22796f854cbc3eae053a80b1d64365dad376
Author: Eric Bavier <address@hidden>
Date:   Fri Apr 6 10:53:06 2018 -0500

    gnu: fftw: Build SIMD codelets.
    
    * gnu/packages/algebra.scm (fftw)[arguments]: Remove 'no-native phase; use
    configure cache value instead.  Add configure flags for SIMD codelets.
    (fftwf)[arguments]: Add neon configuration flag for 32-bit arm.
    (fftw-avx): Remove variable.
---
 gnu/packages/algebra.scm | 63 ++++++++++++++++++++----------------------------
 1 file changed, 26 insertions(+), 37 deletions(-)

diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 6494438..57cf583 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -531,19 +531,28 @@ a C program.")
                "0wsms8narnbhfsa8chdflv2j9hzspvflblnqdn7hw8x5xdzrnq1v"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags
-       '("--enable-shared" "--enable-openmp" "--enable-threads")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'no-native
-                 (lambda _
-                   ;; By default '-mtune=native' is used.  However, that may
-                   ;; cause the use of ISA extensions (SSE2, etc.) that are
-                   ;; not necessarily available on the user's machine when
-                   ;; that package is built on a different machine.
-                   (substitute* (find-files "." "Makefile$")
-                     (("-mtune=native") ""))
-                   #t)))))
+     `(#:configure-flags
+       `("--enable-shared" "--enable-openmp" "--enable-threads"
+         ,,@(let ((system (or (%current-target-system) (%current-system))))
+              ;; Enable SIMD extensions for codelets.  See details at:
+              ;; <http://fftw.org/fftw3_doc/Installation-on-Unix.html>.
+              (cond
+               ((string-prefix? "x86_64" system)
+                '("--enable-sse2" "--enable-avx" "--enable-avx2"
+                  "--enable-avx512" "--enable-avx-128-fma"))
+               ((string-prefix? "i686" system)
+                '("--enable-sse2"))
+               ((string-prefix? "aarch64" system)
+                '("--enable-neon" "--enable-armv8-cntvct-el0"))
+               ((string-prefix? "arm" system) ;neon only for single-precision
+                '("--enable-armv7a-cntvct"))  ;on 32-bit arm
+               ((string-prefix? "mips" system)
+                '("--enable-mips-zbus-timer"))))
+         ;; By default '-mtune=native' is used.  However, that may cause the
+         ;; use of ISA extensions (e.g. AVX) that are not necessarily
+         ;; available on the user's machine when that package is built on a
+         ;; different machine.
+         "ax_cv_c_flags__mtune_native=no")))
     (native-inputs `(("perl" ,perl)))
     (home-page "http://fftw.org";)
     (synopsis "Computing the discrete Fourier transform")
@@ -560,7 +569,10 @@ cosine/ sine transforms or DCT/DST).")
     (arguments
      (substitute-keyword-arguments (package-arguments fftw)
        ((#:configure-flags cf)
-        `(cons "--enable-float" ,cf))))
+        (if (string-prefix? "arm" (or (%current-target-system)
+                                      (%current-system)))
+            `(cons "--enable-neon" ,cf)
+            cf))))
     (description
      (string-append (package-description fftw)
                     "  Single-precision version."))))
@@ -579,29 +591,6 @@ cosine/ sine transforms or DCT/DST).")
      (string-append (package-description fftw)
                     "  With OpenMPI parallelism support."))))
 
-(define-public fftw-avx
-  (package
-    (inherit fftw)
-    (name "fftw-avx")
-    (arguments
-     (substitute-keyword-arguments (package-arguments fftw)
-       ((#:configure-flags flags ''())
-        ;; Enable AVX & co.  See details at:
-        ;; <http://fftw.org/fftw3_doc/Installation-on-Unix.html>.
-        `(append '("--enable-avx" "--enable-avx2" "--enable-avx512"
-                   "--enable-avx-128-fma")
-                 ,flags))
-       ((#:substitutable? _ #f)
-        ;; To run the tests, we must have a CPU that supports all these
-        ;; extensions.  Since we cannot be sure that machines in the build
-        ;; farm support them, disable substitutes altogether.
-        #f)
-       ((#:phases _)
-        ;; Since we're not providing binaries, let '-mtune=native' through.
-        '%standard-phases)))
-    (synopsis "Computing the discrete Fourier transform (AVX2-optimized)")
-    (supported-systems '("x86_64-linux"))))
-
 (define-public java-la4j
   (package
     (name "java-la4j")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]