Updates to Configuration Tutorial for SC18 (#9811)
* Updates to Configuration Tutorial for SC18 * Suggested rewording
This commit is contained in:
parent
71561f9d2b
commit
a1676ab012
@ -13,7 +13,7 @@ This tutorial will guide you through various configuration options
|
|||||||
that allow you to customize Spack's behavior with respect to
|
that allow you to customize Spack's behavior with respect to
|
||||||
software installation. We will first cover the configuration file
|
software installation. We will first cover the configuration file
|
||||||
hierarchy. Then, we will cover configuration options for compilers,
|
hierarchy. Then, we will cover configuration options for compilers,
|
||||||
focusing on how it can be used to extend Spack's compiler auto-detection.
|
focusing on how they can be used to extend Spack's compiler auto-detection.
|
||||||
Next, we will cover the packages configuration file, focusing on
|
Next, we will cover the packages configuration file, focusing on
|
||||||
how it can be used to override default build options as well as
|
how it can be used to override default build options as well as
|
||||||
specify external package installations to use. Finally, we will
|
specify external package installations to use. Finally, we will
|
||||||
@ -36,17 +36,19 @@ Configuration Scopes
|
|||||||
Depending on your use case, you may want to provide configuration
|
Depending on your use case, you may want to provide configuration
|
||||||
settings common to everyone on your team, or you may want to set
|
settings common to everyone on your team, or you may want to set
|
||||||
default behaviors specific to a single user account. Spack provides
|
default behaviors specific to a single user account. Spack provides
|
||||||
4 configuration *scopes* to handle this customization. These scopes,
|
six configuration *scopes* to handle this customization. These scopes,
|
||||||
in order of decreasing priority, are:
|
in order of decreasing priority, are:
|
||||||
|
|
||||||
====================== ==================================
|
============ ===================================================
|
||||||
Scope Directory
|
Scope Directory
|
||||||
====================== ==================================
|
============ ===================================================
|
||||||
User configurations ``~/.spack``
|
Command-line N/A
|
||||||
Project configurations ``$SPACK_ROOT/etc/spack``
|
Custom Custom directory, specified with ``--config-scope``
|
||||||
System configurations ``/etc/spack``
|
User ``~/.spack/``
|
||||||
Default configurations ``$SPACK_ROOT/etc/spack/defaults``
|
Site ``$SPACK_ROOT/etc/spack/``
|
||||||
====================== ==================================
|
System ``/etc/spack/``
|
||||||
|
Defaults ``$SPACK_ROOT/etc/spack/defaults/``
|
||||||
|
============ ===================================================
|
||||||
|
|
||||||
Spack's default configuration settings reside in
|
Spack's default configuration settings reside in
|
||||||
``$SPACK_ROOT/etc/spack/defaults``. These are useful for reference,
|
``$SPACK_ROOT/etc/spack/defaults``. These are useful for reference,
|
||||||
@ -65,24 +67,40 @@ configuration files to the ``~/.spack`` directory. When Spack first
|
|||||||
checked for compilers on your system, you may have noticed that it
|
checked for compilers on your system, you may have noticed that it
|
||||||
placed your compiler configuration in this directory.
|
placed your compiler configuration in this directory.
|
||||||
|
|
||||||
|
Configuration settings can also be placed in a custom location,
|
||||||
|
which is then specified on the command line via ``--config-scope``.
|
||||||
|
An example use case is managing two sets of configurations, one for
|
||||||
|
development and another for production preferences.
|
||||||
|
|
||||||
|
Settings specified on the command line have precedence over all
|
||||||
|
other configuration scopes.
|
||||||
|
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
Platform-specific Scopes
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Some facilities manage multiple platforms from a single shared
|
Some facilities manage multiple platforms from a single shared
|
||||||
filesystem. In order to handle this, each of the configuration
|
file system. In order to handle this, each of the configuration
|
||||||
scopes listed above has two *sub-scopes*: platform-specific and
|
scopes listed above has two *sub-scopes*: platform-specific and
|
||||||
platform-independent. For example, compiler settings can be stored
|
platform-independent. For example, compiler settings can be stored
|
||||||
in ``compilers.yaml`` configuration files in the following locations:
|
in ``compilers.yaml`` configuration files in the following locations:
|
||||||
|
|
||||||
- ``~/.spack/<platform>/compilers.yaml``
|
#. ``~/.spack/<platform>/compilers.yaml``
|
||||||
- ``~/.spack/compilers.yaml``
|
#. ``~/.spack/compilers.yaml``
|
||||||
- ``$SPACK_ROOT/etc/spack/<platform>/compilers.yaml``
|
#. ``$SPACK_ROOT/etc/spack/<platform>/compilers.yaml``
|
||||||
- ``$SPACK_ROOT/etc/spack/compilers.yaml``
|
#. ``$SPACK_ROOT/etc/spack/compilers.yaml``
|
||||||
- ``/etc/spack/<platform>/compilers.yaml``
|
#. ``/etc/spack/<platform>/compilers.yaml``
|
||||||
- ``/etc/spack/compilers.yaml``
|
#. ``/etc/spack/compilers.yaml``
|
||||||
- ``$SPACK_ROOT/etc/defaults/<platform>/compilers.yaml``
|
#. ``$SPACK_ROOT/etc/defaults/<platform>/compilers.yaml``
|
||||||
- ``$SPACK_ROOT/etc/defaults/compilers.yaml``
|
#. ``$SPACK_ROOT/etc/defaults/compilers.yaml``
|
||||||
|
|
||||||
These files are listed in decreasing order of precedence, so files in
|
These files are listed in decreasing order of precedence, so files in
|
||||||
``~/.spack/<platform>`` will override settings in ``~/.spack``.
|
``~/.spack/<platform>`` will override settings in ``~/.spack``.
|
||||||
|
|
||||||
|
-----------
|
||||||
|
YAML Format
|
||||||
|
-----------
|
||||||
|
|
||||||
Spack configurations are YAML dictionaries. Every configuration file
|
Spack configurations are YAML dictionaries. Every configuration file
|
||||||
begins with a top-level dictionary that tells Spack which
|
begins with a top-level dictionary that tells Spack which
|
||||||
configuration set it modifies. When Spack checks it's configuration,
|
configuration set it modifies. When Spack checks it's configuration,
|
||||||
@ -117,7 +135,7 @@ ensures that no other compilers are used, as the user configuration
|
|||||||
scope is the last scope searched and the ``compilers::`` line replaces
|
scope is the last scope searched and the ``compilers::`` line replaces
|
||||||
all previous configuration files information. If the same
|
all previous configuration files information. If the same
|
||||||
configuration file had a single colon instead of the double colon, it
|
configuration file had a single colon instead of the double colon, it
|
||||||
would add the gcc version 5.4.0 compiler to whatever other compilers
|
would add the GCC version 5.4.0 compiler to whatever other compilers
|
||||||
were listed in other configuration files.
|
were listed in other configuration files.
|
||||||
|
|
||||||
.. _configs-tutorial-compilers:
|
.. _configs-tutorial-compilers:
|
||||||
@ -127,8 +145,8 @@ Compiler Configuration
|
|||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
For most tasks, we can use Spack with the compilers auto-detected the
|
For most tasks, we can use Spack with the compilers auto-detected the
|
||||||
first time Spack runs on a system. As we discussed in the basic
|
first time Spack runs on a system. As discussed in the basic
|
||||||
installation section, we can also tell Spack where compilers are
|
installation tutorial, we can also tell Spack where compilers are
|
||||||
located using the ``spack compiler add`` command. However, in some
|
located using the ``spack compiler add`` command. However, in some
|
||||||
circumstances we want even more fine-grained control over the
|
circumstances we want even more fine-grained control over the
|
||||||
compilers available. This section will teach you how to exercise that
|
compilers available. This section will teach you how to exercise that
|
||||||
@ -144,6 +162,19 @@ We will start by opening the compilers configuration file
|
|||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
compilers:
|
compilers:
|
||||||
|
- compiler:
|
||||||
|
environment: {}
|
||||||
|
extra_rpaths: []
|
||||||
|
flags: {}
|
||||||
|
modules: []
|
||||||
|
operating_system: ubuntu16.04
|
||||||
|
paths:
|
||||||
|
cc: /usr/bin/clang-3.7
|
||||||
|
cxx: /usr/bin/clang++-3.7
|
||||||
|
f77: null
|
||||||
|
fc: null
|
||||||
|
spec: clang@3.7.1-2ubuntu2
|
||||||
|
target: x86_64
|
||||||
- compiler:
|
- compiler:
|
||||||
environment: {}
|
environment: {}
|
||||||
extra_rpaths: []
|
extra_rpaths: []
|
||||||
@ -157,6 +188,19 @@ We will start by opening the compilers configuration file
|
|||||||
fc: null
|
fc: null
|
||||||
spec: clang@3.8.0-2ubuntu4
|
spec: clang@3.8.0-2ubuntu4
|
||||||
target: x86_64
|
target: x86_64
|
||||||
|
- compiler:
|
||||||
|
environment: {}
|
||||||
|
extra_rpaths: []
|
||||||
|
flags: {}
|
||||||
|
modules: []
|
||||||
|
operating_system: ubuntu16.04
|
||||||
|
paths:
|
||||||
|
cc: /usr/bin/gcc-4.7
|
||||||
|
cxx: /usr/bin/g++-4.7
|
||||||
|
f77: /usr/bin/gfortran-4.7
|
||||||
|
fc: /usr/bin/gfortran-4.7
|
||||||
|
spec: gcc@4.7
|
||||||
|
target: x86_64
|
||||||
- compiler:
|
- compiler:
|
||||||
environment: {}
|
environment: {}
|
||||||
extra_rpaths: []
|
extra_rpaths: []
|
||||||
@ -172,27 +216,27 @@ We will start by opening the compilers configuration file
|
|||||||
target: x86_64
|
target: x86_64
|
||||||
|
|
||||||
|
|
||||||
This specifies one version of the gcc compiler and one version of the
|
This specifies two versions of the GCC compiler and two versions of the
|
||||||
clang compiler with no flang compiler. Now suppose we have a code that
|
Clang compiler with no Flang compiler. Now suppose we have a code that
|
||||||
we want to compile with the clang compiler for C/C++ code, but with
|
we want to compile with the Clang compiler for C/C++ code, but with
|
||||||
gfortran for Fortran components. We can do this by adding another entry
|
gfortran for Fortran components. We can do this by adding another entry
|
||||||
to the ``compilers.yaml`` file.
|
to the ``compilers.yaml`` file.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
- compiler:
|
- compiler:
|
||||||
environment: {}
|
environment: {}
|
||||||
extra_rpaths: []
|
extra_rpaths: []
|
||||||
flags: {}
|
flags: {}
|
||||||
modules: []
|
modules: []
|
||||||
operating_system: ubuntu16.04
|
operating_system: ubuntu16.04
|
||||||
paths:
|
paths:
|
||||||
cc: /usr/bin/clang
|
cc: /usr/bin/clang
|
||||||
cxx: /usr/bin/clang++
|
cxx: /usr/bin/clang++
|
||||||
f77: /usr/bin/gfortran
|
f77: /usr/bin/gfortran
|
||||||
fc: /usr/bin/gfortran
|
fc: /usr/bin/gfortran
|
||||||
spec: clang@3.8.0-gfortran
|
spec: clang@3.8.0-gfortran
|
||||||
target: x86_64
|
target: x86_64
|
||||||
|
|
||||||
|
|
||||||
Let's talk about the sections of this compiler entry that we've changed.
|
Let's talk about the sections of this compiler entry that we've changed.
|
||||||
@ -203,7 +247,7 @@ compiler for both specifications of Fortran. We've also changed the
|
|||||||
``spec`` entry for this compiler. The ``spec`` entry is effectively the
|
``spec`` entry for this compiler. The ``spec`` entry is effectively the
|
||||||
name of the compiler for Spack. It consists of a name and a version
|
name of the compiler for Spack. It consists of a name and a version
|
||||||
number, separated by the ``@`` sigil. The name must be one of the supported
|
number, separated by the ``@`` sigil. The name must be one of the supported
|
||||||
compiler names in Spack (gcc, intel, pgi, xl, xl_r, clang, nag, cce).
|
compiler names in Spack (gcc, intel, pgi, xl, xl_r, clang, nag, cce, arm).
|
||||||
The version number can be an arbitrary string of alphanumeric characters,
|
The version number can be an arbitrary string of alphanumeric characters,
|
||||||
as well as ``-``, ``.``, and ``_``. The ``target`` and ``operating_system``
|
as well as ``-``, ``.``, and ``_``. The ``target`` and ``operating_system``
|
||||||
sections we leave unchanged. These sections specify when Spack can use
|
sections we leave unchanged. These sections specify when Spack can use
|
||||||
@ -214,7 +258,7 @@ We can verify that our new compiler works by invoking it now:
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install zlib %clang@3.8.0-gfortran
|
$ spack install --no-cache zlib %clang@3.8.0-gfortran
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
@ -222,7 +266,7 @@ This new compiler also works on Fortran codes:
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install cfitsio %clang@3.8.0-gfortran
|
$ spack install --no-cache cfitsio %clang@3.8.0-gfortran -bzip2
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
@ -243,19 +287,19 @@ Let's open our compilers configuration file again and add a compiler flag.
|
|||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
- compiler:
|
- compiler:
|
||||||
environment: {}
|
environment: {}
|
||||||
extra_rpaths: []
|
extra_rpaths: []
|
||||||
flags:
|
flags:
|
||||||
cppflags: -g
|
cppflags: -g
|
||||||
modules: []
|
modules: []
|
||||||
operating_system: ubuntu16.04
|
operating_system: ubuntu16.04
|
||||||
paths:
|
paths:
|
||||||
cc: /usr/bin/clang
|
cc: /usr/bin/clang
|
||||||
cxx: /usr/bin/clang++
|
cxx: /usr/bin/clang++
|
||||||
f77: /usr/bin/gfortran
|
f77: /usr/bin/gfortran
|
||||||
fc: /usr/bin/gfortran
|
fc: /usr/bin/gfortran
|
||||||
spec: clang@3.8.0-gfortran
|
spec: clang@3.8.0-gfortran
|
||||||
target: x86_64
|
target: x86_64
|
||||||
|
|
||||||
|
|
||||||
We can test this out using the ``spack spec`` command to show how the
|
We can test this out using the ``spack spec`` command to show how the
|
||||||
@ -278,14 +322,14 @@ spec is concretized.
|
|||||||
^bzip2@1.0.6%clang@3.8.0-gfortran cppflags="-g" +shared arch=linux-ubuntu16.04-x86_64
|
^bzip2@1.0.6%clang@3.8.0-gfortran cppflags="-g" +shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
We can see that "cppflags=-g" has been added to every node in the DAG.
|
We can see that ``cppflags="-g"`` has been added to every node in the DAG.
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Advanced Compiler Configuration
|
Advanced Compiler Configuration
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
There are three fields of the compiler configuration entry that we
|
There are three fields of the compiler configuration entry that we
|
||||||
have not talked about yet.
|
have not yet talked about.
|
||||||
|
|
||||||
The ``modules`` field of the compiler is used primarily on Cray systems,
|
The ``modules`` field of the compiler is used primarily on Cray systems,
|
||||||
but can be useful on any system that has compilers that are only
|
but can be useful on any system that has compilers that are only
|
||||||
@ -295,12 +339,12 @@ of the build environment for packages using that compiler.
|
|||||||
|
|
||||||
The ``extra_rpaths`` field of the compiler configuration is used for
|
The ``extra_rpaths`` field of the compiler configuration is used for
|
||||||
compilers that do not rpath all of their dependencies by
|
compilers that do not rpath all of their dependencies by
|
||||||
default. Since compilers are generally installed externally to Spack,
|
default. Since compilers are often installed externally to Spack,
|
||||||
Spack is unable to manage compiler dependencies and enforce
|
Spack is unable to manage compiler dependencies and enforce
|
||||||
rpath usage. This can lead to packages not finding link dependencies
|
rpath usage. This can lead to packages not finding link dependencies
|
||||||
imposed by the compiler properly. For compilers that impose link
|
imposed by the compiler properly. For compilers that impose link
|
||||||
dependencies on the resulting executables that are not rpath'ed into
|
dependencies on the resulting executables that are not rpath'ed into
|
||||||
the executable automatically, the ``extra_rpath`` field of the compiler
|
the executable automatically, the ``extra_rpaths`` field of the compiler
|
||||||
configuration tells Spack which dependencies to rpath into every
|
configuration tells Spack which dependencies to rpath into every
|
||||||
executable created by that compiler. The executables will then be able
|
executable created by that compiler. The executables will then be able
|
||||||
to find the link dependencies imposed by the compiler. As an example,
|
to find the link dependencies imposed by the compiler. As an example,
|
||||||
@ -330,6 +374,9 @@ license server, you can set this in ``compilers.yaml`` as follows:
|
|||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
|
In addition to ``set``, ``environment`` also supports ``unset``,
|
||||||
|
``prepend-path``, and ``append-path``.
|
||||||
|
|
||||||
.. _configs-tutorial-package-prefs:
|
.. _configs-tutorial-package-prefs:
|
||||||
|
|
||||||
-------------------------------
|
-------------------------------
|
||||||
@ -351,8 +398,8 @@ configuration file. First, we will look at the default
|
|||||||
|
|
||||||
This sets the default preferences for compilers and for providers of
|
This sets the default preferences for compilers and for providers of
|
||||||
virtual packages. To illustrate how this works, suppose we want to
|
virtual packages. To illustrate how this works, suppose we want to
|
||||||
change the preferences to prefer the clang compiler and to prefer
|
change the preferences to prefer the Clang compiler and to prefer
|
||||||
mpich over openmpi. Currently, we prefer gcc and openmpi
|
MPICH over OpenMPI. Currently, we prefer GCC and OpenMPI.
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
@ -361,20 +408,27 @@ mpich over openmpi. Currently, we prefer gcc and openmpi
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5
|
hdf5
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%gcc@5.4.0+cxx~debug+fortran+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^openmpi@3.0.0%gcc@5.4.0~cuda fabrics= ~java schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
|
^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
|
||||||
^hwloc@1.11.7%gcc@5.4.0~cuda+libxml2~pci arch=linux-ubuntu16.04-x86_64
|
^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
|
||||||
^libxml2@2.9.4%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
|
^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
^pkg-config@0.29.2%gcc@5.4.0+internal_glib arch=linux-ubuntu16.04-x86_64
|
^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
^xz@5.2.3%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.11%gcc@5.4.0+pic+shared arch=linux-ubuntu16.04-x86_64
|
^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
|
||||||
|
^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
|
||||||
|
^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
|
||||||
|
^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
|
||||||
|
^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
Now we will open the packages configuration file and update our
|
Now we will open the packages configuration file and update our
|
||||||
@ -404,16 +458,23 @@ overrides the default settings just for these two items.
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5
|
hdf5
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^mpich@3.2%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
|
^mpich@3.2.1%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.11%clang@3.8.0-2ubuntu4+pic+shared arch=linux-ubuntu16.04-x86_64
|
^findutils@4.6.0%clang@3.8.0-2ubuntu4 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
|
||||||
|
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
|
||||||
|
^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
|
||||||
|
^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^automake@1.16.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^texinfo@6.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
@ -444,16 +505,23 @@ We can check the effect of this command with ``spack spec hdf5`` again.
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5
|
hdf5
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^mpich@3.2%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
|
^mpich@3.2.1%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.11%clang@3.8.0-2ubuntu4+pic~shared arch=linux-ubuntu16.04-x86_64
|
^findutils@4.6.0%clang@3.8.0-2ubuntu4 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
|
||||||
|
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac ~shared+threads arch=linux-ubuntu16.04-x86_64
|
||||||
|
^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
|
||||||
|
^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^automake@1.16.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^texinfo@6.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
So far we have only made global changes to the package preferences. As
|
So far we have only made global changes to the package preferences. As
|
||||||
@ -484,15 +552,10 @@ Now hdf5 will concretize without an MPI dependency by default.
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5
|
hdf5
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.11%clang@3.8.0-2ubuntu4+pic~shared arch=linux-ubuntu16.04-x86_64
|
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
In general, every attribute that we can set for all packages we can
|
In general, every attribute that we can set for all packages we can
|
||||||
@ -533,14 +596,9 @@ okay.
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5
|
hdf5
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%gcc@5.4.0~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
@ -555,14 +613,9 @@ preference of clang. If we explicitly specify clang:
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5%clang
|
hdf5%clang
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5%clang
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
@ -597,14 +650,9 @@ Now Spack will be forced to choose the external zlib.
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5%clang
|
hdf5%clang
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5%clang
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
@ -642,31 +690,32 @@ build with an alternate MPI implementation.
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5%clang+mpi
|
hdf5%clang+mpi
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5%clang+mpi
|
|
||||||
^mpi
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^openmpi@3.0.0%clang@3.8.0-2ubuntu4~cuda fabrics=verbs ~java schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
|
^openmpi@3.1.3%clang@3.8.0-2ubuntu4~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
|
||||||
^hwloc@1.11.8%clang@3.8.0-2ubuntu4~cuda+libxml2+pci arch=linux-ubuntu16.04-x86_64
|
^hwloc@1.11.9%clang@3.8.0-2ubuntu4~cairo~cuda+libxml2+pci~shared arch=linux-ubuntu16.04-x86_64
|
||||||
^libpciaccess@0.13.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
^libpciaccess@0.13.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00 +sigsegv arch=linux-ubuntu16.04-x86_64
|
^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
|
||||||
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
^pkg-config@0.29.2%clang@3.8.0-2ubuntu4+internal_glib arch=linux-ubuntu16.04-x86_64
|
^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
^util-macros@1.19.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
^util-macros@1.19.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
^libxml2@2.9.4%clang@3.8.0-2ubuntu4~python arch=linux-ubuntu16.04-x86_64
|
^libxml2@2.9.8%clang@3.8.0-2ubuntu4~python arch=linux-ubuntu16.04-x86_64
|
||||||
^xz@5.2.3%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
^xz@5.2.4%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.8%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
|
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
^numactl@2.0.11%clang@3.8.0-2ubuntu4 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
|
||||||
|
^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac ~shared+threads arch=linux-ubuntu16.04-x86_64
|
||||||
|
^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
|
||||||
|
^automake@1.16.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
We have only expressed a preference for mpich over other MPI
|
We have only expressed a preference for mpich over other MPI
|
||||||
implementations, and Spack will happily build with one we haven't
|
implementations, and Spack will happily build with one we haven't
|
||||||
forbid it from using. We could resolve this by requesting
|
forbid it from building. We could resolve this by requesting
|
||||||
``hdf5%clang+mpi^mpich`` explicitly, or we can configure Spack not to
|
``hdf5%clang+mpi^mpich`` explicitly, or we can configure Spack not to
|
||||||
use any other MPI implementation. Since we're focused on
|
use any other MPI implementation. Since we're focused on
|
||||||
configurations here and the former can get tedious, we'll need to
|
configurations here and the former can get tedious, we'll need to
|
||||||
@ -697,10 +746,17 @@ again.
|
|||||||
buildable: False
|
buildable: False
|
||||||
intel-mpi:
|
intel-mpi:
|
||||||
buildable: False
|
buildable: False
|
||||||
spectrum-mpi:
|
|
||||||
buildable: False
|
|
||||||
intel-parallel-studio:
|
intel-parallel-studio:
|
||||||
buildable: False
|
buildable: False
|
||||||
|
spectrum-mpi:
|
||||||
|
buildable: False
|
||||||
|
mpilander:
|
||||||
|
buildable: False
|
||||||
|
charm:
|
||||||
|
buildable: False
|
||||||
|
charmpp:
|
||||||
|
buildable: False
|
||||||
|
|
||||||
|
|
||||||
Now that we have configured Spack not to build any of the possible
|
Now that we have configured Spack not to build any of the possible
|
||||||
providers for MPI we can try again.
|
providers for MPI we can try again.
|
||||||
@ -712,17 +768,11 @@ providers for MPI we can try again.
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5%clang
|
hdf5%clang
|
||||||
|
|
||||||
Normalized
|
|
||||||
--------------------------------
|
|
||||||
hdf5%clang
|
|
||||||
^mpi
|
|
||||||
^zlib@1.1.2:
|
|
||||||
|
|
||||||
Concretized
|
Concretized
|
||||||
--------------------------------
|
--------------------------------
|
||||||
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
|
||||||
^mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
|
^mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
|
||||||
^zlib@1.2.8%gcc@5.4.0+pic+shared arch=linux-ubuntu16.04-x86_64
|
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
|
||||||
|
|
||||||
|
|
||||||
By configuring most of our package preferences in ``packages.yaml``,
|
By configuring most of our package preferences in ``packages.yaml``,
|
||||||
@ -732,6 +782,31 @@ preferences, we can specify version preferences as well. Anything
|
|||||||
that you can specify on the command line can be specified in
|
that you can specify on the command line can be specified in
|
||||||
``packages.yaml`` with the exact same spec syntax.
|
``packages.yaml`` with the exact same spec syntax.
|
||||||
|
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
Installation Permissions
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The ``packages.yaml`` file also controls the default permissions
|
||||||
|
to use when installing a package. You'll notice that by default,
|
||||||
|
the installation prefix will be world readable but only user writable.
|
||||||
|
|
||||||
|
Let's say we need to install ``converge``, a licensed software package.
|
||||||
|
Since a specific research group, ``fluid_dynamics``, pays for this
|
||||||
|
license, we want to ensure that only members of this group can access
|
||||||
|
the software. We can do this like so:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
packages:
|
||||||
|
converge:
|
||||||
|
permissions:
|
||||||
|
read: group
|
||||||
|
group: fluid_dynamics
|
||||||
|
|
||||||
|
|
||||||
|
Now, only members of the ``fluid_dynamics`` group can use any
|
||||||
|
``converge`` installations.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
Make sure to delete or move the ``packages.yaml`` you have been
|
Make sure to delete or move the ``packages.yaml`` you have been
|
||||||
@ -762,8 +837,8 @@ As you can see, many of the directories Spack uses can be customized.
|
|||||||
For example, you can tell Spack to install packages to a prefix
|
For example, you can tell Spack to install packages to a prefix
|
||||||
outside of the ``$SPACK_ROOT`` hierarchy. Module files can be
|
outside of the ``$SPACK_ROOT`` hierarchy. Module files can be
|
||||||
written to a central location if you are using multiple Spack
|
written to a central location if you are using multiple Spack
|
||||||
instances. If you have a fast scratch filesystem, you can run builds
|
instances. If you have a fast scratch file system, you can run builds
|
||||||
from this filesystem with the following ``config.yaml``:
|
from this file system with the following ``config.yaml``:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -788,39 +863,31 @@ into the build.
|
|||||||
One last setting that may be of interest to many users is the ability
|
One last setting that may be of interest to many users is the ability
|
||||||
to customize the parallelism of Spack builds. By default, Spack
|
to customize the parallelism of Spack builds. By default, Spack
|
||||||
installs all packages in parallel with the number of jobs equal to the
|
installs all packages in parallel with the number of jobs equal to the
|
||||||
number of cores on the node. For example, on a node with 36 cores,
|
number of cores on the node. For example, on a node with 16 cores,
|
||||||
this will look like:
|
this will look like:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install --verbose zlib
|
$ spack install --no-cache --verbose zlib
|
||||||
==> Installing zlib
|
==> Installing zlib
|
||||||
==> Using cached archive: ~/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
|
==> Using cached archive: /home/user/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
|
||||||
==> Staging archive: ~/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
|
==> Staging archive: /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
|
||||||
==> Created stage in ~/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
|
==> Created stage in /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
|
||||||
==> No patches needed for zlib
|
==> No patches needed for zlib
|
||||||
==> Building zlib [Package]
|
==> Building zlib [Package]
|
||||||
==> Executing phase: 'install'
|
==> Executing phase: 'install'
|
||||||
==> './configure' '--prefix=~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
|
==> './configure' '--prefix=/home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
|
||||||
Checking for shared library support...
|
|
||||||
Building shared library libz.so.1.2.11 with ~/spack/lib/spack/env/gcc/gcc.
|
|
||||||
Checking for size_t... Yes.
|
|
||||||
Checking for off64_t... Yes.
|
|
||||||
Checking for fseeko... Yes.
|
|
||||||
Checking for strerror... Yes.
|
|
||||||
Checking for unistd.h... Yes.
|
|
||||||
Checking for stdarg.h... Yes.
|
|
||||||
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
|
|
||||||
Checking for vsnprintf() in stdio.h... Yes.
|
|
||||||
Checking for return value of vsnprintf()... Yes.
|
|
||||||
Checking for attribute(visibility) support... Yes.
|
|
||||||
==> 'make' '-j36'
|
|
||||||
...
|
...
|
||||||
==> 'make' '-j36' 'install'
|
==> 'make' '-j16'
|
||||||
...
|
...
|
||||||
|
==> 'make' '-j16' 'install'
|
||||||
|
...
|
||||||
|
==> Successfully installed zlib
|
||||||
|
Fetch: 0.00s. Build: 1.03s. Total: 1.03s.
|
||||||
|
[+] /home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
|
||||||
|
|
||||||
|
|
||||||
As you can see, we are building with all 36 cores on the node. If you are
|
As you can see, we are building with all 16 cores on the node. If you are
|
||||||
on a shared login node, this can slow down the system for other users. If
|
on a shared login node, this can slow down the system for other users. If
|
||||||
you have a strict ulimit or restriction on the number of available licenses,
|
you have a strict ulimit or restriction on the number of available licenses,
|
||||||
you may not be able to build at all with this many cores. On nodes with 64+
|
you may not be able to build at all with this many cores. On nodes with 64+
|
||||||
@ -837,33 +904,32 @@ If we uninstall and reinstall zlib, we see that it now uses only 4 cores:
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install -v zlib
|
$ spack install --no-cache --verbose zlib
|
||||||
==> Installing zlib
|
==> Installing zlib
|
||||||
==> Using cached archive: ~/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
|
==> Using cached archive: /home/user/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
|
||||||
==> Staging archive: ~/spack/var/spack/stage/zlib-1.2.11-ezuwp4pa52e75v6iweawzwymmf4ahxxn/zlib-1.2.11.tar.gz
|
==> Staging archive: /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
|
||||||
==> Created stage in ~/spack/var/spack/stage/zlib-1.2.11-ezuwp4pa52e75v6iweawzwymmf4ahxxn
|
==> Created stage in /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
|
||||||
==> No patches needed for zlib
|
==> No patches needed for zlib
|
||||||
==> Building zlib [Package]
|
==> Building zlib [Package]
|
||||||
==> Executing phase: 'install'
|
==> Executing phase: 'install'
|
||||||
==> './configure' '--prefix=~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/zlib-1.2.11-ezuwp4pa52e75v6iweawzwymmf4ahxxn'
|
==> './configure' '--prefix=/home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
|
||||||
Checking for shared library support...
|
...
|
||||||
Building shared library libz.so.1.2.11 with ~/spack/lib/spack/env/gcc/gcc.
|
|
||||||
Checking for size_t... Yes.
|
|
||||||
Checking for off64_t... Yes.
|
|
||||||
Checking for fseeko... Yes.
|
|
||||||
Checking for strerror... Yes.
|
|
||||||
Checking for unistd.h... Yes.
|
|
||||||
Checking for stdarg.h... Yes.
|
|
||||||
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
|
|
||||||
Checking for vsnprintf() in stdio.h... Yes.
|
|
||||||
Checking for return value of vsnprintf()... Yes.
|
|
||||||
Checking for attribute(visibility) support... Yes.
|
|
||||||
==> 'make' '-j4'
|
==> 'make' '-j4'
|
||||||
...
|
...
|
||||||
==> 'make' '-j4' 'install'
|
==> 'make' '-j4' 'install'
|
||||||
...
|
...
|
||||||
|
==> Successfully installed zlib
|
||||||
|
Fetch: 0.00s. Build: 1.03s. Total: 1.03s.
|
||||||
|
[+] /home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
|
||||||
|
|
||||||
|
|
||||||
Obviously, if you want to build everything in serial for whatever reason,
|
Obviously, if you want to build everything in serial for whatever reason,
|
||||||
you would set ``build_jobs`` to 1.
|
you would set ``build_jobs`` to 1.
|
||||||
|
|
||||||
|
--------
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
For examples of how other sites configure Spack, see
|
||||||
|
https://github.com/spack/spack-configs. If you use Spack at your site
|
||||||
|
and want to share your config files, feel free to submit a pull request!
|
||||||
|
Loading…
Reference in New Issue
Block a user