Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ptp-dev] Question about performance tools framework in PTP

Greetings Dave,

Environment variable support is up in cvs now.  Currently it only supports the execution phase and there may be a few bugs to wring out of it.  I believe it meets the requirements we discussed.  Note that, similar to program argument modifications, changes to the environment are applied during execution and reverted during cleanup afterward, so environment variables set this way will not be present in the environment pane after the run is complete.

I have updated the external tools wiki page with a basic reference for the xml tool definion format: http://wiki.eclipse.org/PTP/ETFw/PTP_External_Tools_Framework#Tool_XML_Reference.

I have included a working example of environment variable usage without a utility tag below.  Note the use of the global tag in place of the utility tag.  The 'toggle' option type allows an environment variable to be defined as the "seton" value and left undefined if "setoff" is not specified.  The "required" attribute in a togoption makes it always set to on and does away with the checkbox.  The fieldrequired attribute in an optvalue tag will prevent an environment variable from being set unless there is a value in the widget's text field.  Please let me know if you would like to see any adjustments to this scheme or if you notice any problems.

Regards,
Wyatt Spear

...
    <execute>
        <global name="EnvironmentTest">
              <!--This is a static value that will always be put in the environment and bypass the UI entirely -->
              <envvar flag="A_VAR" value="1"/>

            <optionpane title="Test Vars">

                 <togoption label="Env Foo" optname="FOO" envvar="true">
                      <optvalue type="toggle" seton="yes" />
                </togoption>

                <togoption label="Env Bar" optname="BAR" envvar="true">
                      <optvalue type="text"/>
                </togoption>

               <togoption label="Value Required" optname="SET_VALUE" envvar="true" required="true">
                     <optvalue type="text"  fieldrequired="true"/>
              </togoption>

          </optionpane>
      </global>
       
     </execute>
...

On Mon, Apr 13, 2009 at 8:33 AM, Dave Wootton <dwootton@xxxxxxxxxx> wrote:
Wyatt
I think what you propose works for me.  My usage of boolean environment
variables accepts 'yes' for set and 'no' for unset. However, for the
general model, this doesn't provide a mechanism where a boolean
environment value is not set at all. In your TAU_THROTTLE example,
TAU_THROTTLE can be either "yes" or "". It cannot be unset. I wrote a
simple test, where if I 'export XX=' then run my program, getenv() returns
an empty string. If XX is not set at all (or 'unset XX'), then
getenv("XX") returns NULL, so there is a distinction between unset and set
to an empty string.

I wasn't suggesting that GUI elements be set to enabled state in the
panel. I was only thining that an environment value name and value would
be copied into the application's environment variable set or not copied.
The only time I think enabling/disabling GUI elements makes sense is when
you have GUI options based on other selections or are mutually exclusive,
then you may want to lock out some fields by disabling. This has the
potential problem that the user may want to enter something in  adisabled
field, but has no way to enable that field. A multi-pane/multi-tab dialog
just makes that more confusing. At the moment, I think I'd recommend
against disabling GUI elements.
04/10/2009 04:20 PM
Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>


To
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
cc

Subject
Re: [ptp-dev] Question about performance tools framework in PTP






As an example of environment variable usage for the execution step I had
something like this in mind:

       <execute>
       <optionpane title="TAU Vars">
           <togoption label="Throttle" optname="TAU_THROTTLE"
envvar="true"/>
                <optvalue seton="yes" setoff=""/>
           <togoption label="Callpath Depth" optname="TAU_CALLPATH_DEPTH"
envvar="true">
               <optvalue type="number"/>
           </togoption>
       </optionpane>
       <global>
           <envvar flag="TAU_VERBOSE" value="1"/>
       </global>
   </execute>

UI components in an optionpane are about the same as for arguments except
that they are specified as env-vars.  The seton/off attributes let you
change the default values (1/0) for variables that are just toggled on and
off.

There is also a global area to place hard-coded environment variables,
analogous to the 'argument' tags under tool commands.

I will have to give some thought to enabling/disabling variables based on
text entry.  It is not hard to do but it makes environment-variable field
behavior different from argument field behavior and I would prefer to keep
the two transparent.  Would it work to have all environment variable
widgets enabled by default?   There is already markup for that, and for
removing the checkboxes (soon to be documented!).  As I recall providing
an empty string when setting an environment variable is the same as not
setting it at all, so leaving the fields blank would be the same as
disabling them as far as the runtime was concerned.

Please let me know if you have any more thoughts or suggestions.

Thanks,
Wyatt

On Thu, Apr 9, 2009 at 5:38 PM, Dave Wootton <dwootton@xxxxxxxxxx> wrote:

Wyatt
Is what you are proposing is an XML tag that lists the environment
variables that need to be passed to the launch environment or a section in
the XML file with one statement for each environment variable that gets
passed to the launch environment?

How are you thinking you picking up the values for environment variables?
I was thinking that if one of the widgets had a value, that would mean
that the corresponding environment variable would be set.

For instance, if I had a text field "Maximum event count" that
corresponded to environment variable MAX_EVENTS, that if that field in the
panel was blank then MAX_EVENTS would not be set, and if the field was
non-blank, then the environment variable would not be set or passed to the
application. Maybe another keyword in the togoption specification
envname=MAX_EVENTS, possibly mutually exclusive with optname? I'd prefer
that the environment variable be set only if the field was non-blank
rather than asking the user to both check a checkbox and then set the
value.

In the case of a boolean, where you present a checkbox, I need a value to
be set when the checkbox is checked, in my case 'yes', and if the checkbox
is not checked, then the environment variable does not need to be set.

The tool I am working with doesn't have a compilation stage as such. It
parses the binary so it can give the user a list of instrumentation
points. Once the user selects the instrumentation he wants, the tool
rewrites the binary with instrumentation code. At the moment, I'm required
to use the user interface that already exists within the tool. I'm trying
to add an execution flow to the tool that is a little more friendly than
what we have today.
Dave


Wyatt Spear <wspear@xxxxxxxxxxxxxx>
Sent by: ptp-dev-bounces@xxxxxxxxxxx
04/09/2009 12:21 PM


Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>


To
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
cc

Subject
Re: [ptp-dev] Question about performance tools framework in PTP








Greetings,

Yes I can put in something to clear up those pop-ups.  They only show up
for utility applications that aren't found in the system path but I can
make them less persistent and add a case for non-tools.

As I was assembling the environment variable system I realized that the
application-composite model wouldn't always apply.  TAU is actually
similar in that regard, I've just been compiling in instrumentation
options rather than using environment variables.  I think I will add a
top-level xml tag for environment variables that go to the general launch
environment.  The default behavior will be to append environment variables
specified for the launch phase to the standard list and restore the list
to its previous state after the launch.

By the way, how does compilation with your tool work? Is that something it
might be worth while to incorporate into the workflow with the launcher?

I'll take care of those exceptions too.

Thanks!
Wyatt

On Thu, Apr 9, 2009 at 5:23 AM, Dave Wootton <dwootton@xxxxxxxxxx> wrote:

Wyatt
I was looking in the run configuration. Once I created a performance
configuration tab the panel showed up. I noticed a couple things that
could be problems though. The first time I created a performance
configurations, I got popups asking me for the path to the directories for
Tau and pinpath, where I think pinpath shows up because that's the name of
the group in the utility statement in my XML file. I don't have Tau
installed, and in pinpath's case, there is no such tool. I was able to
make the dialog go way by picking a random directory for each. If a user
chooses to not install Tau, he may be confused by what he is being asked
for. I can also get out of this by clicking cancel, although it's not
clear to me as a user what the consequences of clicking canel are. Maybe
the solution is to have text in the dialog along the lines of 'Click
cancel if <tool> is not installed or is unavailable' and then have the
plugin handle the absence of that tool properly.

This extension doesn't exactly fit my model either. In my case, I have an
application binary that has been previously instrumented by my
instrumentation and performance analysis tool which has it's own set of
views to set up the instrumentation and create the instrumented binary.
Once I have the instrumented binary, I think it's reasonable to tell the
user that he has to use the profile configurations instead of the run
configurations, since this is a different workflow. However, when I run
the instrumented application, I don't have a tool that I'm running to do
the performance analysis, I'm just setting environment variables which
affect the instrumentation, running the instrumented application and then
waiting for that application to complete. Once the application completes.
I'm expecting PTP to notify me of job completion, perhaps by use if the
IProgressMonitor. At that point, my tool knows that it has to look for the
performance data files, finds them and opens views displaying that data.
So I would expect to specify the application's path in the application tab
of the performance configuration and not specify the application path
again in the performance analysis tab. I think all that's required for my
tool to work with your plugin is that your plugin not require me to
specify some tool to run the application or assume the existence of that
tool.

For the environment variables, I'm thinking they just need to be appended
to the set that's in the environment tab of the performance configuration.
I'm guessing that since you seem to be building a command line, that your
plugin gets control somewhere in the flow to invoking the application, and
that it can just provide the environment variables I set at that point. In
my case, I'm assuming the user will be running the application on a remote
node, not the same node as Eclipse, so this would need to work for the
remote execution case as well.

I also ran into a couple exceptions trying this.

The first exception appears when I try opening a performance configuration
and may be caused by the fact taht I don't have Tau installed.

The second exception occurs after I press cancel in both of the popup
dialogs asking me for pathnames to Tau and pinpath.

Exception #1

java.lang.NoClassDefFoundError: edu/uoregon/tau/perfdmf/DataSource
at
org.eclipse.ptp.perf.tau.TAUAnalysisTab.initDBCombo(TAUAnalysisTab.java:1015)

at
org.eclipse.ptp.perf.tau.TAUAnalysisTab.initializeFrom(TAUAnalysisTab.java:994)

at
org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup.initializeFrom(AbstractLaunchConfigurationTabGroup.java:86)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:143)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:787)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$8.run(LaunchConfigurationTabGroupViewer.java:663)

at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:680)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:642)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:618)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:959)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$4.selectionChanged(LaunchConfigurationsDialog.java:566)

at
org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)

at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at
org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)

at
org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1639)

at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1104)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.handleConfigurationAdded(LaunchConfigurationView.java:281)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.access$1(LaunchConfigurationView.java:271)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView$2.run(LaunchConfigurationView.java:260)

at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)

at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1113)

at org.eclipse.debug.ui.DebugUITools$1.run(DebugUITools.java:388)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:396)

at
org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:332)

at
org.eclipse.debug.ui.actions.OpenLaunchDialogAction.run(OpenLaunchDialogAction.java:81)

at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)

at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)

at
org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)

at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)

at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)

at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)

at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)

at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
Caused by: java.lang.ClassNotFoundException:
edu.uoregon.tau.perfdmf.DataSource
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:481)

at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:397)

at
org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:385)

at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)

at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 63 more

Exception #2

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at
org.eclipse.ptp.perf.tau.TAUAnalysisTab.testTAUEnv(TAUAnalysisTab.java:533)

at
org.eclipse.ptp.perf.tau.TAUAnalysisTab.initMakefiles(TAUAnalysisTab.java:472)

at
org.eclipse.ptp.perf.tau.TAUAnalysisTab.initializeFrom(TAUAnalysisTab.java:929)

at
org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup.initializeFrom(AbstractLaunchConfigurationTabGroup.java:86)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:143)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:787)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$8.run(LaunchConfigurationTabGroupViewer.java:663)

at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:680)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:642)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:618)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:959)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$4.selectionChanged(LaunchConfigurationsDialog.java:566)

at
org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)

at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at
org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)

at
org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1639)

at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1104)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.handleConfigurationAdded(LaunchConfigurationView.java:281)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.access$1(LaunchConfigurationView.java:271)

at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView$2.run(LaunchConfigurationView.java:260)

at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)

at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at
org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1113)

at org.eclipse.debug.ui.DebugUITools$1.run(DebugUITools.java:388)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:396)

at
org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:332)

at
org.eclipse.debug.ui.actions.OpenLaunchDialogAction.run(OpenLaunchDialogAction.java:81)

at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)

at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)

at
org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)

at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)

at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)

at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)

at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)

at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

Dave

Wyatt Spear <wspear@xxxxxxxxxxxxxx>
Sent by: ptp-dev-bounces@xxxxxxxxxxx
04/08/2009 09:27 PM



Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>


To
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
cc

Subject
Re: [ptp-dev] Question about performance tools framework in PTP










Are you looking in the run configuration dialog or the profile
configuration dialog?  It should be showing up in the latter.  Check the
dropdown box in the Performance Analysis tab.  If your tool shows up there
but has no associated UI tab then the tool-pane element isn't being taken
in properly.  Can I take a look at your xml file?

I'm making some headway on environment variable support, hopefully I'll
have that up in CVS soon.  Ideally full wiki documentation for that and a
few other useful features will follow shortly.

Regards,
Wyatt

On Wed, Apr 8, 2009 at 6:18 PM, Dave Wootton <dwootton@xxxxxxxxxx> wrote:

