Configuration basic blocks

Generalities

Configuration blocks define settings for PCVS. There are 5 configurable blocks which are :

  • compiler

  • criterion

  • group

  • machine

  • runtime

The configuration block is a virtual object, it doesn’t exist per se, configuration blocks are used to build profiles which can be imported/exported. It is possible however to share configuration blocks by addressing them in a scope that is large enough to reach other users.

Each configuration block contains sub-blocks in order to isolate and classify informations.

Scope

PCVS allows 3 scopes :

  • global for everyone on the machine having access to the PCVS installation

  • user accessible from everywhere for the corresponding user

  • local accessible only from a directory

Blocks description

compiler node

The compiler node describes the building sequence of tests, from the compiler command to options, arguments, tags, libraries, etc.

This node can contain the subnodes comands and variants

commands

The compiler.commands block contains a collection of compiler commands.

cc: compilation command for C code
cxx: compilation command for C++ code
f77: compilation command for Fortran77 code
f90: compilation command for Fortran90 code
fc: compilation command for generic Fortran code

variants

The variants block can contain any custom variant. The variant must have a name, and arguments as such :

example_variant:
    args: additionnal arguments for the example variant
openmp:
    args:  -fopenmp
strict :
    args: -Werror -Wall -Wextra

I this example the variants “example_variant”, “openmp”, and “strict” have to be specified in the validation setup where the user wants to use them.

criterion node

the criterion node contains a collection of iterators that describe the tests. PCVS can iterate over custom parameters as such :

iterators :
    n_[iterator] :
        **subtitle** : string used to indicate the number of [iterator] in
        the test description

        **values** : values that [iterator] allowed to take

Example

iterators:
    n_core:
        subtitle: C
        values:
        - 1
        - 2

In this case the program has to iterate on the core number and has to take the values 1 and 2. The name n_core is arbitrary and has to be put in the validation setup file.

group node

The group node contains group definitions that describe tests. A group description can contain any node present in the Configuration basic blocks (CF Validation Setup section).

Example

GRPMPI:
    run:
        iterate:
            n_omp:
                **values**: null

machine node

The machine node describes the constraints of the physical machine.

machine :

nodes : number of accessible nodes

cores_per_node : number of accessible cores per node

concurrent_run : maximum number of processes that can coexist

runtime node

The runtime node specifies entries that must be passed to the launch command. It contains subnodes such as args, `iterators, etc. The iterator node contains arguments passed to the launching command. For example, if prterun takes the “-np” argument, which corresponds to the number of MPI threads, let’s say n_mpi, we will get the following runtime profile :

args : arguments for the launch command

iterators:
    n_mpi:
        numeric : true

        option : "-np "

        type : argument

        aliases :
            [dictionary of aliases for the option]

plugins