mirror of
https://codeberg.org/guix/guix.git
synced 2026-01-25 03:55:08 -06:00
gnu: elpa: Update to 2025.06.001.
* gnu/packages/maths.scm (elpa): Update to 2025.06.001. [source]: Switch to ‘git-fetch’. [native-inputs]: Add Autotools and Python; remove labels. [inputs]: Remove labels. [arguments]: Use gexps. [properties]: New field. (elpa-openmpi): Use ‘package/inherit’. [inputs]: Remove labels. [arguments]: Use gexps. Change-Id: Ie12fa7242e15779e8dd3965822f7699f6078e39a Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #5475
This commit is contained in:
parent
97c360a09c
commit
c9f41f7202
1 changed files with 85 additions and 74 deletions
|
|
@ -12,7 +12,7 @@
|
||||||
;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
|
;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
|
||||||
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
|
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
|
||||||
;;; Copyright © 2016, 2018, 2020, 2021 Kei Kebreau <kkebreau@posteo.net>
|
;;; Copyright © 2016, 2018, 2020, 2021 Kei Kebreau <kkebreau@posteo.net>
|
||||||
;;; Copyright © 2016-2025 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2016-2026 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
|
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
|
||||||
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
|
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
|
||||||
;;; Copyright © 2017, 2018, 2019, 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
|
;;; Copyright © 2017, 2018, 2019, 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
|
||||||
|
|
@ -8705,92 +8705,103 @@ theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
|
||||||
(define-public elpa
|
(define-public elpa
|
||||||
(package
|
(package
|
||||||
(name "elpa")
|
(name "elpa")
|
||||||
(version "2018.11.001")
|
(version "2025.06.001")
|
||||||
(source (origin
|
(source
|
||||||
(method url-fetch)
|
(origin
|
||||||
(uri (string-append "https://elpa.mpcdf.mpg.de/software/"
|
(method git-fetch)
|
||||||
"tarball-archive/Releases/"
|
(uri (git-reference
|
||||||
version "/elpa-" version ".tar.gz"))
|
(url "https://gitlab.mpcdf.mpg.de/elpa/elpa")
|
||||||
(sha256
|
(commit (string-append "new_release_" version))))
|
||||||
(base32
|
(file-name (git-file-name name version))
|
||||||
"05hv3v5i6xmziaizw350ff72y1c3k662r85fm3xfdrkclj5zw9yc"))))
|
(sha256
|
||||||
|
(base32 "1j2mqa8g76z6xmwji99320v6q98p823glvxjsdcdpaji59wgvdql"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(native-inputs
|
|
||||||
`(("fortran" ,gfortran)
|
|
||||||
("perl" ,perl))) ;for configure and deps
|
|
||||||
(inputs
|
|
||||||
`(("blas" ,openblas)))
|
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags
|
(list #:configure-flags
|
||||||
`("--enable-openmp"
|
#~`("--enable-openmp" "--with-mpi=no"
|
||||||
"--with-mpi=no"
|
;; ELPA unfortunately does not support runtime dispatch, so we
|
||||||
;; ELPA unfortunately does not support runtime dispatch, so we can
|
;; can only enable the "generic" kernels. See the "Cross
|
||||||
;; only enable the "generic" kernels. See the "Cross compilation"
|
;; compilation" section of INSTALL.md.
|
||||||
;; section of INSTALL.md.
|
"--enable-generic-kernels"
|
||||||
"--enable-generic"
|
"--disable-sse"
|
||||||
"--disable-sse" "--disable-sse-assembly" ;Require SSE3
|
"--disable-sse-assembly" ;Require SSE3
|
||||||
"--disable-avx" "--disable-avx2" "--disable-avx512"
|
"--disable-avx"
|
||||||
,(string-append "CFLAGS=-O3 "
|
"--disable-avx2"
|
||||||
"-funsafe-loop-optimizations -funsafe-math-optimizations "
|
"--disable-avx512"
|
||||||
"-ftree-vect-loop-version -ftree-vectorize "
|
#$(string-append "CFLAGS=-O3 -funsafe-loop-optimizations "
|
||||||
,(let ((system (or (%current-target-system)
|
"-funsafe-math-optimizations "
|
||||||
(%current-system))))
|
"-ftree-vect-loop-version -ftree-vectorize "
|
||||||
(cond
|
(let ((system (or (%current-target-system)
|
||||||
((or (string-prefix? "x86_64" system)
|
(%current-system))))
|
||||||
(string-prefix? "i686" system))
|
(cond
|
||||||
"-msse2")
|
((or (string-prefix? "x86_64" system)
|
||||||
(else "")))))
|
(string-prefix? "i686" system))
|
||||||
#:parallel-tests? #f ;tests are multi-threaded, via BLAS
|
"-msse2")
|
||||||
#:phases
|
(else "")))))
|
||||||
(modify-phases %standard-phases
|
#:parallel-tests? #f ;tests are multi-threaded, via BLAS
|
||||||
(add-before 'configure 'patch-header-generation
|
#:phases
|
||||||
(lambda _
|
#~(modify-phases %standard-phases
|
||||||
(substitute* "configure"
|
(add-before 'bootstrap 'patch-shebangs-early
|
||||||
(("^ *make.*top_srcdir=\"\\$srcdir\"" &)
|
(lambda _
|
||||||
(string-append & " CPP=\"$CPP\"")))
|
(patch-shebang "generate_automake_test_programs.py")))
|
||||||
#t))
|
(add-before 'configure 'patch-header-generation
|
||||||
(add-before 'check 'setup-tests
|
(lambda _
|
||||||
(lambda _
|
(substitute* "configure"
|
||||||
;; Decrease test time and RAM use by computing fewer eigenvalues.
|
(("^ *make.*top_srcdir=\"\\$srcdir\"" &)
|
||||||
;; The flags are (MATRIX-SIZE, EIGENVALUES, BLOCK-SIZE), where
|
(string-append & " CPP=\"$CPP\""))) #t))
|
||||||
;; the default is (500, 250, 16) for C tests and (5000, 150, 16)
|
(add-before 'check 'setup-tests
|
||||||
;; for Fortran. This also causes several tests to pass that
|
(lambda _
|
||||||
;; otherwise would otherwise fail with matrix size 5000; possibly
|
;; Decrease test time and RAM use by computing fewer
|
||||||
;; due to floating point tolerances that are too tight.
|
;; eigenvalues. The flags are (MATRIX-SIZE, EIGENVALUES,
|
||||||
(setenv "TEST_FLAGS" "1500 50 16") ;from elpa.spec
|
;; BLOCK-SIZE), where the default is (500, 250, 16) for C
|
||||||
(setenv "OMP_NUM_THREADS" (number->string (parallel-job-count)))
|
;; tests and (5000, 150, 16) for Fortran. This also causes
|
||||||
(substitute* "Makefile"
|
;; several tests to pass that otherwise would otherwise
|
||||||
;; Test scripts are generated, patch the shebang
|
;; fail with matrix size 5000; possibly due to floating
|
||||||
(("#!/bin/bash") (string-append "#!" (which "sh"))))
|
;; point tolerances that are too tight.
|
||||||
#t)))))
|
(setenv "TEST_FLAGS" "1500 50 16") ;from elpa.spec
|
||||||
|
(setenv "OMP_NUM_THREADS"
|
||||||
|
(number->string (parallel-job-count)))
|
||||||
|
(substitute* "Makefile"
|
||||||
|
;; Test scripts are generated, patch the shebang
|
||||||
|
(("#!/bin/bash")
|
||||||
|
(string-append "#!" (which "sh")))))))))
|
||||||
|
(native-inputs
|
||||||
|
(list autoconf-2.71
|
||||||
|
automake
|
||||||
|
libtool
|
||||||
|
gfortran
|
||||||
|
perl
|
||||||
|
python))
|
||||||
|
(inputs (list openblas))
|
||||||
(home-page "https://elpa.mpcdf.mpg.de")
|
(home-page "https://elpa.mpcdf.mpg.de")
|
||||||
(synopsis "Eigenvalue solvers for symmetric matrices")
|
(synopsis "Eigenvalue solvers for symmetric matrices")
|
||||||
(description
|
(description
|
||||||
"The ELPA library provides efficient and scalable direct eigensolvers for
|
"The ELPA library provides efficient and scalable direct eigensolvers for
|
||||||
symmetric matrices.")
|
symmetric matrices.")
|
||||||
(license license:lgpl3)))
|
(license license:lgpl3)
|
||||||
|
(properties '((tunable? . #t)))))
|
||||||
|
|
||||||
(define-public elpa-openmpi
|
(define-public elpa-openmpi
|
||||||
(package (inherit elpa)
|
(package/inherit elpa
|
||||||
(name "elpa-openmpi")
|
(name "elpa-openmpi")
|
||||||
(inputs
|
(inputs
|
||||||
`(("mpi" ,openmpi)
|
(modify-inputs (package-inputs elpa)
|
||||||
("scalapack" ,scalapack)
|
(prepend openmpi scalapack zlib)))
|
||||||
,@(package-inputs elpa)))
|
|
||||||
(arguments
|
(arguments
|
||||||
(substitute-keyword-arguments (package-arguments elpa)
|
(substitute-keyword-arguments (package-arguments elpa)
|
||||||
((#:configure-flags cf '())
|
((#:configure-flags cf #~())
|
||||||
`(cons "--with-mpi=yes" (delete "--with-mpi=no" ,cf)))
|
#~(cons "--with-mpi=yes"
|
||||||
((#:phases phases '%standard-phases)
|
(delete "--with-mpi=no" #$cf)))
|
||||||
`(modify-phases ,phases
|
((#:phases phases #~%standard-phases)
|
||||||
(add-before 'check 'mpi-setup
|
#~(modify-phases #$phases
|
||||||
(lambda _
|
(add-before 'check 'mpi-setup
|
||||||
;; Tests use 2 mpi tasks by default, use our remaining build
|
(lambda _
|
||||||
;; cores as OpenMP threads.
|
;; Tests use 2 mpi tasks by default, use our remaining build
|
||||||
(setenv "OMP_NUM_THREADS" (number->string
|
;; cores as OpenMP threads.
|
||||||
(max (quotient (parallel-job-count) 2)
|
(setenv "OMP_NUM_THREADS"
|
||||||
1)))
|
(number->string (max (quotient (parallel-job-count) 2)
|
||||||
(,%openmpi-setup)))))))
|
1)))
|
||||||
|
(#$%openmpi-setup)))))))
|
||||||
(synopsis "Eigenvalue solvers for symmetric matrices (with MPI support)")))
|
(synopsis "Eigenvalue solvers for symmetric matrices (with MPI support)")))
|
||||||
|
|
||||||
(define-public elemental
|
(define-public elemental
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue