<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>PTP 1.0 Plan</title><link rel="stylesheet" href="../../default_style.css" type="text/css"><style type="text/css"><!--.style1 {font-size: 12pt}.style2 {font-size: 12pt; font-style: italic; }--></style></head><body text="#000000" bgcolor="#ffffff" link="#0000ee" vlink="#551a8b" alink="#ff0000"><!-- Document Header -->            <table cellpadding="2" width="100%" border="0"><tbody>         <tr>          <td align="left" width="72%">     <font class="indextop">ptp 1.0 release plan </font><br>           <font class="indexsub">parallel tools platform subproject</font><span class="indexsub"><br> </span></td>          <td width="28%"><img height="86" src="../../images/Idea.jpg" width="120" alt="">           </td>         </tr>          </tbody></table><table width="455">  <tbody>    <tr>      <td width="115" valign="top">Authors:</td>      <td width="328"> <p>Greg Watson<br>        Nathan DeBardeleben<br>        Donny Kurniawan<br>        Clement Chu<br>        Craig Rasmussen  </p>      </td>    </tr>    <tr>      <td>Revision Date:</td>      <td> 19 September 2005 - Version: 0.4.0 </td>    </tr>    <tr>      <td>Change History:</td>      <td> 0.1.0 - Document Creation</td>    </tr>    <tr>      <td>&nbsp;</td>      <td>0.2.0 - Added SDM features </td>    </tr>    <tr>      <td>&nbsp;</td>      <td>0.3.0 - Minor update to FDT test plan </td>    </tr>    <tr>      <td>&nbsp;</td>      <td>0.4.0 - Added MPI development tools test plan </td>    </tr>  </tbody></table><br>This document describes the initial plan for achieving version 1.0 of the PTP.</p><ul>  <li><a href="#Deliverables">Release Deliverables</a></li>  <li><a href="#Milestones">Release Milestones</a></li>  <li><a href="#Platforms">Target Operating Environments</a></li>  <li><a href="#Features">Component Features </a></li>  <li><a href="#TestPlans">Component Test Plans</a> </li></ul><h2><a name="Deliverables"></a>Release Deliverables</h2><p>The release deliverables: <ul>  <li>Source code release for PTP Project.</li>  <li> PTP Project (downloadable).</li>  <li>PTP runtime binary distribution (downloadable).</li></ul><h2><a name="Milestones"></a>Release Milestones</h2><p>Current versions of PTP are built with Eclipse platform 3.1 and CDT 3.0.<p>The milestones are:<ul>  <li>March 4, 2005 - Milestone 1  - stable build, prototype features   <li>June 3, 2005 - Milestone 2  - stable build, reflecting progress</ul><p>As of September 2003, we will be progressing through a series of candidate releases as follows: </p><ul>  <li>Sunday September 18, 2005 - Release Candidate 1 (1.0 RC1)  <li>   Sunday September 25, 2005 - Release Candidate 2 (1.0 RC2)  <li>Sunday October 2, 2005 - Release Candidate 3 (1.0 RC3)</ul><p>It is expected that RC3 will become the final release. </p><h2><a name="Platforms" id="Platforms">Target Operating Environments</a></h2><p>Platform support for PTP is complicated by the need to operate closely with a variety of parallel runtime systems and debuggers that may in turn support a wide range of architectures. Because of this complexity, the initial release will only target a single parallel runtime.</p><table width="61%"  border="2" cellspacing="2" cellpadding="0">  <tr bgcolor="#CCCCCC">    <th colspan="4" scope="col"><span class="style1">PTP Core  Supported Platforms</span></th>  </tr>  <tr>    <td width="30%"><strong>Operating System</strong></td>    <td width="11%"><strong>Processor Architecture</strong></td>    <td width="8%"><strong>Window System</strong></td>    <td width="51%"><strong>Java 2 Platform</strong></td>  </tr>  <tr>    <td>Linux (SUSE 9.1 or RHE WS4) </td>    <td>i386</td>    <td>GTK</td>    <td>Sun Java 2 Standard Edition, version 1.4.2_08 for Linux x86</td>  </tr>  <tr>    <td>Linux (SUSE 9.1 or RHE WS4) </td>    <td>i386</td>    <td>GTK</td>    <td>IBM 32-bit SDK for Linux on Intel architecture, Java 2 Technology Edition, Version 1.4.2</td>  </tr>  <tr>    <td>Linux (SUSE 9.1 or RHE WS4) </td>    <td>x86_64</td>    <td>GTK</td>    <td>Sun Java 2 Standard Edition 5.0 Update 4 for Linux x86_64</td>  </tr>  <tr>    <td>Mac OS X 10.4</td>    <td>PowerPC</td>    <td>Carbon</td>    <td>Java 2 Standard Edition 1.4.2 for Mac OS X</td>  </tr></table><p>&nbsp;</p><table width="61%"  border="2" cellspacing="2" cellpadding="0">  <tr bgcolor="#CCCCCC">    <th colspan="4" scope="col"><span class="style1">PTP Supported Runtime Systems </span></th>  </tr>  <tr>    <td width="23%"><strong>MPI Runtime</strong></td>    <td width="17%"><strong>Processor Architecture</strong></td>    <td width="35%"><strong>Operating System</strong></td>    <td width="25%"><strong> Runtime Platform</strong></td>  </tr>  <tr>    <td>Open MPI </td>    <td>i386/x86_64</td>    <td>Linux (SUSE 9.1 or RHE WS4)</td>    <td>rsh/ssh</td>  </tr>  <tr>    <td>Open MPI </td>    <td>i386/x86_64</td>    <td>Linux (SUSE 9.1 or RHE WS4)</td>    <td>bproc 4 </td>  </tr>  <tr>    <td>Simulator</td>    <td>i386/x86_64</td>    <td>Linux (SUSE 9.1 or RHE WS4)</td>    <td>N/A</td>  </tr>  <tr>    <td>Simulator</td>    <td>PowerPC</td>    <td>Mac OS X 10.4 </td>    <td>N/A</td>  </tr></table><p>&nbsp;</p><table width="61%"  border="2" cellspacing="2" cellpadding="0">  <tr bgcolor="#CCCCCC">    <th colspan="3" scope="col"><span class="style1">PTP Debugger Supported  Systems </span></th>  </tr>  <tr>    <td width="30%"><strong>Operating System</strong></td>    <td width="31%"><strong>Processor Architecture</strong></td>    <td width="39%"><strong>MPI Runtime </strong></td>  </tr>  <tr>    <td>Linux (SUSE 9.1 or RHE WS4)</td>    <td>i386/x86_64</td>    <td>Open MPI</td>  </tr>  <tr>    <td>Linux (SUSE 9.1 or RHE WS4)</td>    <td>i386/x86_64</td>    <td>Simulator</td>  </tr>  <tr>    <td>Mac OS X 10.4 </td>    <td>PowerPC</td>    <td>Simulator</td>  </tr></table><p>&nbsp;</p><h2><a name="Features" id="Features"><strong>Component Features </strong></a></h2><ul><li><a href="#Core">Core/Runtime</a></li>  <li><a href="#Debugger">Parallel Debugger</a>  </li>  <ul>    <li><a href="#DebugCore">Debug Core</a></li>    <li><a href="#DebugUI">Debug UI</a></li>    <li><a href="#SDM">Scalable Debug Manager </a></li>  </ul>  <li><a href="#FDT">Fortran Development Tools</a> </li>  <li><a href="#MPI">MPI Development Tools</a> </li></ul><h3><a name="Core" id="Core">Core/Runtime</a></h3><ol>  <li> A Parallel Development Perspective which is comprised of a Machines View, Jobs View, Process View, Legend, and includes a Preferences Page.</li>  <li>A Machine's View which displays the status of all the machines the user knows of.</li>  <li>Dynamically updated status of the nodes of machines as those nodes change state (such as 'up', 'down', 'has a job running on it')</li>  <li>A Job's View which displays all the jobs that were started during the current session. This includes job state and a listing of processes comprising the job (including process state).</li>  <li>A Process View which displays the status of a single process (though multiple Process Views may be open concurrently). This includes the stdout of the process and has status and exit code fields that are updated dynamically as the state of the process changes.</li>  <li>Ability to focus on a machine, node, job, or process and display current status of that entity.</li>  <li>A Legend dialog that displays the various icons for nodes and processes that represent the states these entities can undertake.</li>  <li>A Preferences Page which lets the user specify settings for the type of monitoring and control system to use.</li>  <li>A model (series of instantiated data structures) that represents the known universe (machines, nodes, jobs, processes). The model is organized heirarchically and each entity contains attributes (key/value pairs) that represent additional information about the object (such as process state, node ownership, etc.)</li>  <li>An interface to external control and monitoring systems (runtime system components).</li>  <li>Open-MPI control and monitoring systems implementations. These interface to Open-RTE through the Java Native Interface (JNI).</li>  <li>Simulated control and monitoring systems which exercise the runtime system interface, user interface, and allow demonstration in environments without other control/monitoring systems.</li>  <li>Ability to start a job on a specified machine on a specified number of processes.</li>  <li>Ability to terminate a running job.</li>  <li>Ability to create sets of nodes and processes for ease of viewing. Also the ability to delete entries from these sets, add to them, and focus on a given set.</li></ol><h3 id="Debugger" name="Debugger"><a name="Debugger" id="Debugger">Parallel Debugger</a></h3><h4 class="style2"><a name="DebugCore"></a>Debug Core</h4><ol>  <li>A parallel debug model which consists of 2 packages: ptp.debug.core (PTP Debug Core) and ptp.debug.external (PTP Debug External). It is based on the CDT/CDI Debug Model. PTP Debug Core acts as a bridge between the Platform Debug Model and PTP Debug External which is connected to the external debugger interface. </li>  <li>An extension to CDI called PCDI which is suitable for the parallel debug model is shared between PTP Debug Core and PTP Debug External. With CDI and PCDI, the external component (PTP Debug External) can be further extended or replaced without rewriting the core component (PTP Debug Core).</li>  <li> A process debug model which is inherited from the PTP Core Process Model. All processes in the debug job are listed in the Parallel Debug view. One or more processes can be registered in the usual Debug view for further inspection.</li>  <li>A data structure called BitList that is very similar to java.util.BitSet with the option of further space optimization of the data storage.</li>  <li> A process set debug model to describe a set of processes using BitList as the underlying data structure.</li>  <li> Parallel support for events, breakpoints, and variables (local variables, argument variables, and global variables).</li>  <li>Event management system for multiple processes. Events from multiple processes can be aggregated into one event. The event system utilizes BitList to avoid overwhelming the platform with events.</li>  <li> Breakpoint management system for multiple processes. Unlike in the CDT Debug Model where a breakpoint is associated with a single process, in PTP Debug Model, a breakpoint is associated with the debug session. Thus, a single breakpoint can be applied to a set of processes.</li>  <li>A support to see the variables in the Variable view for selected processes in the Debug view.</li>  <li>A well-defined interface (IDebugger) in PTP Debug External to be used by external debuggers to connect to PTP. The interface is similar to the HPDF standard albeit without command-line support (e.g. command history, debug focus).</li>  <li>A simulated parallel debugger as an example of implementation of IDebugger. The debugger allows users to debug multiple processes (e.g. set breakpoint, resume, terminate) in a simulated environment. </li></ol><h4 class="style2"><a name="DebugUI"></a>Debug UI </h4><ol>  <li> Buttons and shortcuts to create, delete and modify the set by selecting elements in Debug Views.</li>  <li>Ability to name a new set in Debug Views.</li>  <li>Change set button to switch the set for examining the status of the elements in Debug Views.</li>  <li>Parallel Debug view supports mulitple jobs run and ability to switch to specific job to display its processes.</li>  <li>Parallel Debug view supports process registering or unregistering to and from the Standard Debug view.</li>  <li>C/C++ Source Editor in Parallel Debug Perspective allows create, delete, enable and disable parallel breakpoint.</li>  <li>Tooltip display to represent the multiple breakpoints on the same location with different jobs.</li>  <li>Breakpoint represent its status in different sets in different colors.</li>  <li>A set of buttons in the parallel debug view allows to resume, suspend, stop, step into, step over and step return all processes in the current set.</li>  <li>A set of buttons in the debug view allows to control the selected processes in this view.</li>  <li>Parallel Breakpoint Set view in Standard Breakpoint view which groups multiple sets of breakpoints.</li></ol><h4 class="style2"><a name="SDM"></a>Scalable Debug Manager </h4><ol>  <li>Debugger launched from UI using normal launch configuration</li>  <li>Support for local or remote debugging (i.e. debugger frontend can be on local or remote machine)</li>  <li>Support for multiple proxy protocols between Eclipse and debug frontend (initial implementation using TCP)</li>  <li>Debugger integration with OpenRTE</li>  <li>Support for basic debug commands (to be extended):    <ol type="a">      <li>Set line/function breakpoint</li>      <li>Single step</li>      <li>Continue execution</li>      <li>Evaluate expression</li>      <li>List local/global variables</li>      <li>Stackframe manipulation</li>    </ol>  </li>  <li>Debug commands can be applied to all or specific sets of processes.</li>  <li> All debug commands operate asynchronously</li>  <li>Support for three modes of event handling:    <ol type="a">      <li> wait for  events from all processes</li>      <li>wait for events from set of processes </li>      <li>wait for all events within a specified interval</li>    </ol>  </li>  <li>Debugger will automatically coalesce events of the same type </li></ol><h3><a name="FDT" id="FDT">Fortran Development Tools </a></h3><ol>    <li> Modifications to the CDT to provide a user interface that is language independent and less focused on C and C++. These modifications include:      <ol type="a">        <li> Modify the CDT C/C++ perspective to a &quot;Make Projects&quot; perspective.</li>        <li>Create &quot;Managed Make&quot; and &quot;Standard Make&quot; projects types and associated wizards to create them.</li>        <li>Modify CDT icons to reflect changes to the CDT.</li>      </ol>    </li>    <li>Additions to the CDT to provide an IDE for Fortran. These additions include:      <ol type="a">      <li> A Fortran language model.</li>      <li>A Fortran editor with syntax highlighting.</li>      <li>Recognition of Fortran file extensions.</li>      <li>Mixed language toolchains including C, C++, Fortran compilers.</li>      <li>Toolchain support for IBM, Intel, and GNU Fortran compilers.</li>      <li>Error parsers for IBM, Intel, and GNU Fortran compilers.</li>      <li>Dependency analysis enhancements to the Managed Make System to allow projects with multiple Fortran files to be built in the correct order.</li>      <li>Capability to launch Fortran applications</li>    </ol>      </li></ol><h3><a name="MPI" id="MPI">MPI Development Tools </a></h3><ol>  <li>Static analysis of one or more C/C++ source files to identify the location of MPI artifacts</li>  <li> Preference page for setting up MPI header file location and other configuration information.</li>  <li> Eclipse toolbar buttons for initiating static analysis for artifact identification, and clearing existing artifact markers.</li>  <li> Identification of &quot;MPI artifacts&quot; from C/C++ code in an Eclipse view listing API name, source file name and line number, artifact type (function or constant), etc. - linked with markers to source code locations.</li>  <li> Markers on each artifact to identify in source file, and allow navigation to the source line containing each artifact</li>  <li> Content Assist (Ctrl-space) shows possible completions of arbitrary partial API names in C source files. Mouse or cursor selection aids entry and reduces typing while improving accuracy.</li>  <li> Context-sensitive help on each identified API in C source files: mouse hover shows API name, brief description, argument types, and MPI types as exemplary fulfillments of argument types (instead of generic C type. e.g. 'MPI_Comm' instead of 'int')</li>  <li> Help view via F1 on each identified API in C source files - shows more detailed descriptions.</li>  <li> Help plug-in includes setup, examples, and walk-thru of usage of all features including screen shots.</li></ol><h2><a name="TestPlans" id="TestPlans"><strong>Component Test Plans </strong></a></h2><ul>  <li><a href="#TestCore">Core/Runtime</a></li>  <li><a href="#TestDebugger">Parallel Debugger</a>      <ul>        <li><a href="#TestDebugCore">Debug Core</a></li>        <li><a href="#TestDebugUI">Debug UI</a></li>        <li><a href="#TestSDM">Scalable Debug Manager </a></li>      </ul>  </li>  <li><a href="#TestFDT">Fortran Development Tools</a> </li>  <li><a href="#TestMPI">MPI Development Tools</a> </li></ul><h3><a name="TestCore" id="TestCore">Core/Runtime</a></h3><p> SETUP:</p><ol>  <li>  Start on a bproc machine.</li>  <li>    Make sure Open-MPI is setup and working (not part of this test, just required to utilize Open-MPI).</li>  <li>Start with a fresh Eclipse install (including workspace).</li>  <li>Install PTP.</li>  <li>Compile the PTP Open-MPI JNI library.</li>  <li>Acquire some set of nodes for a long period for testing.</li>  <li>Launch Eclipse and then launch a new Eclipse with the PTP plugins running. </li></ol><p> TEST PLAN:</p><ol>  <li> Using the Parallel Development Preferences Page select the Simulated runtime system.</li>  <li> Using the menuing system, open the Machines View and Jobs View. </li>  <li>Confirm that the Jobs View shows no jobs since it is a clean start.</li>  <li> Confirm that the Machines View displays the current state of the machines. Use the drop-down menus to observe other machines that are known and confirm they too display the current machine state. </li>  <li>Create a set of nodes using the user interface and name the set.</li>  <li> Confirm that the user can switch between (focus on) the full set of nodes for the given machine and the newly created set.</li>  <li> Add a few more nodes to the new set.</li>  <li> Focus on a different machine and confirm that the set is no longer visible (since it pertains to the original machine).</li>  <li> Create a new C project.</li>  <li> Create a new C-MPI source file in the project. The source file will have each process producing periodic output and run for a few minutes (so that the tests can be performed on a running job). </li>  <li>Compile the C-MPI application. </li>  <li>Create a new Run Configuration for this project, utilizing the Parallel Development configuration to specify the number of processes for this run and a chosen simulated machine.</li>  <li> Run the job (under simulated control).</li>  <li> Confirm that the appropriate node's change state in the Machines View to specify they contain a running job and that the job starts on the correct machine.</li>  <li> Focus on a node where one of the processes has been assigned. Confirm that the Machines View displays the processes on that node, including which job the process belongs to.</li>  <li> Double-click on one of the processes in the Machine View to bring up the Process View. Confirm that the MPI rank, node number, job number, and status are correct.</li>  <li> Observe process output in the output section of the Process View.</li>  <li> Wait for job to terminate.</li>  <li> Observe that the process state and exit code correctly display in the Process View, Machine View (for the appropriate node), and Jobs View (for the appropriate Job).</li>  <li> Bring the Jobs View to the foreground.</li>  <li> Confirm the Job previously run, as well as the processes contained within it, are listed and is shown as terminated.</li>  <li> Re-run the same job. Confirm the Job View displays the job as running and the processes as well.</li>  <li> Double-click on a process of the job, opening the Process View. Confirm the running state.</li>  <li> Terminate the job by using the terminate icon.</li>  <li> Confirm the Job View updates to show the terminated state.</li>  <li> Confirm the Process View updates to show the terminated state, including an exit-code.</li>  <li> Using the Parallel Development Preferences Page select the Open-MPI runtime system.</li>  <li> Using the Open MPI Preferences Page under the Parallel Development Preferences Page set the path and arguments to the ORTE daemon (ORTEd).</li>  <li> Run the same job from step #12 (under OMPI control).</li>  <li> Repeat steps #14 through #26 for this second runtime system (Open-MPI as opposed to simulation).</li>  <li> Switch back to the Machine View.</li>  <li> Using another terminal change the state of one of the nodes (reboot it, change ownership, etc) and confirm that the node's status changes in the Machine View (both the icon to match the legend as well as the detailed text information to display the new change(s)).</li></ol><h3 id="Debugger" name="Debugger"><a name="TestDebugger" id="TestDebugger">Parallel Debugger</a></h3><h4 class="style2"><a name="TestDebugCore" id="TestDebugCore"></a>Debug Core</h4><p>SETUP:</p><ol>  <li>Make sure that the correct version of CDT and Eclipse are installed.</li>  <li>Check out these packages from dev.eclipse.org:/home/technology/org.eclipse.ptp:      <ul>        <li>org.eclipse.ptp.core</li>        <li>org.eclipse.ptp.debug.core</li>        <li> org.eclipse.ptp.debug.external</li>        <li> org.eclipse.ptp.debug.ui</li>        <li> org.eclipse.ptp.launch</li>        <li> org.eclipse.ptp.ui</li>      </ul>  </li>  <li>Run the Eclipse Application</li>  <li>Create a simple Managed Make C Project with the name: &quot;TestC&quot;</li>  <li>Create the main program file with the name: &quot;main.c&quot;</li>  <li>Fill in &quot;main.c&quot; with any code since the Debug Simulator will not interpret the source code (it only gets the line number). Edit the file so that it contains only 20 lines.</li>  <li>Create the PTP Launch Configuration and fill in the necessary configuration, including the number of processes. </li></ol><p>TEST PLAN:</p><ol>  <li>Switch to the Parallel Debug Perspective.</li>  <li> Double click the ruler at any line in the source code window to set the breakpoint, set another breakpoint after the first breakpoint.</li>  <li> Verify that the breakpoints have been set by looking at the Breakpoints view.</li>  <li> Click the debug button for the created PTP Launch Configuration.</li>  <li> Process 0 will be registered automatically in the Debug view, 2 Console views will also be opened (one for process 0, and the other for the debugger output).</li>  <li> After printing the output for process 0, which can be verified by opening the Console view for process 0, all processes (process 0 and others) will break at the first breakpoint (since the breakpoint applies for all processes).</li>  <li> Verify this by looking at the Debug view and see that process 0 is suspended. Look at the Parallel Debug view, all processes should change to yellow. Look at the Console view for process 0, the output should stop. Look at the Console view for the debugger, there should be text saying that BreakpointEvent has been received.</li>  <li> Double click process 1 in the Parallel Debug view to register it to the Debug view. Look at the Debug view and see that process 1 has been registered and in the suspended state. Look at the Console view and verify that Console view for process 1 has been created.</li>  <li> Select process 0 and click the Step Over button in the Debug view. Look at the Console view for process 0 to verify that the action has been executed successfully. Repeat and verify this action several time</li>  <li> Select process 1 and click the Step Into button in the Debug view. Look at the Debug view and see that the number of stackframes for process 1 increases by one. Click Step Into to increase the stackframe and click Step Finish to decrease the stackframe. Repeat and verify this action several times. The maximum number of stackframes is 5.</li>  <li>Select the stackframe of process 0 and open the Variables view. Verify that there are 2 argument variables and 2 local variables.</li>  <li>Select process 0 and click the Resume button, it will then hit the second breakpoint. Click the Resume button again to run process 0 until completion (it prints 20 lines and then exits). Look at the Debug view and the Console view and verify that process 0 has exited.</li>  <li>Select process 1 and click the Terminate button. Look at the Debug view and the Console view and verify that process 1 has been terminated.</li></ol><h4 class="style2"><a name="TestDebugUI" id="TestDebugUI"></a>Debug UI </h4><p>SETUP</p><ol>  <li>  Create a C/C++ Project named as &quot;TestC&quot;</li>  <li>reate a file called &quot;main.c&quot;</li>  <li> Open it and write any coding</li>  <li> Switch to Debug Parallel Perspective</li>  <li> Add any breakpoint on &quot;main.c&quot; file by double click on ruler. OR double click anywhere on source editor and then double click on ruler again.</li>  <li> Click launch button to create parallel configuration and then adding the project name, filename and the number of processes.</li>  <li> Click debug button to launch this program.</li></ol><p>TEST PLAN:</p><ol>  <li>Starting:    <ol type="a">      <li> Parallel Debug View displays the status of processes after launching a parallel program in debug mode.</li>      <li> Debug icon of the job represent that it is in debug mode.</li>      <li> The new job will be selected at the start up and the all processes of this job will be displayed.</li>      <li> Unselected the job, the process view will be cleared.</li>    </ol>  </li>  <li> View:    <ol type="a">      <li>Drag across a rectangular region to select some processes. Hold down the left mouse button, move the mouse, and release the button when the desired process is selected.</li>      <li>Click with the left mouse button while holding down the Shift key will extent selection.</li>      <li>Click with the left mouse button while holding down the Ctrl key will continue selection.</li>      <li> A dialog box will popup when press the Create set button. After enter set name, the view will change from root set to created set. </li>      <li>There is a validation to check whether a new set name already exist or not. If exists, the ok button will be disabled.</li>      <li> Only set can be created after the job is launched.</li>      <li> Press Ctrl-A key can select all the processes.</li>      <li>Press Page-up key can go up one page.</li>      <li>Press Page-down key can go down one page.</li>      <li>Auto scrolling while dragging further up or down the views. </li>    </ol>  </li>  <li>Breakpoint:    <ol type="a">      <li> The parallel breakpoint is created when double click on ruler of the C/C++ source editor.</li>      <li>If the parallel breakpoint is created in the condition that is no job running or unselected all the jobs, this breakpoint will belong to be global for all the jobs and there is an additional overlayered image on the breakpoint. </li>      <li>Tooltips displaying details of breakpoint (job name, set name, file name and line number) will appear when mouse hovers on the breakpoint.</li>      <li>Color of a breakpoint will change to green when it is created in the current set's process.</li>      <li>Color of a breakpoint will change to yellow when it does not exist in any of the set's process.</li>      <li>Color of a breakpoint will change to blue when it exists in one of the process in the current set but is not created in this set.</li>      <li>Double on the created breakpoint on ruler, the breakpoint will be removed.</li>      <li>The global breakpoint only can be created or removed when there is no job selected.</li>      <li>Multiple breakpoints can be created in the same source file and the same line number with different jobs. </li>    </ol>  </li>  <li> Breakpoint view:    <ol type="a">      <li>All breakpoints will be displayed ordered by the set name when clicking the drop down menu in the breakpoint view and then the parallel breakpoint set.</li>      <li>Unchecked the breapoint in Breakpoint View, the breakpoint will be disabled. Check it again, it will be enabled again.</li>      <li>Right click on the breakpoint in Breakpoint View and select Goto Set action, the parallel debug view will change to the job and the set indicated in the selected breakpoint. </li>    </ol>  </li>  <li> Register / Unregister:    <ol type="a">      <li> Double click on the process in parallel debug view and the process will be registered into the debug view. A registered process is presented by a black rectangle.</li>      <li>Selecting multiple processes in the parallel debug view and then click the register button will register all of them in the debug view.</li>      <li>If more than 10 processes have been selected to register, a dialog will popup and ask for confirmation.</li>      <li>Double click on the registered process will unregister it from the debug view. The black rectangle representing the registration will be removed.</li>      <li>Selecting multiple registered processes in the parallel debug view and then click the unregister button will unregister all of them in the debug view.</li>      <li>The debug view will only display registered processes which is according to the current job and current set. </li>    </ol>  </li>  <li> Annotation    <ol type="a">      <li>If a breakpoint location contains multiple markers, annotations for both these markers will be overlapped when the breakpoint is hit. The registered process marker should appear on top. Tooltips will display process task id of each marker set in this location, grouped by its marker. </li>      <li>The annotation will change to another color(not created) when switch to another set.</li>      <li>The process icon appears in yellow process is in suspended mode. </li>      <li>The process icon appears in green when in running mode.</li>      <li>The process icon appears in red when in terminate mode.</li>      <li>The resume button and all step buttons in the parallel debug view will only be enabled when one of the processes is suspended. </li>      <li>The suspend button in the parallel debug view will only be enabled when one of the processes is running.</li>      <li>The terminate button in the parallel debug view will only be enabled when one othe processes is either running or suspended.</li>      <li>Resume button in the parallel debug view resumes all suspended processes in the current set.</li>      <li>Suspend button in the parallel debug view pauses all running processes in the current set.</li>      <li>Terminate button in the parallel debug view stops all suspended and running processes in the current set.</li>      <li>Step buttons in the parallel debug view can step into, step over and step return all suspended processes in the current set.</li>      <li>Resume button in the debug view can resume selected suspended process(es).</li>      <li>Suspend button in the debug view can pause selected running process(es).</li>      <li>Terminate button in the parallel debug view can stop any suspended or running process(es).</li>      <li>Step buttons in the debug view can step into, step over and step return any suspended process(es).</li>    </ol>  </li></ol><h4 class="style2"><a name="TestSDM" id="TestSDM"></a>Scalable Debug Manager </h4><p class="style2">TBD</p><h3><a name="TestFDT" id="TestFDT">Fortran Development Tools </a></h3><ol>  <li>In a new workspace, check out the following CDT components from dev.eclipse.org:/home/tools    <ul>      <li> org.eclipse.cdt-build/		  <ul>			<li>org.eclipse.cdt.make.core</li>			  <li>org.eclipse.cdt.make.ui</li>			  <li> org.eclipse.cdt.managedbuilder.core</li>			  <li>org.eclipse.cdt.managedbuilder.gnu.ui</li>			  <li> org.eclipse.cdt.managedbuilder.ui</li>		  </ul>      </li>		<li> org.eclipse.cdt-core/		  <ul>			<li>org.eclipse.cdt.core</li>			  <li>org.eclipse.cdt.core.ARCH</li>			  <li>org.eclipse.cdt.ui</li>		  </ul>		</li>		<li>org.ecipse.cdt-debug/		  <ul>			<li>org.eclipse.cdt.debug.core</li>			  <li> org.eclipse.cdt.debug.mi.core</li>			  <li>org.eclipse.cdt.debug.mi.ui</li>			  <li>org.eclipse.cdt.debug.ui</li>		  </ul>		</li>		<li>org.eclipse.cdt-launch/		  <ul>			<li>org.eclipse.cdt.launch</li>		  </ul>		</li>      <li>org.eclipse.cdt-doc/        <ul>          <li> org.eclipse.cdt.doc.isv</li>          <li>org.eclipse.cdt.doc.user</li>        </ul>      </li>    </ul>  </li>  <li>Next check out the FDT components from dev.eclipse.org:/home/technology    <ul>      <li>org.eclipse.ptp/lang/ </li>    </ul>  </li>  <ul>    <ul>      <li>org.eclipse.fdt.core</li>      <li>org.eclipse.fdt.managedbuilder.core</li>      <li>org.eclipse.fdt.managedbuilder.ui</li>      <li>org.eclipse.fdt.managedbuilder.tests</li>      <li>org.eclipse.fdt.ui</li>      <li> cdt_changes</li>    </ul>  </ul>  <li>From a shell, cd to Eclipse workspace and execute the shell script cdt_changes/install</li>  <li> Select org.eclipse.cdt.* projects one by one and refresh them.</li>  <li> Verify that workspace builds correctly without any errors.</li>  <li> Create Eclipse Application launch configuration (FDT) and run it.</li>  <li> Examine icons (set left of debug icon) and make sure that project, folder, and file wizard icons are &quot;M&quot; based not &quot;C&quot; based. Also check that there is a &quot;Make&quot; perspective and a &quot;Make Projects&quot; window.</li>  <li>Examine menus corresponding to these icons and make sure they don't have C/C++ in labels.</li>  <li>Right click in &quot;Make Project&quot; window and examine icons and menu labels as in #6 and #7 above.</li>  <li>Use menu in project icon to create a new &quot;Managed Make&quot; project, name it HelloWorld (check icon). Select Gnu Fortran for project type and click Finish.</li>  <li>Use menu in file icon to create a new source file. Name it hello.f90; make sure the file extension is acceptable and check icon and click Finish.</li>  <li>Check that new file is automatically opened.</li>  <li> Copy contents of org.eclipse.fdt.managedbuilder.tests/src/HelloWorld/hello.f90 into the new file and save the file.</li>  <li> Check console to see that &quot;Build complete for project HelloWorld&quot;</li>  <li> Create new &quot;Local Application&quot; Run target. Ensure that label in the configurations window is &quot;Local Application&quot; and icon has an &quot;M&quot;. Name the configuration HelloWorld and set the Project and Application fields. Set a debugger and click Run.</li>  <li> Check that &quot;Hello from Fortran Main.&quot; is printed in the console window. Select the HelloWorld target from the Run menu and check console output again.</li>  <li> Redo steps 9-15 for the directory, org.eclipse.fdt.managedbuilder.tests/src/Components. That is, create a Managed Make project named Components and build an application the files.    <ol type="a">      <li>Open Debug/subdir.mk and ensure the dependencies are as follows:        <ul>          <li>Driver.o: MonteCarloIntegrator.o</li>          <li>MonteCarloIntegrator.o: LinearFunction.o</li>          <li>MonteCarloIntegrator.o: RandNumGenerator.o</li>        </ul>      </li>      <li> Make sure the project will build and run.</li>    </ol>      </li>  <li>Redo steps 9-15 for the directory, org.eclipse.fdt.managedbuilder.tests/src/Mixed. That is, create a Managed Make project named Mixed and build an application the files.    <ol type="a">      <li>Make sure the mixed language project will build and run</li>    </ol>      </li></ol><h3><a name="TestMPI" id="TestMPI">MPI Development Tools </a></h3><p>(See help files in the plug-in for more details on these)</p><ol>  <li> Launch eclipse with PTP (incl. CDT)</li>  <li> Help -&gt; Help Contents, PTP MPI Tools</li>  <li> Follow instructions in &quot;Setup for PTP MPI tools&quot;. Basically, create a CDT project, a source file with MPI apis (a sample is included in help), and use Preferences to locate MPI header files.</li>  <li> Follow instructions in &quot;Running PTP MPI tools&quot; to set up Open MPI artifacts view (Do we need to explicitly add the actions to the toolbar?)</li>  <li> select source vile in Navigator, then select MPI action to run analysis.</li>  <li> MPI artifact view should be populated with markers, listing API name, source file name and line number, and artifact type (function or constant)</li>  <li> Double-click on any artifact, this should take you to the source file and line locating the artifact.</li>  <li> In source file, icon should be in marker bar, and squiggles should be under the artifact (e.g. function name) </li>  <li>Click on column headings in artifact view to sort by values in that column.</li>  <li> Command completion: In editor, type e.g. MPI_ and hit ctrl-space. Possible completions should appear. Continue to type a few characters; possible completions should diminish to match string. Hitting ENTER or double-clicking on any choice should insert the completed API into the file.</li>  <li> Hover help: Hover on any MPI API, see yellow popup info on API and arguments.</li>  <li> F1 help: click on any MPI API and hit F1 to see Help view appear; click on API in that view and see detailed info on that API.</li></ol></body></html>