Wyatt
I tried this tonight with PTP 2.1.1 installed on an Eclipse 3.4.1
installation and can't seem to make it work. I have a simple plugin I'm
experimenting with which implements a single new view. That plugin loads
successfully since I can see the new view.
I copied the extension point usage into my plugin.xml file directly from
the example on your wiki page

<extension point="org.eclipse.ptp.perf.workflows">
    <workflowDefinitionXML
          XMLFile="data/toolxml/tf.xml">
    </workflowDefinitionXML>
 </extension>

Then I created the data/toolxml/tf.xml file as a new file in my plugin
project and pasted the full contents from the tf.xml example just below
the extension point example into that file.

After that, I started a 2nd Eclipse instance as Eclipse application and
could see my plugin view. I opened teh run configuration dialog and picked
a parallel application run configuration and a C run configuration. I
expected to see a new tab in the launch configuration dialog with the
title Performance Analysis, but I don't see it. I don't see any errors
logged in the error log views or to the console views. I do see the
org.eclipse.ptp.perf plugin which I think implements your extension point,
in the list of plugins in the Help->About Eclipse SDK dialog so I think I
have teh right plugins loading.

I also tried using the PTP preferences panel to select the path to the
tf.xml file then open the launch configuration, and still didn't see the
new tab.

Am I doing something wrong?
Dave
Wyatt Spear <wspear@xxxxxxxxxxxxxx>
Sent by: ptp-dev-bounces@xxxxxxxxxxx
04/06/2009 02:26 PM



Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>


To
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
cc

Subject
Re: [ptp-dev] Question about performance tools framework in PTP












The most through documentation available at the moment can be found here:
http://wiki.eclipse.org/PTP/ETFw/PTP_External_Tools_Framework
There have been a few additions to the XML definition capabilities since
this was written and it doesn't cover the internal API as much as the
external XML tool definitions system.  It sounds like what you want will
be something like what we did for TAU integration, using your plugin to
wrap the components provided by the external tools.  I can pull together
some more information on that for you.

So far, most of our test cases have dealt with generating command line
arguments, so we don't have a complete general purpose environment
variable system in place.  However it shouldn't take long to get that up
and running.  Setting environment variables in the local eclipse launch
environment is fairly straightforward, but if a different method is needed
to send them to the remote system I can provide a 'getter' for environment
variables specified in the tool's UI.

-Wyatt

On Mon, Apr 6, 2009 at 11:02 AM, Dave Wootton <dwootton@xxxxxxxxxx> wrote:

Wyatt
I was hoping that if I chose this approach that it would cover CDT as
well. So that's good news. In order for this to be useful to me, I do need
to be able to add to the list of environment variables passed to the
remote process. Can you give me a reference to current documentation on
how to use this? I will look at the IProgessMonitor. I just need to find
time to do it.
Dave



Wyatt Spear <wspear@xxxxxxxxxxxxxx>
Sent by: ptp-dev-bounces@xxxxxxxxxxx
04/06/2009 12:11 PM
Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>


To
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
cc

Subject
Re: [ptp-dev] Question about performance tools framework in PTP






Greetings Dave,

The ExternalTools provide a distinct launch configuration system for both
the PTP and CDT.  Presently the system covers status with the standard
IProgressMonitor used to display job status in the UI.  It may be possible
for you to hook in to that, but if not I can probably add a listener
hook.  I'll also need to take a look and make sure environment variable
control is up and running.  Please let me know if you have any questions
or if I can help out with anything.

-Wyatt

On Mon, Apr 6, 2009 at 7:11 AM, Dave Wootton <dwootton@xxxxxxxxxx> wrote:
Wyatt
I have a performance analysis tool that has an Eclipse plugin. I'd like to
extend the Eclipse launch configuration dialog to add a new panel with
execution options specific to this tool. These options result in setting
environment variables that the tool recognizes. The tool itself runs as a
remote process on a different node than the Eclipse node. Greg suggested
that your framework might be helpful for this.

I need to use this for parallel execution, where I'm thinking of this as a
logical extension of the PTP launch configuration, as well as for serial
applications which would not use the PTP launch configuration and do not
run under control of any PTP resource manager. Does your tool framework
work only with PTP launch configurations, or would it work with the CDT
launch dialogs as well.

Also, does your framework provide any notifications of job start and
finish, such that a listener could register to be notified of those state
changes?

Thanks
Dave
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev

_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev


_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev

_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev


_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev

_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev


_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev

_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev


_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev

_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev


_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev



Back to the top