gnu: Add MPICH.
* gnu/packages/mpi.scm (mpich): New variable. Co-authored-by: Ludovic Courtès <ludovic.courtes@inria.fr>
This commit is contained in:
		
							parent
							
								
									7046106ef9
								
							
						
					
					
						commit
						c70261bfb9
					
				
					 1 changed files with 80 additions and 1 deletions
				
			
		| 
						 | 
					@ -27,13 +27,15 @@
 | 
				
			||||||
(define-module (gnu packages mpi)
 | 
					(define-module (gnu packages mpi)
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module ((guix licenses)
 | 
					  #:use-module ((guix licenses)
 | 
				
			||||||
                #:hide (expat))
 | 
					                #:hide (expat zlib))
 | 
				
			||||||
  #:use-module (guix download)
 | 
					  #:use-module (guix download)
 | 
				
			||||||
  #:use-module (guix utils)
 | 
					  #:use-module (guix utils)
 | 
				
			||||||
  #:use-module (guix deprecation)
 | 
					  #:use-module (guix deprecation)
 | 
				
			||||||
  #:use-module (guix build-system gnu)
 | 
					  #:use-module (guix build-system gnu)
 | 
				
			||||||
  #:use-module (guix build-system python)
 | 
					  #:use-module (guix build-system python)
 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					  #:use-module (gnu packages)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages base)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages compression)
 | 
				
			||||||
  #:use-module (gnu packages fabric-management)
 | 
					  #:use-module (gnu packages fabric-management)
 | 
				
			||||||
  #:use-module (gnu packages gcc)
 | 
					  #:use-module (gnu packages gcc)
 | 
				
			||||||
  #:use-module (gnu packages java)
 | 
					  #:use-module (gnu packages java)
 | 
				
			||||||
| 
						 | 
					@ -393,3 +395,80 @@ supports point-to-point and collective communications of any picklable Python
 | 
				
			||||||
object as well as optimized communications of Python objects (such as NumPy
 | 
					object as well as optimized communications of Python objects (such as NumPy
 | 
				
			||||||
arrays) that expose a buffer interface.")
 | 
					arrays) that expose a buffer interface.")
 | 
				
			||||||
    (license bsd-3)))
 | 
					    (license bsd-3)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public mpich
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "mpich")
 | 
				
			||||||
 | 
					    (version "3.3.2")
 | 
				
			||||||
 | 
					    (source (origin
 | 
				
			||||||
 | 
					              (method url-fetch)
 | 
				
			||||||
 | 
					              (uri (string-append "http://www.mpich.org/static/downloads/"
 | 
				
			||||||
 | 
					                                  version "/mpich-" version ".tar.gz"))
 | 
				
			||||||
 | 
					              (sha256
 | 
				
			||||||
 | 
					               (base32
 | 
				
			||||||
 | 
					                "1farz5zfx4cd0c3a0wb9pgfypzw0xxql1j1294z1sxslga1ziyjb"))))
 | 
				
			||||||
 | 
					    (build-system gnu-build-system)
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     `(("zlib" ,zlib)
 | 
				
			||||||
 | 
					       ("hwloc" ,hwloc-2 "lib")
 | 
				
			||||||
 | 
					       ("slurm" ,slurm)
 | 
				
			||||||
 | 
					       ,@(if (and (not (%current-target-system))
 | 
				
			||||||
 | 
					                  (member (%current-system) (package-supported-systems ucx)))
 | 
				
			||||||
 | 
					             `(("ucx" ,ucx))
 | 
				
			||||||
 | 
					             '())))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("perl" ,perl)
 | 
				
			||||||
 | 
					       ("which" ,which)
 | 
				
			||||||
 | 
					       ("gfortran" ,gfortran)))
 | 
				
			||||||
 | 
					    (outputs '("out" "debug"))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:configure-flags
 | 
				
			||||||
 | 
					       (list "--disable-silent-rules"             ;let's see what's happening
 | 
				
			||||||
 | 
					             "--enable-debuginfo"
 | 
				
			||||||
 | 
					             ;; "--with-device=ch4:ucx" ; --with-device=ch4:ofi segfaults in tests
 | 
				
			||||||
 | 
					             (string-append "--with-hwloc-prefix="
 | 
				
			||||||
 | 
					                            (assoc-ref %build-inputs "hwloc"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             ,@(if (assoc "ucx" (package-inputs this-package))
 | 
				
			||||||
 | 
					                   `((string-append "--with-ucx="
 | 
				
			||||||
 | 
					                                    (assoc-ref %build-inputs "ucx")))
 | 
				
			||||||
 | 
					                   '()))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       #:phases (modify-phases %standard-phases
 | 
				
			||||||
 | 
					                  (add-after 'unpack 'patch-sources
 | 
				
			||||||
 | 
					                    (lambda _
 | 
				
			||||||
 | 
					                      (substitute* "./maint/gen_subcfg_m4"
 | 
				
			||||||
 | 
					                        (("/usr/bin/env") (which "env")))
 | 
				
			||||||
 | 
					                      (substitute* "src/glue/romio/all_romio_symbols"
 | 
				
			||||||
 | 
					                        (("/usr/bin/env") (which "env")))
 | 
				
			||||||
 | 
					                      (substitute* (find-files "." "buildiface")
 | 
				
			||||||
 | 
					                        (("/usr/bin/env") (which "env")))
 | 
				
			||||||
 | 
					                      (substitute* "maint/extracterrmsgs"
 | 
				
			||||||
 | 
					                        (("/usr/bin/env") (which "env")))
 | 
				
			||||||
 | 
					                      (substitute* (find-files "." "f77tof90")
 | 
				
			||||||
 | 
					                        (("/usr/bin/env") (which "env")))
 | 
				
			||||||
 | 
					                      (substitute* (find-files "." "\\.sh$")
 | 
				
			||||||
 | 
					                        (("/bin/sh") (which "sh")))
 | 
				
			||||||
 | 
					                      #t))
 | 
				
			||||||
 | 
					                  (add-before 'configure 'fix-makefile
 | 
				
			||||||
 | 
					                    (lambda _
 | 
				
			||||||
 | 
					                      ;; Remove "@hwloclib@" from 'pmpi_convenience_libs'.
 | 
				
			||||||
 | 
					                      ;; This fixes "No rule to make target '-lhwloc', needed
 | 
				
			||||||
 | 
					                      ;; by 'lib/libmpi.la'".
 | 
				
			||||||
 | 
					                      (substitute* "Makefile.in"
 | 
				
			||||||
 | 
					                        (("^pmpi_convenience_libs = (.*) @hwloclib@ (.*)$" _
 | 
				
			||||||
 | 
					                          before after)
 | 
				
			||||||
 | 
					                         (string-append "pmpi_convenience_libs = "
 | 
				
			||||||
 | 
					                                        before " " after)))
 | 
				
			||||||
 | 
					                      #t)))))
 | 
				
			||||||
 | 
					    (home-page "https://www.mpich.org/")
 | 
				
			||||||
 | 
					    (synopsis "Implementation of the Message Passing Interface (MPI)")
 | 
				
			||||||
 | 
					    (description
 | 
				
			||||||
 | 
					     "MPICH is a high-performance and portable implementation of the Message
 | 
				
			||||||
 | 
					Passing Interface (MPI) standard (MPI-1, MPI-2 and MPI-3).  MPICH provides an
 | 
				
			||||||
 | 
					MPI implementation that efficiently supports different computation and
 | 
				
			||||||
 | 
					communication platforms including commodity clusters, high-speed networks (10
 | 
				
			||||||
 | 
					Gigabit Ethernet, InfiniBand, Myrinet, Quadrics), and proprietary high-end
 | 
				
			||||||
 | 
					computing systems (Blue Gene, Cray).  It enables research in MPI through a
 | 
				
			||||||
 | 
					modular framework for other derived implementations.")
 | 
				
			||||||
 | 
					    (license bsd-2)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue