| <?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 "@value""/> |
| </viewer> |
| </composite> |
| </composite> |
| </dynamic> |
| </launch-tab> |
| </control-data> |
| <monitor-data schedulerType="OPENMPI"> |
| </monitor-data> |
| </resource-manager-builder> |