blob: 6714e2958db2908221d6fb2a73742f41dd7c9b89 [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://org.eclipse.ptp/rm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="resource_manager_type.xsd" name="pbs-generic-interactive">
<control-data>
<!-- this is a necessary property for the functioning of LML; link it to the batch-specific variable name -->
<property name="control.queue.name" visible="false">
<link-value-to>destination</link-value-to>
</property>
<property name="ompi_minor_version" visible="false" type="integer"/>
<property name="local_prefix" visible="false" type="string">
<default>/usr/local/mpi/bin/</default>
</property>
<attribute name="numProcs" 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"/>
<!--managed-files>
<file-staging-location>${ptp_rm:directory#value}</file-staging-location>
<file name="generate_routing_table">
<contents>
<![CDATA[
#!/usr/bin/perl
]]>
</contents>
</file>
</managed-files-->
<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 type="attribute" 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 type="attribute">
<match>
<expression>ompi:version:full:[\d]+\.([\d]+).*</expression>
<set field="name">
<entry value="ompi_minor_version"/>
</set>
<set field="value">
<entry valueGroup="1"/>
</set>
</match>
<test op="LT">
<value>#value</value>
<value>7</value>
<throw message="Only supports Open MPI 1.7 and later"/>
</test>
</target>
</stdout-parser>
</start-up-command>
<submit-interactive name="submit-interactive" directory="${ptp_rm:directory#value}" waitForId="true" keepOpen="true">
<arg>${ptp_rm:local_prefix#value}mpirun</arg>
<arg>--report-pid</arg>
<arg>-np</arg>
<arg>${ptp_rm:numProcs#value}</arg>
<arg>${ptp_rm:executablePath#value}</arg>
<arg>${ptp_rm:progArgs#value}</arg>
<stdout-parser delim="\n">
<target ref="@jobId">
<match>
<expression>^mpirun pid: ([\d]+)$</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="value">
<entry value="RUNNING"/>
</set>
</match>
</target>
<exit-after>^([\d]+)$</exit-after>
</stdout-parser>
<stderr-parser delim="\n">
<target ref="@jobId">
<match>
<expression>.+</expression>
<set field="name">
<entry value="${ptp_rm:@jobId#name}"/>
</set>
<set field="value">
<entry value="FAILED"/>
</set>
</match>
</target>
</stderr-parser>
</submit-interactive>
<submit-interactive-debug name="submit-interactive-debug" directory="${ptp_rm:directory#value}" waitForId="true" keepOpen="true">
<arg>${ptp_rm:local_prefix#value}mpirun</arg>
<arg>--report-pid</arg>
<arg>-np</arg>
<arg>${ptp_rm:numProcs#value}</arg>
<arg>${ptp_rm:debuggerExecutablePath#value}</arg>
<arg>${ptp_rm:debuggerArgs#value}</arg>
<stdout-parser delim="\n">
<target ref="@jobId">
<match>
<expression>^([\d]+)$</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="value">
<entry value="RUNNING"/>
</set>
</match>
</target>
<exit-after>^([\d]+)$</exit-after>
</stdout-parser>
<stderr-parser delim="\n">
<target ref="@jobId">
<match>
<expression>.+</expression>
<set field="name">
<entry value="${ptp_rm:@jobId#name}"/>
</set>
<set field="value">
<entry value="FAILED"/>
</set>
</match>
</target>
</stderr-parser>
<cmd exec="${ptp_rm:debuggerExecutablePath#value} --master" wait="false"/>
<cmd exec="${ptp_rm:directory#value}/generate_routing_table" wait="true"/>
</submit-interactive-debug>
<launch-tab>
<dynamic>
<title>Basic Open MPI</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" saveValueTo="numProcs">
<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" saveValueTo="byNodeOption"/>
<widget type="checkbox" title="By slot" saveValueTo="bySlotOption"/>
<widget type="checkbox" title="No oversubscribe" saveValueTo="noOversubscribeOption"/>
<widget type="checkbox" title="No local" saveValueTo="noLocalOption"/>
<widget type="checkbox" title="Prefix:" buttonId="prefixButton" saveValueTo="prefixOption"/>
<widget type="text" style="SWT.BORDER" saveValueTo="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" saveValueTo="useHostFile"/>
<browse textStyle="SWT.BORDER" title="Browse">
<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" saveValueTo="useHostList">
<layout-data>
<grid-data horizontalAlign="SWT.LEFT" verticalAlign="SWT.TOP"/>
</layout-data>
</widget>
<widget type="text" style="SWT.BORDER" saveValueTo="host_list">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.FILL" horizontalSpan="2"
grabExcessHorizontal="true" grabExcessVertical="true"/>
</layout-data>
<control-state>
<enable-if button="hostListButton" selected="true"/>
</control-state>
</widget>
</composite>
</dynamic>
<dynamic>
<title>Advanced Open MPI</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="checkbox" title="Use default arguments" saveValueTo="useDefaultAguments">
<layout-data>
<grid-data horizontalSpan="2"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<fixed-text>Arguments:</fixed-text>
</widget>
<widget type="text" readOnly="true" style="SWT.LEFT | SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" grabExcessHorizontal="true" grabExcessVertical="false" widthHint="400"/>
</layout-data>
<dynamic-text>
<arg>${ptp_rm:allAttributes#value}</arg>
</dynamic-text>
</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">
<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>
<monitor-data schedulerType="OPENMPI">
</monitor-data>
</resource-manager-builder>