[Top][All Lists]

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

04/45: reppar: Write about the HiePACS/Runtime use case.

From: Ludovic Courtès
Subject: 04/45: reppar: Write about the HiePACS/Runtime use case.
Date: Tue, 09 Jun 2015 12:36:58 +0000

civodul pushed a commit to branch master
in repository maintenance.

commit 665e920158fd720db2c05afb23a6b1780dcc014e
Author: Ludovic Courtès <address@hidden>
Date:   Fri May 29 11:55:55 2015 +0200

    reppar: Write about the HiePACS/Runtime use case.
 doc/reppar-2015/code/starpu.scm      |   95 ++++++++++++++++++++++++++++++++++
 doc/reppar-2015/reproducible-hpc.skb |   56 ++++++++++++++++++++
 2 files changed, 151 insertions(+), 0 deletions(-)

diff --git a/doc/reppar-2015/code/starpu.scm b/doc/reppar-2015/code/starpu.scm
new file mode 100644
index 0000000..854c28f
--- /dev/null
+++ b/doc/reppar-2015/code/starpu.scm
@@ -0,0 +1,95 @@
+(define-module (starpu)
+  #:use-module (guix)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix licenses)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages mpi)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages python)
+  #:use-module (ice-9 match)
+  #:export (starpu chameleon))
+(define starpu
+  (package
+    (name "starpu")
+    (version "1.1.4")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "";
+                                 "starpu-" version ".tar.gz"))
+             (sha256
+              (base32
+               "0zmkwk9gc65jwqldjydq758scb5x7srq4rdcp2ssy59rpl2ycdms"))))
+    (build-system gnu-build-system)
+    (arguments '(#:tests? #f))                    ;XXX: for another day
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("fftw" ,fftw)
+              ("hwloc" ,hwloc)))
+    (home-page "";)
+    (synopsis "Run-time system for heterogeneous computing")
+    (description "Blah...")
+    (license lgpl2.1+)))
+(define starpu-1.2rc           ;release candidate
+  (package (inherit starpu)
+    (version "1.2.0rc2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "";
+                                 "starpu-" version ".tar.gz"))
+             (sha256
+              (base32
+               "0qgb6yrh3k745grjj14gc2vl6a99m0ljcsisfzcwyhg89vdpx42v"))))))
+(define starpu-with-simgrid
+  (package (inherit starpu)
+    (name "starpu-with-simgrid") ;name that shows up in the user interface
+    (inputs `(("simgrid" ,simgrid)
+              ,@(package-inputs starpu)))))
+(define (package-with-different-input original label replacement)
+  ;; Return a variant of ORIGINAL where inputs corresponding
+  ;; to LABEL are replaced with REPLACEMENT.
+  (package (inherit original)
+    (inputs (map (lambda (input)
+                   (match input
+                     ((input-label package)
+                      (if (string=? input-label label)
+                          `(,label ,replacement)
+                          `(,label
+                            ,(package-with-different-input
+                              package label replacement))))))
+                 (package-inputs original)))))
+(define chameleon
+  (package
+    (name "chameleon")
+    (version "0.9")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "";
+                   "chameleon-" version ".tar_.gz"))
+             (sha256
+              (base32
+               "0zglkqazx5r5r60w881x3ksws96f304k24d0h3ixml1rrrnxrgl1"))
+             (file-name (string-append name "-" version
+                                       ".tar.gz"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags '("-DMORSE_VERBOSE_FIND_PACKAGE=ON"
+                           "-DBLAS_VERBOSE=ON")))
+    (inputs `(("starpu" ,starpu)
+              ("blas" ,atlas)
+              ("lapack" ,lapack)))
+    (native-inputs `(("gfortran" ,gfortran-4.8)
+                     ("python" ,python-2)))
+    (home-page "";)
+    (synopsis "Dense linear algebra solver")
+    (description "Blah...")
+    (license #f)))
diff --git a/doc/reppar-2015/reproducible-hpc.skb 
index f43a5d3..8dc903a 100644
--- a/doc/reppar-2015/reproducible-hpc.skb
+++ b/doc/reppar-2015/reproducible-hpc.skb
@@ -42,6 +42,10 @@
 (define (include-latex file)
   (! (format #f "\n\\input{~a}\n" file)))
+(define (url url)
+  ;; Return a URL typeset in a fixed-with font.
+  (ref :url url :text (tt url)))
 ;; Abbreviate author first names.
 (markup-writer '&bib-entry-author
    :action (lambda (n e)
@@ -77,6 +81,7 @@ Software Environments in HPC with Guix]
                    :affiliation "Max Delbrück Center for Molecular
                    Medicine in the Helmholtz Association"
                    :address (list "Berlin, Germany"))
+                 (author :name "Your Name Here!")
                  ;; + others...
@@ -405,6 +410,57 @@ sharing among peers.]))
       (section :title [Customizing Packages]  ;MORSE
+         (p [Our colleagues at Inria in the HiePACS and Runtime teams
+develop a complete linear algebra software stack going from sparse
+solvers such as PaStiX and dense solvers such as Chameleon,(footnote
+[See ,(url "";), for details.]),
+to run-time support libraries and compiler extensions such as StarPU
+,(ref :bib 'augonnet2009:starpu) and hwloc,(footnote [See ,(url
+"";).]).  While
+developers of simulations want to be able to deploy the whole stack,
+developers of solvers want to be able to deploy just their project's
+dependencies, possibly several variants thereof.  For instance,
+developers of Chameleon may want to test their software again several
+versions of StarPU, or against variants of StarPU built with different
+compile-time options.  Finally, developers of the lower-level layers,
+such as StarPU, may want to test the effect of changes they make on
+higher-level layers.])
+         (figure
+            :legend [Defining variants of the default recipe for
+            StarPU.]
+            :ident "fig-variants"
+            (prog :line #f :mark #f
+               (source :language scheme :file "code/starpu.scm"
+                  :start ";!begin-starpu-variants"
+                  :stop ";!end-starpu-variants")))
+         (p [This use case leads to two requirements: that users be able
+to customize and non-ambiguously specify a package DAG, and that they be
+able to reproduce any variant of their package DAG.  Guix allows them to
+define variants; the code for these variants can be stored in a
+repository of their own, and then made visible to the ,(tt [guix])
+commands by defining the ,(tt [GUIX_PACKAGE_PATH]) environment variable.
+,(numref :text [Figure] :ident "fig-variants") shows an example of such
+package variants: based on the pre-existing ,(tt [starpu]) variable, the
+first variant defines a package for a new StarPU release candidate,
+simply by changing its ,(tt [source]) field, while the second variant
+adds the optional dependency on the SimGrid simulator,(---)a variant
+useful to scheduling practitioners, but not necessarily to solver
+         (p [These StarPU package definitions are obviously useful to
+users of StarPU: they can install them with ,(tt [guix package -i
+starpu]) and similar commands.  But they are also useful to StarPU
+developers: they can enter a ``pristine'' development environment
+corresponding to the dependencies given in the recipe by running ,(tt
+[guix environment starpu --pure]).  This command spawns a shell where
+the usual ,(tt [PATH]), ,(tt [CPATH]) etc. environment variables are
+defined to refer precisely to the inputs specified in the recipe.  This
+amounts to creating a profile on the fly, containing only the tools and
+libraries necessary when developing StarPU.  This is notably useful when
+dealing with build systems that support optional dependencies.])
+         (p (bold [TODO: something about rewriting the Chameleon DAG]))
       (section :title [Going Further]  ;active papers

reply via email to

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