Periscope is a scalable automatic performance analysis tool currently under development at Technische Universitaet Muenchen. It consists of a frontend and a hierarchy of communication and analysis agents. Each of the analysis agents, i.e., the nodes of the agent hierarchy, searches autonomously for inefficiencies in a subset of the application processes.
More information on Periscope may be found on the webpage of the developers (Periscope) or in the User's Guide which can be found (after loading the module) under $PERISCOPE_ROOT/doc.
Periscope can be used after loading the module
module load periscope
This will automatically load the modules
ace, papi, xerces/3.1
to your environment. (Please note: 'module unload periscope' will unload Periscope, ace, papi, xerces/3.1. The additional modules will be unloaded automatically!)
Before first use of Periscope, you should do the following steps:
Create the configuration file
Create the configuration file .periscope in your home directory and adapt it. You may copy it from $PERISCOPE_ROOT/doc/periscope.sample It should look like:
MACHINE = supzero //hostname
SITE = LRZ
REGSERVICE_HOST = i01r12s30 //host of registry - i01r12s30 or i01r12s34 for SuperMIG Front-end
REGSERVICE_PORT = 50001 //port of the registry
AGENT_BASEPORT = 51000 //first port agent hierarchy
APPL_BASEPORT = 50002 //first port for application
Install the Periscope GUI for Eclipse
Add the update site of the plugin:
- Select: Help -> Install New Software menu.
- Click on Add at the top right side of the window to display a dialog for adding new update sites.
- Enter Periscope GUI for the Name field.
- Enter http://www.lrr.in.tum.de/periscope for the Location field.
- Click OK to add it and go back to the previous window.
- Select the update site by entering Periscope GUI in the Work with field.
- Select the Periscope Toolkit from the table with the provided features and click Next.
- Eclipse will calculate all dependencies and then it will show a list of all plug-ins to be installed.
- Click Next to confirm this selection and continue.
- Accept the license (required by Eclipse for all plug-ins) and click Next again to start the installation.
- Restart the Eclipse.
The use of Periscope consist of 3 phases:
Prepare and link the application with the measurement libraries. Normally you modify compile and link commands in a Makefile or by invoking configure. For example, replace
mpicc -o foo [some options] foo.cwith
psc_instrument -s foo.sir -t [granularity] mpicc -o foo [some options] foo.c
For MPI program with a user region granularity should be changed with
psc_instrument -s foo.sir -t user,mpi mpicc -o foo [some options] foo.c
to produce an instrumented binary that is ready to be executed.
If you want to analyze OpenMP Fortran programs you have to use the corresponding compiler switch:
psc_instrument -s foo.sir -t user,omp mpif90 -openmp [some options] foo.f90
Granularity can be specified as parameter of psc_instrumenter or as part of psc_inst_config file. Here are all possible granularities:
all - every possible entry is instrumented, detailed analysis, high overhead
user,loop - good for single core analysis of major algorithms implemented as loops
user,call - good for performance analysis of performance of called functions
user,loop,call - similar to all, but only for single core performance analysis
mpi - mpi analysis only
user,omp,par,sync - OpenMP analysis only
none - don’t instrument file, might be useful when the instruementer fails on this file
mod_only - parse the module file, but don’t instrument the file. Is needed when the other instrumented files uses this module
The Periscope agents and the application processes register with a registry. The registry is started via:
The port of the registry will be taken from the environment variable PSC_REGISTRY, from the REGSERVICE_PORT in the configuration file or as argument given at starting of Periscope frontend. It will run on the host where it was started.
psc_frontend --apprun="./foo -f [program parameters]" [--strategy=strategy] [--mpinumprocs=n] [--ompnumthreads=m] --sir=foo.sir [some other parameters]which collects performance problems in a file by default properties.psc.
For detailed information on parameters refer to the Periscope cheat sheet.
Please note: The monitoring system running on every node will carry out measurements every 10 minutes. It is therefore important to switch it off from your job script. Before running the psc_frontend, you should use the command:
Analyzing the detected performance properties: (Eclipse GUI)
The frontend will write the detected bottlenecks by default into the file called properties.psc.
Start Eclipse with
eclipseto explore the detected bottlenecks, as in the picture
Open the project and double-click on
- Visit http://www.lrr.in.tum.de/periscope for more information.