Skip to content

Record Course of Events with Score-P

The Score-P measurement infrastructure is a highly scalable and easy-to-use tool suite for profiling, event tracing, and online analysis of HPC applications. Currently, it works with the analysis tools Vampir, Scalasca, and Tau. Score-P supports lots of features e.g.

  • MPI, SHMEM, OpenMP, Pthreads, and hybrid programs
  • Manual source code instrumentation
  • Monitoring of CUDA, OpenCL, and OpenACC applications
  • Recording hardware counter by using PAPI library
  • Function filtering and grouping

Only the basic usage is shown in this Wiki. For a comprehensive Score-P user manual refer to the Score-P website.

Before using Score-P, set up the correct environment with

marie@login$ module load Score-P

To make measurements with Score-P, the user's application program needs to be instrumented, i.e., at specific important points ("events") Score-P measurement calls have to be activated. By default, Score-P handles this automatically. In order to enable instrumentation of function calls, MPI as well as OpenMP events, the user only needs to prepend the Score-P wrapper to the usual compile and link commands. The following sections show some examples depending on the parallelization type of the program.

Serial Programs

Original:

marie@login$ ifort a.f90 b.f90 -o myprog

With instrumentation:

marie@login$ scorep ifort a.f90 b.f90 -o myprog

This will instrument user functions (if supported by the compiler) and link the Score-P library.

MPI Parallel Programs

If your MPI implementation uses MPI compilers, Score-P will detect MPI parallelization automatically:

Original:

marie@login$ mpicc hello.c -o hello

With instrumentation:

marie@login$ scorep mpicc hello.c -o hello

MPI implementations without own compilers require the user to link the MPI library manually. Even in this case, Score-P will detect MPI parallelization automatically:

Original:

marie@login$ icc hello.c -o hello -lmpi

With instrumentation:

marie@login$ scorep icc hello.c -o hello -lmpi

However, if Score-P fails to detect MPI parallelization automatically you can manually select MPI instrumentation:

Original:

marie@login$ icc hello.c -o hello -lmpi

With instrumentation:

marie@login$ scorep --mpp=mpi icc hello.c -o hello -lmpi

If you want to instrument MPI events only (creates less overhead and smaller trace files) use the option --nocompiler to disable automatic instrumentation of user functions.

OpenMP Parallel Programs

When Score-P detects OpenMP flags on the command line, OPARI2 is invoked for automatic source code instrumentation of OpenMP events:

Original:

marie@login$ ifort -openmp pi.f -o pi

With instrumentation:

marie@login$ scorep ifort -openmp pi.f -o pi

Hybrid MPI/OpenMP Parallel Programs

With a combination of the above mentioned approaches, hybrid applications can be instrumented:

Original:

marie@login$ mpif90 -openmp hybrid.F90 -o hybrid

With instrumentation:

marie@login$ scorep mpif90 -openmp hybrid.F90 -o hybrid

Score-P Instrumenter Option Overview

Type of instrumentation Instrumenter switch Default value Runtime measurement control
MPI --mpp=mpi (auto) (see Sec. Selection of MPI Groups )
SHMEM --mpp=shmem (auto) -
OpenMP --thread=omp (auto) -
Pthread --thread=pthread (auto) -
Compiler (see Sec. Automatic Compiler Instrumentation ) --compiler/--nocompiler enabled Filtering (see Sec. Filtering )
PDT instrumentation (see Sec. Source-Code Instrumentation Using PDT ) --pdt/--nopdt disabled Filtering (see Sec. Filtering)
POMP2 user regions (see Sec. Semi-Automatic Instrumentation of POMP2 User Regions ) --pomp/--nopomp depends on OpenMP usage Filtering (see Sec. Filtering )
Manual (see Sec. Manual Region Instrumentation ) --user/--nouser disabled Filtering (see Sec. Filtering ) and selective recording (see Sec. Selective Recording )

Application Measurement

After the application run, you will find an experiment directory in your current working directory, which contains all recorded data. In general, you can record a profile and/or a event trace. Whether a profile and/or a trace is recorded, is specified by the environment variables SCOREP_ENABLE_PROFILING and SCOREP_ENABLE_TRACING (see official Score-P documentation). If the value of this variables is zero or false, profiling/tracing is disabled. Otherwise Score-P will record a profile and/or trace. By default, profiling is enabled and tracing is disabled. For more information please see the list of Score-P measurement configuration variables.

You may start with a profiling run, because of its lower space requirements. According to profiling results, you may configure the trace buffer limits, filtering or selective recording for recording traces. Score-P allows to configure several parameters via environment variables. After the measurement run you can find a scorep.cfg file in your experiment directory which contains the configuration of the measurement run. If you had not set configuration values explicitly, the file will contain the default values.