Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

PTP/ETFw/PTP External Tools Framework

< PTP
Revision as of 13:09, 26 June 2008 by Tibbitts.us.ibm.com (Talk | contribs) (Annotated Tool XML file)

Overview

  • What is PTFw?
    • The PTP Performance Tools Framework aims to decrease the amount of "Eclipse plumbing" that must be done to integrate existing Performance Tools in Eclipse, and provide pieces and parts to provide new tools within Eclipse.
    • The PTFw provides easy integration of launching existing (e.g. command-line) tools from Eclipse. With just an XML file, an existing app can be launched, with Eclipse UI generated to solicit arguments from the user, launch the tool, and launch any analysis of the results.
    • Workflow specified in the tool xml file specifies the steps to take. Each tools can have three distinct sections:
      • compile - the compile section specifies commands to prepend the existing compiler. See xml file details and examples.
      • execute - the execute section includes utilities which prepend the actual executable, and run to gather information.
      • analyze - the analyze section contains tools which can be launched on data produced after program execution is complete. They run in a predetermined sequence. Analysis tools can also be created as eclipse plug-ins and are launched to display output within the eclipse workbench.

References

See also original design page - Performance Tools Framework Design : Preliminary design of Performance Tools Framework

Screenshots and brief examples

The following brief example shows how information to be extracted from the user prior to launch is displayed in the eclipse launch dialog, and how the items appear in the tool.xml file

Ptp-Ptfw-xml-plus-ui.png

PTFw implementations

  • TAU - Wyatt Spear, U.Oregon
    • TAU was the original application for which the PTFw tools were developed by Wyatt Spear (U. Oregon). Much of the original functionality has been generalized in the PTFw, but extensions are available (and utilized for TAU) for any features not currently available. That is, write your own eclipse plug-in code for any additional features.
  • TaskFinder - Beth Tibbitts, IBM Research
    • A tool for instrumenting a binary executable with the Intel PIN tool, and sampling memory references, was developed by IBM. The PTFw was utilized to provide a convenient user interface for the launching of TF with its arguments, and display an eclipse view (analyze section) that displays the results found, and maps the results back to source code lines. Developed by Beth Tibbitts (IBM Research) and should be available shortly (targeted for PTP 2.1 in August).

PTFw extension points

  • org.eclipse.ptp.perf.workflows
    • Handles specification of the steps to be performed in the perf/profile launch
      • Three sections: compile, execute, and analyze
      • Allows integration of external or command line tools, or eclipse plug-in tools
      • Any of the three steps are optional
    • allows the workflow XML document to be specified in the plug-in
      • without this, a workflow XML document can be specified by the end user in the Preferences, without any Eclipse code needed
    • workflow XML doc can specify one or more steps for each:
      • compile, execute, and analyze
  • org.eclipse.ptp.perf.configurationTabs
    • Handles additional tabs and UI features in launch dialog
  • org.eclipse.ptp.perf.dataManagers
    • Handles arbitrary post-processing

Availability

  • Currently available from the Eclipse CVS Repository
    • Repository location: dev.eclipse.org
    • Project: org.eclipse.ptp
    • In folder: tools/perf
    • Projects:
      • org.eclipse.ptp.perf
      • org.eclipse.ptp.perf.toolopts
      • Other project include those specific for TAU: org.eclipse.ptp.perf.* projects

Annotated Tool XML file

Annotated tool.xml file

<?xml version="1.0" encoding="UTF-8"?>
<!-- Use the unqualified 'toolset' only for the old xml format.  The current version is toolset.01 -->
<toolset.01>
 
<!-- There may be multiple tools per tool file.  
Each tool should have a unique name tag, which will be used to select it in Eclipse-->
<tool name="VampirTrace">
<!--  There are three distinct sections for each tool; compile, execute and analyze.  
             Note that each of these steps is optional  -->
 
<compile>
<!--  By default the compiler commands set here prepend whatever compiler is already in use in Eclipse.  
If you set the tag replace="true" for the compile element the compilers will be replaced entirely with 
the command specified here. Each compiler type, c, c++ and fortran, is defined as shown below.  --> 
<!-- Every command referencing a file on the system should include a group tag.  
The group tag indicates that the relevant binary files or scripts are located in the 
same place for each command sharing that tag  -->
		<CC command="vtcc" group="vampirtrace">
