blob: 2293c7af5bbb8cfb71e5a4c8a81f06780104bcfe [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- ******************************************************************************* -->
<!-- * Copyright (c) 2011 IBM Corporation. All rights reserved. This program -->
<!-- * and the accompanying materials are made available under the terms of the -->
<!-- * Eclipse Public License v1.0 which accompanies this distribution, and is -->
<!-- * available at http://www.eclipse.org/legal/epl-v10.html -->
<!-- * -->
<!-- ****************************************************************************** -->
<resource-manager-builder
xmlns="http://eclipse.org/ptp/rm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://eclipse.org/ptp/rm http://eclipse.org/ptp/schemas/v1.1/rm.xsd"
name="Generic Open MPI Interactive">
<control-data>
<attribute name="ompi_minor_version" visible="false" type="integer"/>
<attribute name="ompi_major_version" visible="false" type="integer"/>
<attribute name="local_prefix" visible="false" type="string">
<default></default>
</attribute>
<attribute name="mpiNumberOfProcesses" min="1" type="integer"/>
<attribute name="byNodeOption" type="boolean"/>
<attribute name="bySlotOption" type="boolean"/>
<attribute name="noOversubscribeOption" type="boolean"/>
<attribute name="noLocalOption" type="boolean"/>
<attribute name="prefixOption" type="boolean"/>
<attribute name="prefix" type="string"/>
<attribute name="hostFileOption" type="boolean"/>
<attribute name="hostFile" type="string"/>
<attribute name="hostListOption" type="boolean"/>
<attribute name="hostList" type="string"/>
<attribute name="extraArgs" type="string"/>
<!-- Constant attribute used to disable widgets -->
<attribute name="disabled" visible="false" readOnly="true" type="boolean">
<default>true</default>
</attribute>
<start-up-command name="ompi_info">
<arg>${ptp_rm:local_prefix#value}ompi_info</arg>
<arg>-a</arg>
<arg>--parseable</arg>
<stdout-parser delim="\n">
<target allowOverwrites="true">
<match>
<expression>mca:.*:param:([^:]*):value:(.*)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="visible">
<entry value="true"/>
</set>
<set field="value">
<entry valueGroup="2"/>
</set>
</match>
<match>
<expression>mca:.*:param:([^:]*):status:(.*)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="status">
<entry valueGroup="2"/>
</set>
</match>
<match>
<expression>mca:.*:param:([^:]*):help:(.*)</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="tooltip">
<entry valueGroup="2"/>
</set>
</match>
<test op="EQ">
<value>#status</value>
<value>read-only</value>
<set field="readOnly">
<entry value="true"/>
</set>
<else>
<set field="readOnly">
<entry value="false"/>
</set>
</else>
</test>
</target>
<target>
<match>
<expression>ompi:version:full:([\d]+)\.([\d]+).*</expression>
<set field="name">
<entry value="ompi_major_version"/>
</set>
<set field="value">
<entry valueGroup="1"/>
</set>
<set field="name">
<entry value="ompi_minor_version" forceNewObject="true"/>
</set>
<set field="value">
<entry valueGroup="2"/>
</set>
</match>
<test op="AND">
<test op="AND">
<test op="EQ">
<value>#name</value>
<value>ompi_major_version</value>
</test>
<test op="EQ">
<value>#value</value>
<value>1</value>
</test>
</test>
<test op="AND">
<test op="EQ">
<value>#name</value>
<value>ompi_minor_version</value>
</test>
<test op="LT">
<value>#value</value>
<value>3</value>
</test>
</test>
<throw message="Only supports Open MPI 1.3 and later"/>
</test>
</target>
</stdout-parser>
</start-up-command>
<submit-interactive name="submit-interactive" directory="${ptp_rm:directory#value}">
<arg>perl ${ptp_rm:ptpDirectory#value}/rms/OPENMPI/start_job.pl</arg>
<arg>${ptp_rm:local_prefix#value}mpirun</arg>
<arg>-np ${ptp_rm:mpiNumberOfProcesses#value}</arg>
<arg attribute="byNodeOption" isUndefinedIfMatches="false">-bynode</arg>
<arg attribute="bySlotOption" isUndefinedIfMatches="false">-byslot</arg>
<arg attribute="noOversubscribeOption" isUndefinedIfMatches="false">-nooversubscribe</arg>
<arg attribute="noLocalOption" isUndefinedIfMatches="false">-nolocal</arg>
<arg attribute="prefixOption" isUndefinedIfMatches="false">--prefix ${ptp_rm:prefix#value}</arg>
<arg attribute="hostListOption" isUndefinedIfMatches="false">--host ${ptp_rm:hostList#value}</arg>
<arg attribute="hostFileOption" isUndefinedIfMatches="false">--hostfile ${ptp_rm:hostFile#value}</arg>
<arg>${ptp_rm:allAttributes#value}</arg>
<arg>${ptp_rm:extraArgs#value}</arg>
<arg>${ptp_rm:executablePath#value}</arg>
<arg>${ptp_rm:progArgs#value}</arg>
<environment name="PTP_JOBID" value="@jobId"/>
<environment name="PTP_LAUNCH_MODE" value="${ptp_rm:launchMode#value}" />
<stdout-parser delim="\n">
<target ref="@jobId">
<match>
<expression>#PTP job_id=([0-9]+)</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="RUNNING" />
</set>
</match>
</target>
</stdout-parser>
</submit-interactive>
<submit-interactive-debug name="submit-interactive-debug" directory="${ptp_rm:executableDirectory#value}" waitForId="true" keepOpen="true">
<arg>perl ${ptp_rm:ptpDirectory#value}/rms/OPENMPI/start_job.pl</arg>
<arg>${ptp_rm:local_prefix#value}mpirun</arg>
<arg>-np ${ptp_rm:mpiNumberOfProcesses#value}</arg>
<arg attribute="byNodeOption" isUndefinedIfMatches="false">-bynode</arg>
<arg attribute="bySlotOption" isUndefinedIfMatches="false">-byslot</arg>
<arg attribute="noOversubscribeOption" isUndefinedIfMatches="false">-nooversubscribe</arg>
<arg attribute="noLocalOption" isUndefinedIfMatches="false">-nolocal</arg>
<arg attribute="prefixOption" isUndefinedIfMatches="false">--prefix ${ptp_rm:prefix#value}</arg>
<arg attribute="hostListOption" isUndefinedIfMatches="false">--host ${ptp_rm:hostList#value}</arg>
<arg attribute="hostFileOption" isUndefinedIfMatches="false">--hostfile ${ptp_rm:hostFile#value}</arg>
<arg>${ptp_rm:allAttributes#value}</arg>
<arg>${ptp_rm:extraArgs#value}</arg>
<environment name="PTP_JOBID" value="@jobId"/>
<environment name="PTP_LAUNCH_MODE" value="${ptp_rm:launchMode#value}" />
<environment name="PTP_DEBUG_EXEC_PATH" value="${ptp_rm:debuggerExecutablePath#value}"/>
<environment name="PTP_DEBUG_EXEC_ARGS" value="${ptp_rm:debuggerArgs#value}"/>
<environment name="PTP_DEBUG_START_MASTER" value="1"/>
<stdout-parser delim="\n">
<target ref="@jobId">
<match>
<expression>#PTP job_id=([0-9]+)</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="RUNNING" />
</set>
</match>
</target>
</stdout-parser>
</submit-interactive-debug>
<launch-tab>
<dynamic includeWidgetValuesFrom="Advanced Options">
<title>Basic Options</title>
<layout>
<grid-layout numColumns="1"/>
</layout>
<composite>
<layout>
<grid-layout numColumns="2"/>
</layout>
<widget type="label" style="SWT.LEFT">
<fixed-text>Number of processes:</fixed-text>
</widget>
<widget type="spinner" style="SWT.BORDER" readOnly="false" attribute="mpiNumberOfProcesses">
<layout-data>
<grid-data horizontalAlign="SWT.LEFT" verticalAlign="SWT.CENTER"
grabExcessHorizontal="false" grabExcessVertical="false"/>
</layout-data>
</widget>
</composite>
<!-- Options group -->
<composite group="true">
<layout>
<grid-layout numColumns="4"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true"/>
</layout-data>
<title>Options</title>
<widget type="checkbox" title="By node" attribute="byNodeOption"/>
<widget type="checkbox" title="By slot" attribute="bySlotOption"/>
<widget type="checkbox" title="No oversubscribe" attribute="noOversubscribeOption"/>
<widget type="checkbox" title="No local" attribute="noLocalOption"/>
<widget type="checkbox" title="Prefix:" buttonId="prefixButton" attribute="prefixOption"/>
<widget type="text" style="SWT.BORDER" attribute="prefix">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="3" grabExcessHorizontal="true"/>
</layout-data>
<control-state>
<enable-if button="prefixButton" selected="true"/>
</control-state>
</widget>
</composite>
<composite group="true">
<layout>
<grid-layout numColumns="3" makeColumnsEqualWidth="false"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.FILL" grabExcessHorizontal="true" grabExcessVertical="true"/>
</layout-data>
<title>Hosts</title>
<widget type="checkbox" title="Host file:" buttonId="hostFileButton" attribute="hostFileOption"/>
<browse textStyle="SWT.BORDER" title="Browse" attribute="hostFile">
<text-layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" grabExcessHorizontal="true"/>
</text-layout-data>
<button-layout-data>
<grid-data horizontalAlign="SWT.RIGHT" verticalAlign="SWT.CENTER"/>
</button-layout-data>
<text-control-state>
<enable-if button="hostFileButton" selected="true"/>
</text-control-state>
<button-control-state>
<enable-if button="hostFileButton" selected="true"/>
</button-control-state>
</browse>
<widget type="checkbox" title="Host list:" buttonId="hostListButton" attribute="hostListOption">
<layout-data>
<grid-data horizontalAlign="SWT.LEFT" verticalAlign="SWT.TOP"/>
</layout-data>
</widget>
<widget type="text" style="SWT.BORDER" attribute="hostList">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.FILL" horizontalSpan="2"
grabExcessHorizontal="true" grabExcessVertical="false" heightHint="400"/>
</layout-data>
<control-state>
<enable-if button="hostListButton" selected="true"/>
</control-state>
</widget>
</composite>
</dynamic>
<dynamic includeWidgetValuesFrom="Basic Options">
<title>Advanced Options</title>
<layout>
<grid-layout numColumns="1"/>
</layout>
<composite>
<layout>
<grid-layout numColumns="1"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true"/>
</layout-data>
<!-- Launch group -->
<composite group="true">
<layout>
<grid-layout numColumns="2" makeColumnsEqualWidth="false"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true" grabExcessVertical="false"/>
</layout-data>
<title>Launch Arguments</title>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<fixed-text>Arguments:</fixed-text>
</widget>
<widget type="text" style="SWT.LEFT | SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true" grabExcessVertical="false" widthHint="400"/>
</layout-data>
<dynamic-text>
<arg>-np ${ptp_rm:mpiNumberOfProcesses#value}</arg>
<arg attribute="byNodeOption" isUndefinedIfMatches="false">-bynode</arg>
<arg attribute="bySlotOption" isUndefinedIfMatches="false">-byslot</arg>
<arg attribute="noOversubscribeOption" isUndefinedIfMatches="false">-nooversubscribe</arg>
<arg attribute="noLocalOption" isUndefinedIfMatches="false">-nolocal</arg>
<arg attribute="prefixOption" isUndefinedIfMatches="false">--prefix ${ptp_rm:prefix#value}</arg>
<arg attribute="hostListOption" isUndefinedIfMatches="false">--host ${ptp_rm:hostList#value}</arg>
<arg attribute="hostFileOption" isUndefinedIfMatches="false">--hostfile ${ptp_rm:hostFile#value}</arg>
<arg>${ptp_rm:allAttributes#value}</arg>
<arg>${ptp_rm:extraArgs#value}</arg>
</dynamic-text>
<control-state>
<disable-if attribute="disabled" value="true"/>
</control-state>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<fixed-text>Extra Arguments:</fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="extraArgs">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true"/>
</layout-data>
</widget>
</composite>
<!-- MCA group -->
<composite group="true">
<layout>
<grid-layout numColumns="1"/>
</layout>
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true"/>
</layout-data>
<title>MCA Parameters</title>
<viewer name="allAttributes" style="SWT.BORDER | SWT.MULTI" sort="true" type="table" initialAllChecked="false">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true"/>
</layout-data>
<column-data name="Name" width="175">
<tooltip>Double-click on selected rows toggles their checked value.</tooltip>
</column-data>
<column-data name="Value" width="200">
<tooltip>Click to activate value widget.</tooltip>
</column-data>
<items allDiscovered="true">
</items>
<value pattern="-mca @name &quot;@value&quot;"/>
</viewer>
</composite>
</composite>
</dynamic>
</launch-tab>
</control-data>
</resource-manager-builder>