Profiling using Scalasca¶
Scalasca is installed on Cirrus, which is an open source performance profiling tool. Two versions are provided, using GCC 8.2.0 and the Intel 19 compilers; both use the HPE MPT library to provide MPI and SHMEM. An important distinction is that the GCC+MPT installation cannot be used to profile Fortran code as MPT does not provide GCC Fortran module files. To profile Fortran code, please use the Intel+MPT installation.
Loading the one of the modules will autoload the correct compiler and MPI library:
module load scalasca/2.6-gcc8-mpt225
module load scalasca/2.6-intel19-mpt225
Once loaded, the profiler may be run with the
scan commands, but
the code must first be compiled first with the Score-P instrumentation wrapper tool.
This is done by prepending the compilation commands with
scorep mpicc -c main.c -o main scorep mpif90 -openmp main.f90 -o main
Advanced users may also wish to make use of the Score-P API. This allows you to manually define function and region entry and exit points.
You can then profile the execution during a Slurm job by prepending your
with one of the equivalent commands
scalasca -analyze or
scalasca -analyze srun ./main scan -s srun ./main
You will see some output from Scalasca to stdout during the run. Included in that output
will be the name of an experiment archive directory, starting with scorep_, which will
be created in the working directory. If you want, you can set the name of the directory
by exporting the
SCOREP_EXPERIMENT_DIRECTORY environment variable in your job script.
There is an associated GUI called Cube which can be used to process and examine the
experiment results, allowing you to understand your code’s performance. This has been made
available via a Singularity container. To start it, run the command
cube followed by
the file in the experiment archive directory ending in .cubex (or alternatively the whole
archive), as seen below:
The Scalasca quick reference guide found here provides a good overview of the toolset’s use, from instrumentation and use of the API to analysis with Cube.