Software: CONE

CONE (COntrol-flow event Notification Engine) is a call-graph profiler for MPI applications on AIX Power4 platforms which maps hardware-counter data onto the full call graph including line numbers. CONE is based on a run-time call-graph tracking technique developed at IBM's Advanced Computing Technology Center (ACTC), which is described in this paper.

CONE automatically traverses and instruments the executable in binary form using DPCL and causes the target application to make calls to a probe module responsible for performance monitoring. The performance data collected include wall-clock time, user time and system time as well as different hardware counters accessible via the PAPI library. The data are written to a file and can be displayed using CUBE, a generic presentation component capable of displaying a wide variety of hierarchical performance data.


CONE version 1.1.0
(May 28, 2004)
Fixed the wrong calculation of metrics and added smaller event sets. .TAR.GZ


CONE installation consists of the following steps:

  • Install CUBE 1.0. Make sure that the location of cube-config is in your search path

  • gunzip cone-xxx.tar.gz

  • tar xvf cone-xxx.tar

  • cd cone-xxx

  • Customize the file Makefile.defs:

    • Specify the CONE build path by modifying the $(PREFIX) variable. The default prefix is set to /usr/local/cone-1.0

    • Specify the DPCL include path and library path in the $(DPCLINC) and $(DPCLLIB) variables, respectively. The default path is set to /usr/lpp/ppe.dpcl

    • Specify the PAPI include path and library path in the $(PAPIINC) and $(PAPISLIB) variables, respectively. CONE uses the PAPI-3.0-beta version of PAPI. So, make sure that you install the 3.0 beta version of PAPI

    • Specify the PMAPI library path in the $(PMAPILIB) variable. The default path is set to /usr/pmapi/

  • gmake

  • gmake install

  • The installation procedure will install the CONE runtime libraries in $(PREFIX)/lib. Make sure that $(PREFIX)/bin is in your search path


    In order to use CONE, compile your application using `cone-config --cflags` as compile flags (i.e, -g -qdpcl) and for POE applications, `cone-config --ldflags` as link flags (i.e, -bE:$(PREFIX)/lib/cone_probes.imp ).

    Then, start the application using 'cone' command. CONE will produce an output file named (executable).cube, which can be viewed using CUBE. The 'cone' command has the following syntax:

         cone  [-poe | -nopoe]  [-main  mainfun] [-evs n]
               [-host hostname]  [poe options]

    Various options and parameters have the following meaning:

    [-poe | -nopoe] [OPTIONAL] Specifies whether the CONE target application is a parallel (poe) or a serial (nopoe) application. The default target application type is set to -poe.
    [-main mainfun] [OPTIONAL] If the main function of a target application is not called "main" (e.g., like in many Fortran programs), the user needs to specify its name using this option. If not specified, CONE will assume that the name of the main function is "main".
    [-evs n] [OPTIONAL] Chooses a particular event set n for measuring hardware performance counters. The default event set used is event set 0. Smaller event sets are provided to enable the user to control the overhead of the application. Below is a description of the eight event sets currently supported by CONE.

    Description of Event Sets
    Event Set Events Measured using PAPI
    0 Cycles, L1 Data Cache Accesses, L1 Data Cache Misses, TLB Misses, Total Instructions
    1 Cycles, Total Instructions, L1 Data Cache Read, L1 Data Cache Write
    2 Cycles, Total Instructions,Total Integer Instructions
    3 Cycles, Total Instructions, Total FP Instructions, FP SQRT Instr, FP DIV Instr
    4 Total Instructions, Total FP Instructions
    5 L1 Data Cache Accesses, L1 Data Cache Misses
    6 L1 Data Cache Misses
    7 Total FP Instructions

    [-host hostname] [OPTIONAL] if specified, then hostname sets the name of the host machine running the target application. The default specification of host is set to "localhost".
    [executable] Executable of the target application.
    [poe options] These are the usual parameters specified with poe. For example -procs n.


    To report a bug please email us.


    Many AIX platforms require jobs exceeding a certain number of processes to be launched using LoadLeveler. To perform measurements for an application started in this way, you can invoke CONE from your LL script.

    An example of using CONE with LoadLeveler can be found here. This is a LL script for submitting jobs of the target application mpi_hello. All job parameters, such as the desired number of processes, can be modified as usual.


  • One of the main limitations of CONE results from the limitation of the underlying instrumentation library DPCL. Since DPCL identifies a function called from a function call-site only by name, CONE is unable to cope with applications defining a function name twice for functions.
  • CONE is unable to statically identify indirect calls made via a function pointer at runtime. This limits the usability of CONE for C++ applications.
  • CONE is unable to support multi-threaded applications.
  • CONE does not support recursive applications.

  • Jun 29 2022 Contact: Admin Login