<!-- Arguments to be passed to a command may be specified with the argument tag as shown here. -->
			<argument value="-vt:cc"/>
		</CC>
		<CXX command="vtcxx" group="vampirtrace">
			<argument value="-vt:cxx"/>
		</CXX>
		<F90 command="vtf90" group="vampirtrace">
			<argument value="-vt:f90"/>
		</F90>
</compile>
 
<execute>
<!-- The execute section is comprised of utilities which prepend the actual executable. -->
		<utility command="mpirun" group="mpi">
			<argument value="-np 4"/>
		</utility>
</execute>
 
<analyze>
<!-- The analyze section contains tools which are launched on data produced after program execution is complete.  
The tools listed here will be
run in sequence, allowing the definition of a multi-step processing procedure.  The type tag can be set to view for 
tools that show data or process for tools that process data and (generally) output another file.  
Use caution when specifying arguments.  Some tools produce dynamically named output which is not yet supported by this plugin.  -->
		<utility type="view" command="vampir" group="vampir">
			<argument value="a.otf"/>
		</utility>
	</analyze>
</tool>
 
<tool name="Kojak">
 
	<compile>
<!-- The allcompilers compiler definition allows the same command to be used for c, c++ and fortran.  
If used in conjunction with the specific compiler definitions their commands will override the allcompilers 
command, but arguments specified for allcompilers will be added to each individual compiler -->
		<allcompilers command="kinst-pomp" group="kojak"/>
	</compile>
	<analyze>
		<utility command="expert" group="kojak">
			<argument value="a.elg"/>
		</utility>
		<utility command="paraprof" group="tau">
			<argument value="a.cube"/>
		</utility>
	</analyze>
</tool>
 
<tool name="Perfsuite">
	<execute>
		<utility command="mpirun" group="mpi">
			<argument value="-np 4"/>
		</utility>
		<utility command="psrun" group="perfsuite">
		</utility>
	</execute>
	<analyze>
		<utility command="psprocess" type="process" group="perfsuite">
			<argument value="-o xmlprocess.txt"/>
 
		</utility>
		<utility command="paraprof" type="view" group="tau">
			<argument value="-f psrun *.xml"/>
		</utility>
	</analyze>
</tool>
 
<tool name="Valgrind">
	<execute>
		<!-- Use this line only if valgrind is a shell script.  
                          The plugin can not execute scripts natively -->
		<utility command="bash" group="inbin"/>
		<utility command="valgrind" group="valgrind"/>
	</execute>
</tool>
 
<tool name="CAT">
	<execute>
		<!-- Use this line only if valgrind is a shell script.  
                         The plugin can not execute scripts natively -->
		<utility command="cat" group="cat"/>
	</execute>
</tool>
 
</toolset.01>

FAQ

  • Will more SWT widgets be added to those currently available?
    • Currently the UI information from the tool.xml file only handles checkboxes, text entry boxes, and File specifications via file dialogs.
    • We agree more widgets would be useful.
    • Wyatt has done some more extension UI work by writing Java code via an eclipse extension to the org.eclipse.ptp.configurationTabs extension point.
    • So if you need more widgets immediately, you can use this extension point to implement them for your applicaition
  • Will the profile launcher handle remote launchers?
    • We have not tested this. PTP parallel launch can launch remotely, but we have not tried it.
    • We agree this is a useful feature.
      • The framework can handle two types of launch: CDT launch and Parallel Launch.
        1. Parallel Launch (via PTP) is now available. Again, we have note tested this with the Perf Framework
        2. CDT remote launch is not yet available but should be as part of RDT (Remote Development Tools) being developed by IBM Toronto, which should be available in the near future. At that time we can evaluate adding a remote CDT launch to Perf Framework.
  • File upload/download feature is needed
    • The PTP Remote Tools, used by PTP remote launch/monitor/debug might be able to do this already,
    • we will investigate if the Perf FW would have to do something specific or not.
    • If you just need to access remote information from a class that is called in your plug-in extension (like in my Taskfinder Post-processing class) then that should be do-able now by using RemoteTools directly.

Back to the top