You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ReFrame comes pre-configured with a minimal generic configuration that will allow you to run ReFrame on any system.
6
6
This will allow you to run simple local tests using the default compiler of the system.
7
7
Of course, ReFrame is much more powerful than that.
8
-
This section will guide you through configuring ReFrame for your HPC cluster.
9
-
We will use as a starting point a simplified configuration for the `Piz Daint <https://www.cscs.ch/computers/piz-daint/>`__ supercomputer at CSCS and we will elaborate along the way.
8
+
This section will guide you through configuring ReFrame for your site.
10
9
11
10
If you started using ReFrame from version 3.0, you can keep on reading this section, otherwise you are advised to have a look first at the :doc:`migration_2_to_3` page.
12
11
@@ -50,10 +49,10 @@ We'll refer to these top-level properties as *sections*.
50
49
These sections contain other objects which further define in detail the framework's behavior.
51
50
If you are using a Python file to configure ReFrame, this big JSON configuration object is stored in a special variable called ``site_configuration``.
52
51
53
-
We will explore the basic configuration of ReFrame through the following configuration file that permits ReFrame to run on Piz Daint.
52
+
We will explore the basic configuration of ReFrame by looking into the configuration file of the tutorials, which permits ReFrame to run both on the Piz Daint supercomputer and a local computer.
54
53
For the complete listing and description of all configuration options, you should refer to the :doc:`config_reference`.
Each system is associated with a set of properties, which in this case are the following:
75
74
@@ -89,8 +88,8 @@ In the example shown here, we define three partitions that none of them correspo
89
88
The ``login`` partition refers to the login nodes of the system, whereas the ``gpu`` and ``mc`` partitions refer to two different set of nodes in the same cluster that are effectively separated using Slurm constraints.
90
89
Let's pick the ``gpu`` partition and look into it in more detail:
This name will be used to reference this environment in different contexts, as for example in the ``environs`` property of the system partitions.
136
-
This environment definition is minimal, since the default values for the rest of the properties serve our purpose.
135
+
A programming environment in ReFrame is essentially a collection of environment modules, environment variables and compiler definitions.
137
136
138
-
An important feature in ReFrame's configuration, is that you can define section objects differently for different systems or system partitions.
139
-
In the following, for demonstration purposes, we define ``PrgEnv-gnu`` differently for the ``mc`` partition of the ``daint`` system (notice the condensed form of writing this as ``daint:mc``):
140
-
141
-
.. code-block:: python
142
-
143
-
{
144
-
'name': 'PrgEnv-gnu',
145
-
'modules': ['PrgEnv-gnu', 'openmpi'],
146
-
'cc': 'mpicc',
147
-
'cxx': 'mpicxx',
148
-
'ftn': 'mpif90',
149
-
'target_systems': ['daint:mc']
150
-
}
151
-
152
-
This environment loads different modules and sets the compilers differently, but the most important part is the ``target_systems`` property.
153
-
This property is a list of systems or system/partition combinations (as in this case) where this definition of the environment is in effect.
154
-
This means that ``PrgEnv-gnu`` will defined this way only for regression tests running on ``daint:mc``.
155
-
For all the other systems, it will be defined as shown before.
137
+
An important feature in ReFrame's configuration, is that you can define section objects differently for different systems or system partitions by using the ``target_systems`` property.
138
+
Notice, for example, how the ``gnu`` environment is defined differently for the system ``daint`` compared to the generic definition.
139
+
The ``target_systems`` property is a list of systems or system/partition combinations where this definition of the environment is in effect.
140
+
This means that ``gnu`` will be defined this way only for regression tests running on ``daint``.
141
+
For all the other systems, it will be defined using the first definition.
156
142
157
143
158
144
---------------------
@@ -163,8 +149,8 @@ ReFrame has a powerful logging mechanism that gives fine grained control over wh
163
149
Additionally, it allows for logging performance data from performance tests into different channels.
164
150
Let's see how logging is defined in our example configuration, which also represents a typical one for logging:
Logging is configured under the ``logging`` section of the configuration, which is a list of logger objects.
170
156
Unless you want to configure logging differently for different systems, a single logger object is enough.
@@ -250,16 +236,16 @@ To better understand this, let's assume that we have the following ``environment
250
236
251
237
'environments': [
252
238
{
253
-
'name': 'PrgEnv-cray',
254
-
'modules': ['PrgEnv-cray']
239
+
'name': 'cray',
240
+
'modules': ['cray']
255
241
},
256
242
{
257
-
'name': 'PrgEnv-gnu',
258
-
'modules': ['PrgEnv-gnu']
243
+
'name': 'gnu',
244
+
'modules': ['gnu']
259
245
},
260
246
{
261
-
'name': 'PrgEnv-gnu',
262
-
'modules': ['PrgEnv-gnu', 'openmpi'],
247
+
'name': 'gnu',
248
+
'modules': ['gnu', 'openmpi'],
263
249
'cc': 'mpicc',
264
250
'cxx': 'mpicxx',
265
251
'ftn': 'mpif90',
@@ -268,7 +254,7 @@ To better understand this, let's assume that we have the following ``environment
268
254
],
269
255
270
256
271
-
If the selected system is ``foo``, then ReFrame will use the second definition of ``PrgEnv-gnu`` which is specific to the ``foo`` system.
257
+
If the selected system is ``foo``, then ReFrame will use the second definition of ``gnu`` which is specific to the ``foo`` system.
272
258
273
259
You can override completely the system auto-selection process by specifying a system or system/partition combination with the ``--system`` option, e.g., ``--system=daint`` or ``--system=daint:gpu``.
274
260
@@ -284,135 +270,122 @@ Let's see some concrete examples:
Notice that although the C++ compiler is not defined in the environment's definitions, ReFrame will print the default value, if you explicitly query its value.
391
+
If you explicitly query a configuration value which is not defined in the configuration file, ReFrame will print its default value.
0 commit comments