Skip to content

VAMPIR#

VAMPIR is a tool for visualization and analysis of parallel applications. This page provides a brief overview of using VAMPIR and its dependencies on fritz.

Availability / Target HPC systems#

It is available for users running on Fritz. In order to use the application, the following environment variable should be set:

VAMPIR_LICENSE=/apps/vampir/10.2.1-gui/vampir.license
and the binary is available only on front-end nodes of Fritz:
/apps/vampir/10.2.1-gui/bin/vampir
We recommend to add the directory to the PATH:
export PATH=/apps/vampir/10.2.1-gui/bin:$PATH
and simply execute vampir

Notes#

  • VAMPIR trace analyzer depends on SCORE-P traces collected at runtime measurements for MPI and OpenMP parallelization schemes collected. SCORE-P can also acquire hardware performance counters through the use of Performance Application Programming Interface (PAPI). To use the applications, you should load the following:
    module load scorep/8.1-intel-2021.4.0-intelmpi-2021.7.0-papi
    
  • C/C++ and Fortran codes are supported by SCORE-P. The user should compile the code from scratch while the compiler is preceded by scorep, i.e. in the case of Fortran mpiifort should be replaced by scorep mpiifort and in the case of C/C++ mpiicc should be replaced by scorep mpiicc
  • Please note that an appropriate test run should be as short as possible and as long as it is necessary. This is a crucial point because SCORE-P can end up with very large trace files. Even though there is a workaround to visualize large trace files, they can be too large to be handled by any means. In case, a set of functions/subroutines are called many times, you may want to filter them which in turn reduces the size of trace files enormously. One way of using filters is to apply the following option at compile time, scorep --instrument-filter=filter_file, for more information, e.g. on how to prepare filter_file, we recommend to read SCORE-P documentation.
  • The following two environment variables should be included in your job script:
    • export SCOREP_EXPERIMENT_DIRECTORY=scorep_traces
    • export SCOREP_ENABLE_TRACING=true
  • For recording hardware performance counters, the job script should contain the following constraint
    #SBATCH -C hwperf
    
    as well as the corresponding available PAPI metrics:
    • for example, to measure double precision operations export SCOREP_METRIC_PAPI=PAPI_DP_OPS
    • for more available PAPI metrics, run papi_avail

Visualization of large trace files#

In case, the test run cannot be executed for a shorter time or filtering instrumentation does not apply to your measurements, the trace files may be so large that cannot (and actually should not) be executed on the front-end nodes of Fritz. In such circumstances, you can use vampirserver on a compute node which has more memory, or the entire memory of the node is exclusively allocated for you. Then, VAMPIR running on a front-end can remotely interact with the vampirserver. Here it is an example:

  1. vampirserver start -n 4: it should be executed on a compute node, either through a Job Script or by means of interactive allocation of a node. In this case, it will utilize four codes. Each compute node on Fritz has 72 cores, therefore you may use a larger value. After executing it, at the last line, you find the necessary information to communicate remotely:
    • an example: VampirServer <21613> listens on: f2157.nhr.fau.de:30097, you need the information with red color to be inserted in the second step.
  2. On a front-end node, execute
    • ssh -L30000:insert_the_text_in_red_here username@fritz.nhr.fau.de
  3. now you can run the VAMPIR GUI:
    • vampir, when the window of Open File appears, choose Remote and provide the socket port used in the second step. Please note that the front-end node in the second and third steps must be the same.
  4. Finally, you should stop the server using
    • vampirserver stop

Further information#