# Presentation: 385716

## Prophesy: A Web-based Performance Analysis and Modeling System for Parallel and Grid Applications

- Valerie Taylor
- Texas A&M University
- Xingfu Wu, Joseph Paris
*Northwestern University*
- Rick Stevens, Ivan Judson, Mark Hereld
*Argonne National Laboratory*

## Outline

**Prophesy System**
**Prophesy Database**
**Data Collection: PAIDE System**
**Data Analysis: Model Builder**
**Summary**

## Prophesy System

**Web-based Prophesy GUI**

**   **

**Actual**

**   ****Execution**

**Performance**

**   ****Database**

**      **** ****DATA**

**COLLECTION**

**DATABASES**

**    **** ****DATA**

**ANALYSIS**

## Prophesy System

- Data Collection
- PAIDE system
- Prophesy Database
- Systems Database
- Performance Database
- Template Database
- Data Analysis
- Model Builder
- Symbolic Predictor

## Prophesy Database

**Performance**
**   ****Database**

**Template**
**Database**

** ****Systems**
**Database**

- Hierarchical organization
- Organized into 4 areas:
- Application
- Executable
- Run
- Performance Statistics

## Applications

**Application**
- (Molecular Dynamics)

**Module**
- (partition.c)

**Function**
- (comp_inter)

**Basic Unit**
- (For(...))

**Basic Unit**

**Basic Unit**

**Module**
- (md.c)

**Module**

**Function**
- (check_radius)

## Prophesy Database

**Application**

**Executable**

**Run**

**Application Performance**

**Modules**

**Function Performance**

**Basic Unit Performance**

**Data Structure Performance**

**Inputs**

**Systems**

**Resource**

**Connection**

**Functions**

**Module_Info**

**Control Flow**

**Compilers**

**Model Template**

**Function_Info**

**Library**

**Model_Info**

**User**

## User Input

**Application**

**User**

- User should register an account and an application online first.
- It requires information about the user and application such as user name, password, email, application name, and version, etc.
- Done once for all executables of the application the user owns.

**Automated Source-code instrumentation at the multiple levels via PAIDE**
**Support for C, Fortran77 and 90 programs**
**Minimal instrumentation overhead and code**
**Performance Data entered into the database automatically via PAIDE or manually via web site**

- Data Collection: PAIDE System

**   ****Profiling &**
**   ****Instrument****.**

-    **Actual**
**   ****Execution**

## PAIDE System

- Options:
-  -ALL:     Instrument all procedures and outer loops
-  -PROC: Instrument all procedures
-  -LOOP: Instrument all loops
-  -NOP:   Instrument all procedures not nested in loops
-  -FTP:     Use Perl SOAP scripts to automatically transfer performance data to the Prophesy database
- Default:    Instrument procedures and outer loops

- Performance Data Files
**For user and application**:
- User name
- Password
- Email
- Application Name
- Application Version

**For each executable**:
- Executable Name
- Problem Size
- Total Number of Processors
- Total Execution Time
- Processor Number
- System Name
- Run Date and Time

**For each event (procedure or loop):**
- Event ID
- Start Line Number
- End Line Number
- Event type (Procedure or Loop)
- Procedure Name (if event type is Procedure)
- Caller Name
- Module Name
- Runtime
- Square of runtimes

- Data Entry
- Use Perl SOAP scripts to automatically process the performance data files at the end of program execution, and put the data into the Prophesy database.
- Use web form interfaces to manually put the data into the Prophesy database.
- Use Perl SOAP script to automatically process performance data files generated by SvPablo,and put them into the database.

- Data Analysis: Model Builder

** ****Model**
**Builder**

** ****Symbolic**
**Predictor**

-  Develop performance models
- Make runtime predictions
- Identify best implementation
- Identify performance trends and performance bottlenecks

## Utilize information in the Prophesy databases
Performance database
Template database
System database
Three techniques
Curve Fitting
Parameterization
Coupling

- Performance database
- Template database
- System database
- Three techniques
- Curve Fitting
- Parameterization
- Coupling

- Develop Performance Models

## Model Builder Framework

- Model Type

- Applications

- Executable

- System

- Performance Data

- Data sorted by Executable/System

- Graph Type and Arrangement

- Modeler Output and Display via Octave

## Curve Fitting Method

- Uses least squares
- Uses database information
- Executable information
- Runtime
- Inputs (problem size)
- Number of Processors
- User selected model order
- Does not expose system parameters

## Curve Fitting: Usage

**Application Performance**

**Function Performance**

**Basic Unit Performance**

**Data Structure Performance**

**Model Template**

## Parameterization Method

- Requires manual analysis of the kernel or function
- Hand count operations
- Expose system parameters
- Only needs to be done once per kernel
- Uses database information
- System database
- Model template database

## Parameterization: Usage

**Model Template**

**Systems**

**Resource**

**Connection**

## Coupling Method

- Represents an application in terms of its kernels or components
- Does not require manual analysis
- Uses database information
- Coupling values
- Performance data

## Coupling Method: Usage

**Run**

**Function Performance**

**Inputs**

**Systems**

**Functions**

**Control Flow**

***Adjacent Kernels***

***Data and ***
***System Info***

***Coupling Values and Performance data***

**Coupling**

## Summary

**Instrument at the level of basic blocks and/or procedures automatically via PAIDE.**
**Enter data into the database automatically via PAIDE or manually via web site.**
**Present the automated modeling component of Prophesy with three techniques:**
**Curve Fitting**
**Parameterization**
**Coupling**

## Prophesy System Web Page