next up previous
Next: About this document ... Up: A Performance Interface for Previous: A Performance Interface for

Bibliography

1
S. Browne, J. Dongarra, N. Garner, G. Ho, and P. Mucci, ``A Portable Programming Interface for Performance Evaluation on Modern Processors'' The International Journal of High Performance Computing Applications 14:3, Fall 2000, pp. 189-204

2
B. Buck and J. Hollingsworth: An API for Runtime Code Patching, Journal of High Performance Computing Applications, 14(4):317-329, Winter 2000.

3
Ccaffeine: A CCA Component Framework for Parallel Computing. http://www.cca-forum.org/ccafe.

4
Common Component Architecture Forum. http://www.cca-forum.org.

5
CORBA Components, Object Management Group, OMG TC Document orbos/99-02-95. http://www.omg.org. (1999)

6
Cutting, D., Janssen, W., Spreitzer, M., Wymore, F.: ILU Reference Manual. Xerox Palo Alto Research Center. (1993)

7
G. Eddon and H. Eddon: Inside Distributed COM. Microsoft Press (1998)

8
D. Kara.: The Enterprise JavaBeans Component Model. Component Strategies 1(7) (1999)

9
Kohn, S., Dahlgren, T., Epperly, T., Kumfert, G.: The State of SIDL: Quarterly Status Report. Common Component Architecture Forum Meeting, Bloomington, IN. October 2-3, 2001

10
Lindlan, K.A., Cuny, J., Malony, A.D., Shende, S., Mohr, B., Rivenburgh, R., Rasmussen, C.: Tool Framework for Static and Dynamic Analysis of Object-Oriented Software with Templates. Proceedings SC'2000, (2000)

11
Malony, A., Shende, S.: Performance Technology for Complex Parallel and Distributed Systems. In: Kotsis, G., Kacsuk, P. (eds.): Distributed and Parallel Systems From Instruction Parallelism to Cluster Computing. Proc. 3rd Workshop on Distributed and Parallel Systems, DAPSYS 2000, Kluwer (2000) 37-46

12
Pallas GmbH: VAMPIR: Visualization and Analysis of MPI Resources. http://www.pallas.de/pages/vampir.htm.

Appendix: SIDL Description of Performance Interface

version performance 1.0;
package performance
{
  interface Timer 
  { /* Start/stop the Timer */ 
    void start(); 
    void stop();

    /* Set/get the Timer name */ 
    void setName(in string name);
    string getName();

    /* Set/get Timer type information 
       (e.g., signature of the routine) */ 
    void setType(in string name);
    string getType();

    /* Set/get the group name associated 
       with the Timer */
    void setGroupName(in string name);
    string getGroupName();

    /* Set/get the group id associated 
       with the Timer */ 
    void setGroupId(in long group);
    long getGroupId();
  }

  /* Query interface to obtain timing 
   * information */ 
  interface Query
  { /* Get the list of Timer and Counter names */ 
    array<string> getTimerNames();
    array<string> getCounterNames();

    /* Returns inclusive/exclusive time, numcalls,
       childcalls and counter names for given 
       timers */
    void getTimerData(in array<string> timerList,
      out array<double, 2> counterExclusive,
      out array<double, 2> counterInclusive, 
      out array<int> numCalls, 
      out array<int> numChildCalls, 
      out array<string> counterNames,
      out int numCounters);

    /* Writes instantaneous profile to disk 
     * in a dump file. */
    void dumpProfileData();
  
    /* Writes the instantaneous profile to disk 
     * in a dump file whose name
     * contains the current timestamp. */
     void dumpProfileDataIncremental();
  
    /* Writes the list of timer names to a 
     * dump file on the disk */
     void dumpTimerNames();
  
    /* Writes the profile of the given set of 
     * timers to the disk. */
    void dumpTimerData(in array<string> timerList);
  
    /* Writes the profile of the given set of 
     * timers to the disk. The dump file name 
     * contains the current timestamp when 
     * the data was dumped. */
    void dumpTimerDataIncremental(
      in array<string> timerList);
  }

  /* User defined event profiles for application 
   * specific events */ 
  interface Event
  { /* Set the name of the event */ 
    void setName(in string name);

    /* Trigger the event */ 
    void trigger(in double data);
  }

  /* Interface for runtime instrumentation control 
   * based on groups */
  interface Control
  { /* Enable/disable group id */
    void enableGroupId(in long id);
    void disableGroupId(in long id);
  
    /* Enable/disable group name */
    void enableGroupName(in string name);
    void disableGroupName(in string name);
  
    /* Enable/disable all groups */
    void enableAllGroups();
    void disableAllGroups();
  }

  /* Interface to create performance component 
   * instances */
  interface Measurement extends gov.cca.Port
  { /* Create a Timer */ 
    Timer createTimer(); 
    Timer createTimerWithName(in string name); 
    Timer createTimerWithNameType(in string name, 
      in string type); 
    Timer createTimerWithNameTypeGroup(in string 
      name, in string type, in string group);

    /* Create a Query interface */ 
    Query createQuery(); 

    /* Create a User Defined Event interface */ 
    Event createEvent(); 
    Event createEventWithName(in string name); 

    /* Create a Control interface for selectively 
     * enabling and disabling
     * the instrumentation based on groups */ 
    Control createControl(); 
  }

  /* TAU */
  /* Implementation of performance component 
   * Timer interface*/
  class TauTimer implements-all Timer
  {
  }

  /* Implementation of performance component 
   * Event interface*/ 
  class TauEvent implements-all Event
  {
  }

  /* Implementation of performance component 
   * Query interface*/
  class TauQuery implements-all Query
  {
  }

  /* Implementation of performance component 
   * Control interface*/
  class TauControl implements-all Control
  {
  }

  /* Implementation of performance component 
   * Measurement interface*/
  class TauMeasurement implements-all Measurement, 
    gov.cca.Component
  {
  }

}



Sameer Suresh Shende 2003-01-20