diff options
Diffstat (limited to 'gnu/packages/maths.scm')
-rw-r--r-- | gnu/packages/maths.scm | 110 |
1 files changed, 100 insertions, 10 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 34c72dadad..7a03036b67 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014, 2016, 2017 John Darrington <jmd@gnu.org> -;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> @@ -584,7 +584,8 @@ problems in numerical linear algebra.") version ".tgz")) (sha256 (base32 - "0p1r61ss1fq0bs8ynnx7xq4wwsdvs32ljvwjnx6yxr8gd6pawx0c")))) + "0p1r61ss1fq0bs8ynnx7xq4wwsdvs32ljvwjnx6yxr8gd6pawx0c")) + (patches (search-patches "scalapack-blacs-mpi-deprecations.patch")))) (build-system cmake-build-system) (inputs `(("mpi" ,openmpi) @@ -1635,7 +1636,7 @@ September 2004}") (define-public petsc (package (name "petsc") - (version "3.10.2") + (version "3.10.3") (source (origin (method url-fetch) @@ -1643,7 +1644,7 @@ September 2004}") (uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/" "petsc-lite-" version ".tar.gz")) (sha256 - (base32 "0bl64pydak3rblnjffi482r8bin4xim9sb37ksl2jkcxf0i0irsi")))) + (base32 "10p9ap1rp6k8k2g8zdc505kdlsc3976fjymyp393sccjapm50dph")))) (outputs '("out" ;libraries and headers "examples")) ;~30MiB of examples (build-system gnu-build-system) @@ -3446,7 +3447,7 @@ revised simplex and the branch-and-bound methods.") (define-public dealii (package (name "dealii") - (version "8.5.1") + (version "9.0.1") (source (origin (method url-fetch) @@ -3454,7 +3455,8 @@ revised simplex and the branch-and-bound methods.") "download/v" version "/dealii-" version ".tar.gz")) (sha256 (base32 - "1bh9rsmkrg0zi70n27b11djmac9lximghsiy7mg7w7x544n82gnk")) + "0r7f8rhl3xr94imd372plizdcbqk0a70w73lwc3vw912dxk0sbyz")) + (patches (search-patches "dealii-mpi-deprecations.patch")) (modules '((guix build utils))) (snippet ;; Remove bundled sources: UMFPACK, TBB, muParser, and boost @@ -3507,10 +3509,8 @@ in finite element programs.") (arguments (substitute-keyword-arguments (package-arguments dealii) ((#:configure-flags cf) - ``("-DMPI_C_COMPILER=mpicc" - "-DMPI_CXX_COMPILER=mpicxx" - "-DMPI_Fortran_COMPILER=mpifort" - ,@,cf)) + `(cons "-DDEAL_II_WITH_MPI:BOOL=ON" + ,cf)) ((#:phases phases '%standard-phases) `(modify-phases ,phases (add-before 'check 'mpi-setup @@ -3973,6 +3973,96 @@ as equations, scalars, vectors, and matrices.") theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.") (license license:expat))) +(define-public elpa + (package + (name "elpa") + (version "2018.11.001") + (source (origin + (method url-fetch) + (uri (string-append "http://elpa.mpcdf.mpg.de/html/Releases/" + version "/elpa-" version ".tar.gz")) + (sha256 + (base32 + "05hv3v5i6xmziaizw350ff72y1c3k662r85fm3xfdrkclj5zw9yc")))) + (build-system gnu-build-system) + (native-inputs + `(("fortran" ,gfortran) + ("perl" ,perl))) ;for configure and deps + (inputs + `(("blas" ,openblas))) + (arguments + `(#:configure-flags + `("--enable-openmp" + "--with-mpi=no" + ;; ELPA unfortunately does not support runtime dispatch, so we can + ;; only enable the "generic" kernels. See the "Cross compilation" + ;; section of INSTALL.md. + "--enable-generic" + "--disable-sse" "--disable-sse-assembly" ;Require SSE3 + "--disable-avx" "--disable-avx2" "--disable-avx512" + ,(string-append "CFLAGS=-O3 " + "-funsafe-loop-optimizations -funsafe-math-optimizations " + "-ftree-vect-loop-version -ftree-vectorize " + ,(let ((system (or (%current-target-system) + (%current-system)))) + (cond + ((or (string-prefix? "x86_64" system) + (string-prefix? "i686" system)) + "-msse2") + (else ""))))) + #:parallel-tests? #f ;tests are multi-threaded, via BLAS + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-header-generation + (lambda _ + (substitute* "configure" + (("^ *make.*top_srcdir=\"\\$srcdir\"" &) + (string-append & " CPP=\"$CPP\""))) + #t)) + (add-before 'check 'setup-tests + (lambda _ + ;; Decrease test time and RAM use by computing fewer eigenvalues. + ;; The flags are (MATRIX-SIZE, EIGENVALUES, BLOCK-SIZE), where + ;; the default is (500, 250, 16) for C tests and (5000, 150, 16) + ;; for Fortran. This also causes several tests to pass that + ;; otherwise would otherwise fail with matrix size 5000; possibly + ;; due to floating point tolerances that are too tight. + (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")))) + #t))))) + (home-page "http://elpa.mpcdf.mpg.de") + (synopsis "Eigenvalue solvers for symmetric matrices") + (description + "The ELPA library provides efficient and scalable direct eigensolvers for +symmetric matrices.") + (license license:lgpl3))) + +(define-public elpa-openmpi + (package (inherit elpa) + (name "elpa-openmpi") + (inputs + `(("mpi" ,openmpi) + ("scalapack" ,scalapack) + ,@(package-inputs elpa))) + (arguments + (substitute-keyword-arguments (package-arguments elpa) + ((#:configure-flags cf '()) + `(cons "--with-mpi=yes" (delete "--with-mpi=no" ,cf))) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'mpi-setup + (lambda _ + ;; Tests use 2 mpi tasks by default, use our remaining build + ;; cores as OpenMP threads. + (setenv "OMP_NUM_THREADS" (number->string + (max (quotient (parallel-job-count) 2) + 1))) + (,%openmpi-setup))))))) + (synopsis "Eigenvalue solvers for symmetric matrices (with MPI support)"))) + (define-public elemental (package (name "elemental") |