blob: f8d10c5e6900cbd0819d3609bf3c0a428eccd1d6 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2013 IBM Corporation and others. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0s 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="IBM Platform LSF">
<!-- Make sure XML editor line length is set long enough (160) to avoid
wrapping text so messages do not get wrapped when reformatting -->
<control-data>
<!-- This is a necessary attribute for the functioning of LML; link it
to the batch-specific variable name -->
<attribute name="control.queue.name" visible="false">
<link-value-to>LSF_QUEUE</link-value-to>
</attribute>
<!-- Needed by RM internals for fetch; name is fixed by convention -->
<attribute name="stdout_remote_path" visible="false">
<default>${ptp_rm:working.directory#value}/stdout.${ptp_rm:@jobId#name}.txt</default>
</attribute>
<!-- Needed by RM internals for fetch; name is fixed by convention -->
<attribute name="stderr_remote_path" visible="false">
<default>${ptp_rm:working.directory#value}/stderr.${ptp_rm:@jobId#name}.txt</default>
</attribute>
<attribute name="mpiCommand" type="choice">
<description>Optional MPI command to run job:</description>
<choice>,poe,mpiexec,mpirun,jsrun</choice>
</attribute>
<!-- -ar option -->
<!-- This is a boolean option with no argument. Use datatype boolean so
we can take advantage of remapping user's choice to something that can be
used as a conditional expansion for '<arg isUndefinedAsMatches ...' -->
<attribute name="LSF_JOB_RESIZABLE" type="boolean"
translateBooleanAs=" ,no">
<description>Job Is Resizable:</description>
<tooltip>Sets the job as autoresizable. (-ar)</tooltip>
<default>no</default>
</attribute>
<!-- -B option -->
<!-- This is a boolean option with no argument. Use datatype boolean so
we can take advantage of remapping user's choice to something that can be
used as a conditional expansion for '<arg isUndefinedAsMatches ...' -->
<attribute name="LSF_NOTIFY_DISPATCH" type="boolean"
translateBooleanAs=" ,no">
<description>Dispatch Notification:</description>
<tooltip>Specifies that email is sent when your job is dispatched. (-B)</tooltip>
<default>no</default>
</attribute>
<!-- -N option -->
<!-- This is a boolean option with no argument. Use datatype boolean so
we can take advantage of remapping user's choice to something that can be
used as a conditional expansion for '<arg isUndefinedAsMatches ...' -->
<attribute name="LSF_NOTIFY_COMPLETION" type="boolean"
translateBooleanAs=" ,no">
<description>Completion Notification:</description>
<tooltip>Specifies that email is sent when your job completes. This option is disabled if STDOUT pathnames are blank. (-N)</tooltip>
<default>no</default>
</attribute>
<!-- -r option -->
<!-- This is a boolean option with no argument. Use datatype boolean so
we can take advantage of remapping user's choice to something that can be
used as a conditional expansion for '<arg isUndefinedAsMatches ...' -->
<attribute name="LSF_RERUN_SYS_FAILURE" type="boolean"
translateBooleanAs=" ,no">
<description>Rerun on System Failure:</description>
<tooltip>Specifies the job will be rerun if host or system fails. (-r)</tooltip>
<default>no</default>
</attribute>
<!-- -rn option -->
<!-- This is a boolean option with no argument. Use datatype boolean so
we can take advantage of remapping user's choice to something that can be
used as a conditional expansion for '<arg isUndefinedAsMatches ...' -->
<attribute name="LSF_NORERUN_SYS_FAILURE" type="boolean"
translateBooleanAs=" ,no">
<description>Do not Rerun on System Failure:</description>
<tooltip>Specifies the job is never re-runnable. (-rn)</tooltip>
<default>no</default>
</attribute>
<!-- -ul option -->
<!-- This is a boolean option with no argument. Use datatype boolean so
we can take advantage of remapping user's choice to something that can be
used as a conditional expansion for '<arg isUndefinedAsMatches ...' -->
<attribute name="LSF_PASS_USER_LIMITS" type="boolean"
translateBooleanAs=" ,no">
<description>Pass User Limits:</description>
<tooltip>Passes user's local shell limits to execution host. User limits cannot override OS or queue limits. (-ul)</tooltip>
<default>no</default>
</attribute>
<!-- -x option -->
<!-- This is a boolean option with no argument. Use datatype boolean so
we can take advantage of remapping user's choice to something that can be
used as a conditional expansion for '<arg isUndefinedAsMatches ...' -->
<attribute name="LSF_EXCLUSIVE_EXECUTION" type="boolean"
translateBooleanAs=" ,no">
<description>Exclusive Execution:</description>
<tooltip>Puts the host running your job into exclusive execution mode. (-x)</tooltip>
<default>no</default>
</attribute>
<!-- -app option -->
<attribute name="LSF_APP_PROFILE" type="string">
<description>Application Profile:</description>
<tooltip>Submits the job to the specified, existing application profile. (-app)</tooltip>
</attribute>
<!-- -b option -->
<attribute name="LSF_DISPATCH_AT" type="string">
<description>Dispatch At:</description>
<tooltip>Dispatches the job at or after the specified date and time. (-b)</tooltip>
<validator>
<!-- Validate time spec where time can be blank, yyyy:mm:dd:hh:mm, mm:dd:hh:mm,
dd:hh:mm or hh:mm -->
<regex
expression=" *|(?:[\d]{1,4}:[\d]{1,2}:[\d]{1,2}:|[\d]{1,2}:[\d]{1,2}:|[\d]{1,2}:)?[\d]{1,2}:[\d]{1,2}" />
<error-message>Dispatch At Time format is incorrect.
</error-message>
</validator>
</attribute>
<!-- -C option -->
<attribute name="LSF_COREFILE_LIMIT" type="string">
<description>Core File Limit:</description>
<tooltip>Sets the soft per-process core file size limit for all processes in this batch job. (-C)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>Core file limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -c option -->
<attribute name="LSF_CPUTIME_LIMIT" type="string">
<description>CPU Time Limit:</description>
<tooltip>Sets the total CPU time limit for the job to prevent runaway jobs. (-c)</tooltip>
<validator>
<regex expression=" *|([\d]+:)?[\d]+(/.+)?" />
<error-message>CPU time limit must be a valid time specification with optional host name or model.
</error-message>
</validator>
</attribute>
<!-- -D option -->
<attribute name="LSF_DATA_LIMIT" type="string">
<description>Data Limit:</description>
<tooltip>Sets the per process soft data segment size limit for each process in the job. (-D)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>Data segment limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -e option -->
<attribute name="LSF_STDERR_PATH_APPEND" type="string">
<description>STDERR Path (Append):</description>
<tooltip>Specifies that standard error (STDERR) application output is appended to the file specified by this option. (-e)</tooltip>
</attribute>
<!-- -eo option -->
<attribute name="LSF_STDERR_PATH_NEW" type="string">
<description>STDERR Path (New):</description>
<tooltip>Format of the standard error (STDERR) file (-eo). This should not be changed.</tooltip>
<default>stderr.%J.txt</default>
</attribute>
<!-- -F option -->
<attribute name="LSF_FILESIZE_LIMIT" type="string">
<description>File Size Limit:</description>
<tooltip>Sets the per process soft file size limit for each process in the job. (-F)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>File size limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -G option -->
<attribute name="LSF_USER_GROUP" type="string">
<description>User Group:</description>
<tooltip>Associates the job with the specified user group. (-G)</tooltip>
</attribute>
<!-- -g option -->
<attribute name="LSF_JOB_GROUP" type="string">
<description>Job Group Name:</description>
<tooltip>Submits jobs in the specified job group. (-g)</tooltip>
</attribute>
<!-- -i option -->
<attribute name="LSF_STDIN_PATH" type="string">
<description>STDIN Path:</description>
<tooltip>Specifies that the specified file is used for standard input (STDIN). (-i)</tooltip>
</attribute>
<!-- -is option -->
<attribute name="LSF_STDIN_EDITABLE_PATH" type="string">
<description>STDIN Path (Editable):</description>
<tooltip>Specifies that the specified file is used for standard input (STDIN). The original file may be edited or deleted after job submission. (-is)</tooltip>
</attribute>
<!-- -J option -->
<attribute name="LSF_JOB_NAME" type="string">
<description>Job Name:</description>
<tooltip>Sets the job name for this job. (-J)</tooltip>
</attribute>
<!-- -Jd option -->
<attribute name="LSF_JOB_DESCRIPTION" type="string">
<description>Job Description:</description>
<tooltip>Sets the job description for this job. (-Jd)</tooltip>
</attribute>
<!-- -jsdl option -->
<attribute name="LSF_JSDL_FILE" type="string">
<description>Submit JSDL Job (LSF Extensions):</description>
<tooltip>Submits a job using a JSDL file with LSF extensions schema. (-jsdl)</tooltip>
</attribute>
<!-- -jsdl_strict option -->
<attribute name="LSF_JSDL_FILE_STRICT" type="string">
<description>Submit JSDL Job (strict):</description>
<tooltip>Submits a job using a JSDL file with standard schema. (-jsdl_strict)</tooltip>
</attribute>
<!-- -k option -->
<attribute name="LSF_CHECKPOINT" type="string">
<description>Checkpointing:</description>
<tooltip>Makes a job checkpointable and specifies the checkpoint directory. (-k)</tooltip>
</attribute>
<!-- -L option -->
<attribute name="LSF_LOGIN_SHELL" type="string">
<description>Login Shell:</description>
<tooltip>Initializes the execution environment using the specified login shell. (-L)</tooltip>
</attribute>
<!-- -Lp option -->
<attribute name="LSF_LICENSE_SCHEDULER_PROJECT" type="string">
<description>License Scheduler Project:</description>
<tooltip>Assigns the job to the specified License Scheduler project. (-Lp)</tooltip>
</attribute>
<!-- -M option -->
<attribute name="LSF_MEMORY_LIMIT" type="string">
<description>Memory Limit:</description>
<tooltip>Sets the per process soft memory limit for all processes in this job. (-M)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>Memory limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -m option -->
<attribute name="LSF_HOST_NAMES" type="string">
<description>Execution Host Name(s):</description>
<tooltip>Runs the job on one of the specified hosts, host groups or compute units. (-m)</tooltip>
</attribute>
<!-- -mig option -->
<attribute name="LSF_MIGRATION" type="string">
<description>Migration Threshold:</description>
<tooltip>Specifies the migration threshold for checkpointable and rerunnable jobs. (-mig)</tooltip>
</attribute>
<!-- -n option -->
<attribute name="LSF_NUM_PROCS" type="string">
<description>Number of Processors:</description>
<tooltip>Specifies the minimum and optional maximum number of processors to run the job. (-n)</tooltip>
<validator>
<!-- Validate # of processors as blank, n, or m,n where m and n must
be integers -->
<regex expression=" *|[\d]+(?:,[\d]+)?" />
<error-message>Number of processors must be numeric or numeric pair.
</error-message>
</validator>
</attribute>
<!-- -network option -->
<attribute name="LSF_NETWORK" type="string">
<description>Network Attributes:</description>
<tooltip>Specifies the network attributes (type, protocol, mode, usage, instance, etc) for the job. (-network)</tooltip>
</attribute>
<!-- -o option -->
<attribute name="LSF_STDOUT_PATH_APPEND" type="string">
<description>STDOUT Path (Append):</description>
<tooltip>Appends standard output (STDOUT) output to the specified file. (-o)</tooltip>
</attribute>
<!-- -oo option -->
<attribute name="LSF_STDOUT_PATH_NEW" type="string">
<description>STDOUT Path (New):</description>
<tooltip>Format of the standard output (STDOUT) file (-oo). This should not be changed.</tooltip>
<default>stdout.%J.txt</default>
</attribute>
<!-- -P option -->
<attribute name="LSF_PROJECT_NAME" type="string">
<description>Project Name:</description>
<tooltip>Assigns the job to the specified project. (-P)</tooltip>
</attribute>
<!-- -p option -->
<attribute name="LSF_PROCESS_LIMIT" type="string">
<description>Process Limit:</description>
<tooltip>Sets the limit of the number of processes for the entire job. (-p)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>Process limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -Q option -->
<attribute name="LSF_REQUEUE_CODES" type="string">
<description>Auto Requeue Exit Codes:</description>
<tooltip>Specifies automatic job requeue exit values. (-Q)</tooltip>
<validator>
<regex expression=" *|~?[\d]+( ~?[\d+])*|EXCLUDE\(~?[\d]+( ~?[\d]+)*\)" />
<error-message>Requeue exit code (-Q) specification is incorrect.
</error-message>
</validator>
</attribute>
<!-- -q option -->
<attribute name="LSF_QUEUE" type="string">
<description>Job Queue:</description>
<tooltip>Submits the job to the specified queue. (-q)</tooltip>
</attribute>
<!-- -R option -->
<attribute name="LSF_RESOURCES" type="string">
<description>Resource Requirements:</description>
<tooltip>Runs the job on a host that meets the specified requirements. (-R)</tooltip>
</attribute>
<!-- -S option -->
<attribute name="LSF_STACK_LIMIT" type="string">
<description>Stack Limit:</description>
<tooltip>Sets the per process soft limit for the stack for each process in the job. (-S)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>Stack limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -s option -->
<attribute name="LSF_SIGNAL" type="string">
<description>Run Window Signal:</description>
<tooltip>Sends the specified signal when a queue-level run window closes. (-s)</tooltip>
</attribute>
<!-- -sla option -->
<attribute name="LSF_SERVICE_CLASS" type="string">
<description>Service Class:</description>
<tooltip>Specifies the service class where the job is to run. (-sla)</tooltip>
</attribute>
<!-- -sp option -->
<attribute name="LSF_JOB_PRIORITY" type="string">
<description>Job Priority:</description>
<tooltip>Sets the job priority for this job. (-sp)</tooltip>
</attribute>
<!-- -T option -->
<attribute name="LSF_THREAD_LIMIT" type="string">
<description>Thread Limit:</description>
<tooltip>Sets the limit for the number of concurrent threads for the entire job. (-T)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>Thread limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -t option -->
<attribute name="LSF_TERMINATION_DEADLINE" type="string">
<description>Termination Deadline:</description>
<tooltip>Specifies the job termination deadline. (-t)</tooltip>
<validator>
<!-- Validate time spec where time can be blank, yyyy:mm:dd:hh:mm, mm:dd:hh:mm,
dd:hh:mm or hh:mm -->
<regex
expression=" *|(?:[\d]{1,4}:[\d]{1,2}:[\d]{1,2}:|[\d]{1,2}:[\d]{1,2}:|[\d]{1,2}:)?[\d]{1,2}:[\d]{1,2}" />
<error-message>Termination Deadline format is incorrect.
</error-message>
</validator>
</attribute>
<!-- -U option -->
<attribute name="LSF_RESERVATION_ID" type="string">
<description>Reservation ID:</description>
<tooltip>Uses the specified reservation id when scheduling the job. (-U)</tooltip>
</attribute>
<!-- -u option -->
<attribute name="LSF_EMAIL_ID" type="string">
<description>Email ID:</description>
<tooltip>Sends notification emails to the specified email address. (-u)</tooltip>
</attribute>
<!-- -v option -->
<attribute name="LSF_SWAP_LIMIT" type="string">
<description>Swap Limit:</description>
<tooltip>Sets the total process virtual memory limit for the job. (-v)</tooltip>
<validator>
<regex expression=" *|[\d]+" />
<error-message>Swap limit must be a numeric value.
</error-message>
</validator>
</attribute>
<!-- -W option -->
<attribute name="LSF_RUNTIME_LIMIT" type="string">
<description>Runtime Limit:</description>
<tooltip>Sets the runtime limit for job. (-W)</tooltip>
<validator>
<regex expression=" *|([\d]+:)?[\d]+(/.+)?" />
<error-message>Runtime limit must be a valid time specification with optional host name or model.
</error-message>
</validator>
</attribute>
<!-- -We option -->
<attribute name="LSF_RUNTIME_ESTIMATE" type="string">
<description>Estimated Runtime:</description>
<tooltip>Specifies the estimated runtime for job. (-We)</tooltip>
<validator>
<regex expression=" *|([\d]+:)?[\d]+(/.+)?" />
<error-message>Runtime estimate must be a valid time specification with optional host name or model.
</error-message>
</validator>
</attribute>
<!-- -w option -->
<attribute name="LSF_DEPENDENCIES" type="string">
<description>Job Dependencies:</description>
<tooltip>Specifies dependencies for job. (-w)</tooltip>
</attribute>
<!-- -wa option -->
<attribute name="LSF_JOB_ACTION" type="string">
<description>Job Action Signal:</description>
<tooltip>Specifies the job action to be taken before a job action occurs. (-wa)</tooltip>
</attribute>
<!-- -wt option -->
<attribute name="LSF_JOB_ACTION_TIME" type="string">
<description>Job Action Time:</description>
<tooltip>Specifies the time before a job control action that a job action occurs. (-wt)</tooltip>
<validator>
<regex expression=" *|([\d]+:)?[\d]+" />
<error-message>Job action time must be a valid time specification.
</error-message>
</validator>
</attribute>
<!-- MPI run command (mpirun/jsrun) options -->
<attribute name="MPI_OPTIONS" type="string">
<description>MPI Runtime Options:</description>
<tooltip>Specifies options to the MPI application invocation command.</tooltip>
</attribute>
<!-- Other options -->
<attribute name="LSF_OTHER_OPTIONS" type="string">
<description>Other Options:</description>
<tooltip>Specifies LSF options that do not appear elsewhere in list.</tooltip>
</attribute>
<attribute name="LSF_MPI_COMMAND" type="choice">
<description>MPI Command:</description>
<tooltip>Specifies an optional MPI command to run job.</tooltip>
<choice>,poe,mpiexec,mpirun,jsrun</choice>
</attribute>
<script insertEnvironmentAfter="0" deleteAfterSubmit="true">
<file-staging-location>${ptp_rm:working.directory#value}</file-staging-location>
<!-- If the substituted value of the statement following the '>' in the following <arg>
specifications evaluates to the value specified for isUndefinedIfMatches then the
statement is suppressed. Regular expressions are allowed in 'isUndefinedIfMatches'
The evaluation of both sides of the isUndefinedIfMatches is an exact match (by regex rules)
so spaces, tabs, etc are important.
In general, strings in the 'isUndefinedIfMatches' left hand side are surrounded by double
quotes. The exception is where the expression being matched contains double quotes.
In that case, to avoid issues with nested quoutes, single quotes are used to surround the
left hand side string.
Make sure that all of the <arg> specifications do not wrap to multiple lines since
the newline characters will also appear in the script file, which will result in an
incorrect script file. -->
<line>
<arg>#!/bin/sh</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -ar no">#BSUB -ar ${ptp_rm:LSF_JOB_RESIZABLE#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -B no">#BSUB -B ${ptp_rm:LSF_NOTIFY_DISPATCH#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -N no">#BSUB -N ${ptp_rm:LSF_NOTIFY_COMPLETION#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -r no">#BSUB -r ${ptp_rm:LSF_RERUN_SYS_FAILURE#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -rn no">#BSUB -rn ${ptp_rm:LSF_NORERUN_SYS_FAILURE#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -ul no">#BSUB -ul ${ptp_rm:LSF_PASS_USER_LIMITS#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -x no">#BSUB -x ${ptp_rm:LSF_EXCLUSIVE_EXECUTION#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -app">#BSUB -app ${ptp_rm:LSF_APP_PROFILE#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -b">#BSUB -b ${ptp_rm:LSF_DISPATCH_AT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -C">#BSUB -C ${ptp_rm:LSF_COREFILE_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -c">#BSUB -c ${ptp_rm:LSF_CPUTIME_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -D">#BSUB -D ${ptp_rm:LSF_DATA_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -e">#BSUB -e ${ptp_rm:LSF_STDERR_PATH_APPEND#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -eo">#BSUB -eo ${ptp_rm:LSF_STDERR_PATH_NEW#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -F">#BSUB -F ${ptp_rm:LSF_FILESIZE_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -G">#BSUB -G ${ptp_rm:LSF_USER_GROUP#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -g">#BSUB -g ${ptp_rm:LSF_JOB_GROUP#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -i">#BSUB -i ${ptp_rm:LSF_STDIN_PATH#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -is">#BSUB -is ${ptp_rm:LSF_STDIN_EDITABLE_PATH#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -J ""'>#BSUB -J "${ptp_rm:LSF_JOB_NAME#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -Jd ""'>#BSUB -Jd "${ptp_rm:LSF_JOB_DESCRIPTION#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -jsdl">#BSUB -jsdl ${ptp_rm:LSF_JSDL_FILE#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -jsdl_strict">#BSUB -jsdl_strict ${ptp_rm:LSF_JSDL_FILE_STRICT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -k ""'>#BSUB -k "${ptp_rm:LSF_CHECKPOINT#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -L">#BSUB -L ${ptp_rm:LSF_LOGIN_SHELL#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -Lp">#BSUB -Lp ${ptp_rm:LSF_LICENSE_SCHEDULER_PROJECT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -M">#BSUB -M ${ptp_rm:LSF_MEMORY_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -m ""'>#BSUB -m "${ptp_rm:LSF_HOST_NAMES#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -mig">#BSUB -mig ${ptp_rm:LSF_MIGRATION#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -n">#BSUB -n ${ptp_rm:LSF_NUM_PROCS#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -network ""'>#BSUB -network "${ptp_rm:LSF_NETWORK#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -o">#BSUB -o ${ptp_rm:LSF_STDOUT_PATH_APPEND#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -oo">#BSUB -oo ${ptp_rm:LSF_STDOUT_PATH_NEW#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -P">#BSUB -P ${ptp_rm:LSF_PROJECT_NAME#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -p">#BSUB -p ${ptp_rm:LSF_PROCESS_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -Q ""'>#BSUB -Q "${ptp_rm:LSF_REQUEUE_CODES#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -q ""'>#BSUB -q "${ptp_rm:LSF_QUEUE#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches='#BSUB -R ""'>#BSUB -R "${ptp_rm:LSF_RESOURCES#value}"</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -S">#BSUB -S ${ptp_rm:LSF_STACK_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -s">#BSUB -s ${ptp_rm:LSF_SIGNAL#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -sla">#BSUB -sla ${ptp_rm:LSF_SERVICE_CLASS#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -sp">#BSUB -sp ${ptp_rm:LSF_JOB_PRIORITY#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -T">#BSUB -T ${ptp_rm:LSF_THREAD_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -t">#BSUB -t ${ptp_rm:LSF_TERMINATION_DEADLINE#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -U">#BSUB -U ${ptp_rm:LSF_RESERVATION_ID#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -u">#BSUB -u ${ptp_rm:LSF_EMAIL_ID#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -v">#BSUB -v ${ptp_rm:LSF_SWAP_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -W">#BSUB -W ${ptp_rm:LSF_RUNTIME_LIMIT#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -We">#BSUB -We ${ptp_rm:LSF_RUNTIME_ESTIMATE#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -w ''">#BSUB -w '${ptp_rm:LSF_DEPENDENCIES#value}'</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -wa ''">#BSUB -wa '${ptp_rm:LSF_JOB_ACTION#value}'</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB -wt ''">#BSUB -wt '${ptp_rm:LSF_JOB_ACTION_TIME#value}'</arg>
</line>
<line>
<arg isUndefinedIfMatches="#BSUB ">#BSUB ${ptp_rm:LSF_OTHER_OPTIONS#value}</arg>
</line>
<line>
<arg>${ptp_rm:LSF_MPI_COMMAND#value}</arg>
<arg>${ptp_rm:MPI_OPTIONS#value}</arg>
<arg>${ptp_rm:executablePath#value}</arg>
<arg>${ptp_rm:progArgs#value}</arg>
</line>
</script>
<!-- Invocation command definition -->
<submit-batch name="LSF job submission" waitForId="true"
directory="${ptp_rm:working.directory#value}">
<arg>perl</arg>
<arg>${ptp_rm:ptpDirectory#value}/rms/LSF/run_lsf_app.pl</arg>
<arg>${ptp_rm:managed_file_for_script#value}</arg>
<stdout-parser delim="\n">
<target ref="@jobId">
<match>
<expression>Job &lt;([\d]+)&gt; is submitted.*</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="SUBMITTED" />
</set>
</match>
</target>
</stdout-parser>
<stderr-parser delim="\n">
<target ref="@jobId">
<match>
<expression>IBM Platform LSF.*</expression>
<set field="name">
<entry value="-1" />
</set>
<set field="value">
<entry value="SUBMITTED" />
</set>
</match>
</target>
</stderr-parser>
</submit-batch>
<submit-batch-debug name="Debug not supported">
<arg>echo</arg>
<arg>"Debug not supported"</arg>
<stdout-parser delim="\n">
<target>
<match>
<expression>.*</expression>
<throw message="Debug not supported"/>
</match>
</target>
</stdout-parser>
</submit-batch-debug>
<get-job-status name="get-job-status" ignoreExitStatus="true">
<arg>${ptp_rm:bindir#value}bjobs</arg>
<arg>${ptp_rm:@jobId#name}</arg>
<stdout-parser delim="\n">
<target ref="@jobId">
<!-- Match and discard heading line -->
<match>
<expression>^JOBID.*$</expression>
</match>
<match>
<expression>^[\s]*$</expression>
</match>
<!-- Match job status line like '219 wootton RUN short hpcvictim.p hpcvictim.p
sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+RUN[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="RUNNING" />
</set>
</match>
<!-- Match job status line like '219 wootton USUSP short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+USUSP[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="SUSPENDED" />
</set>
</match>
<!-- Match job status line like '219 wootton PEND short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+PEND[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="SUBMITTED" />
</set>
</match>
<!-- Match job status line like '219 wootton WAIT short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+WAIT[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="SUBMITTED" />
</set>
</match>
<!-- Match job status line like '219 wootton EXIT short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+EXIT[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="COMPLETED" />
</set>
</match>
<!-- Match job status line like '219 wootton DONE short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+DONE[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="COMPLETED" />
</set>
</match>
<!-- Match job status line like '219 wootton PSUSP short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+PSUSP[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="SUBMITTED" />
</set>
</match>
<!-- Match job status line like '219 wootton SSUSP short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+SSUSP[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="SUSPENDED" />
</set>
</match>
<!-- Match job status line like '219 wootton ZOMBI short hpcvictim.p
hpcvictim.p sleep 360 Jan 28 11:10' -->
<match>
<expression>^([\d]+)[\s]+[\S]+[\s]+ZOMBI[\s]+.*$</expression>
<set field="name">
<entry valueGroup="1" />
</set>
<set field="value">
<entry value="COMPLETED" />
</set>
</match>
</target>
</stdout-parser>
</get-job-status>
<terminate-job name="cancel">
<arg>bkill</arg>
<arg>${ptp_rm:@jobId#name}</arg>
</terminate-job>
<suspend-job name="suspend">
<arg>bstop</arg>
<arg>${ptp_rm:@jobId#name}</arg>
</suspend-job>
<resume-job name="resume">
<arg>bresume</arg>
<arg>${ptp_rm:@jobId#name}</arg>
</resume-job>
<launch-tab>
<!-- Job submission tab -->
<dynamic includeWidgetValuesFrom="Scheduling,Resources,Limits,I/O,Notifications">
<title>Job Submission</title>
<layout>
<grid-layout />
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="3" makeColumnsEqualWidth="false"
horizontalSpacing="10" verticalSpacing="15" />
</layout>
<!-- LSF_QUEUE: Job Queue -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" />
</layout-data>
<fixed-text>${ptp_rm:LSF_QUEUE#description}</fixed-text>
</widget>
<widget style="SWT.BORDER" attribute="LSF_QUEUE" type="text">
<layout-data>
<grid-data widthHint="300" horizontalSpan="1" />
</layout-data>
<tooltip>${ptp_rm:LSF_QUEUE#tooltip}</tooltip>
</widget>
<widget type="custom" typeId="queueQuery" style="SWT.LEFT"
attribute="LSF_QUEUE">
<layout-data>
<grid-data widthHint="100" horizontalAlign="SWT.BEGINNING" />
</layout-data>
<fixed-text>List</fixed-text>
</widget>
<!-- LSF_JOB_PRIORITY: Job priority -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JOB_PRIORITY#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_JOB_PRIORITY" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_JOB_PRIORITY#tooltip}</tooltip>
</widget>
<!-- LSF_JOB_NAME: Job name -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JOB_NAME#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_JOB_NAME" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_JOB_NAME#tooltip}</tooltip>
</widget>
<!-- LSF_JOB_DESCRIPTION: Job description -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JOB_DESCRIPTION#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_JOB_DESCRIPTION" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_JOB_DESCRIPTION#tooltip}</tooltip>
</widget>
<!-- LSF_PROJECT_NAME: Project name -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_PROJECT_NAME#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_PROJECT_NAME" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_PROJECT_NAME#tooltip}</tooltip>
</widget>
<!-- LSF_JOB_GROUP: Job group -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JOB_GROUP#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_JOB_GROUP" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_JOB_GROUP#tooltip}</tooltip>
</widget>
<!-- LSF_SERVICE_CLASS: Service class -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_SERVICE_CLASS#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_SERVICE_CLASS" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_SERVICE_CLASS#tooltip}</tooltip>
</widget>
<!--LSF_LOGIN_SHELL: Login shell -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_LOGIN_SHELL#description}</fixed-text>
</widget>
<browse textStyle="SWT.BORDER" attribute="LSF_LOGIN_SHELL"
title="Browse">
<text-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</text-layout-data>
<button-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</button-layout-data>
<tooltip>${ptp_rm:LSF_LOGIN_SHELL#tooltip}</tooltip>
</browse>
<!-- LSF_APP_PROFILE: Application profile -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" />
</layout-data>
<fixed-text>${ptp_rm:LSF_APP_PROFILE#description}</fixed-text>
</widget>
<widget style="SWT.BORDER" attribute="LSF_APP_PROFILE" type="text">
<layout-data>
<grid-data widthHint="300" horizontalSpan="1" />
</layout-data>
<tooltip>${ptp_rm:LSF_APP_PROFILE#tooltip}</tooltip>
</widget>
<widget type="custom" typeId="applicationQuery" style="SWT.LEFT"
attribute="LSF_APP_PROFILE">
<layout-data>
<grid-data widthHint="100" horizontalAlign="SWT.BEGINNING" />
</layout-data>
<fixed-text>List</fixed-text>
</widget>
<!--LSF_JSDL_FILE: Submit job with JSDL file and LSF extensions -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JSDL_FILE#description}</fixed-text>
</widget>
<browse textStyle="SWT.BORDER" attribute="LSF_JSDL_FILE"
title="Browse">
<text-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</text-layout-data>
<button-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</button-layout-data>
<tooltip>${ptp_rm:LSF_JSDL_FILE#tooltip}</tooltip>
</browse>
<!--LSF_JSDL_FILE_STRICT: Submit job with JSDL file and no LSF extensions -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JSDL_FILE_STRICT#description}</fixed-text>
</widget>
<browse textStyle="SWT.BORDER" attribute="LSF_JSDL_FILE_STRICT"
title="Browse">
<text-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</text-layout-data>
<button-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</button-layout-data>
<tooltip>${ptp_rm:LSF_JSDL_FILE_STRICT#tooltip}</tooltip>
</browse>
<!-- LSF_CHECKPOINT: Job checkpoint options -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_CHECKPOINT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_CHECKPOINT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_CHECKPOINT#tooltip}</tooltip>
</widget>
<!-- LSF_REQUEUE_CODES: Job requeue return codes -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_REQUEUE_CODES#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_REQUEUE_CODES" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_REQUEUE_CODES#tooltip}</tooltip>
</widget>
<!-- LSF_SIGNAL: Queue-level window closure signal -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_SIGNAL#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_SIGNAL" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_SIGNAL#tooltip}</tooltip>
</widget>
<!-- LSF_RERUN_SYS_FAILURE - Rerun job on system failure -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_RERUN_SYS_FAILURE#description}
</fixed-text>
</widget>
<widget type="checkbox" attribute="LSF_RERUN_SYS_FAILURE"
style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.FILL"
grabExcessHorizontal="false" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_RERUN_SYS_FAILURE#tooltip}</tooltip>
</widget>
<!-- LSF_NORERUN_SYS_FAILURE - do not rerun job on system failure -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_NORERUN_SYS_FAILURE#description}
</fixed-text>
</widget>
<widget type="checkbox" attribute="LSF_NORERUN_SYS_FAILURE"
style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.FILL"
grabExcessHorizontal="false" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_NORERUN_SYS_FAILURE#tooltip}</tooltip>
</widget>
<!-- LSF_MPI_COMMAND: MPI application invocation command -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_MPI_COMMAND#description}
</fixed-text>
</widget>
<widget type="combo" readOnly="false" attribute="LSF_MPI_COMMAND"
style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_MPI_COMMAND#tooltip}</tooltip>
</widget>
<!-- MPI_OPTIONS command line options for mpirun or jsrun -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:MPI_OPTIONS#description}
</fixed-text>
</widget>
<widget type="text" attribute="MPI_OPTIONS" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:MPI_OPTIONS#tooltip}</tooltip>
</widget>
<!-- LSF_OTHER_OPTIONS: Other LSF bsub options -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_OTHER_OPTIONS#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_OTHER_OPTIONS" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_OTHER_OPTIONS#tooltip}</tooltip>
</widget>
</composite>
</dynamic>
<!-- Scheduling tab -->
<dynamic includeWidgetValuesFrom="Job Submission,Resources,Limits,I/O,Notifications">
<title>Scheduling</title>
<layout>
<grid-layout />
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="3" makeColumnsEqualWidth="false"
horizontalSpacing="10" verticalSpacing="15" />
</layout>
<!-- LSF_USER_GROUP: User group -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_USER_GROUP#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_USER_GROUP" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_USER_GROUP#tooltip}</tooltip>
</widget>
<!-- LSF_DEPENDENCIES: Job dependencies -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_DEPENDENCIES#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_DEPENDENCIES" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_DEPENDENCIES#tooltip}</tooltip>
</widget>
<!-- LSF_DISPATCH_AT: Dispatch job at or after time -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_DISPATCH_AT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_DISPATCH_AT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_DISPATCH_AT#tooltip}</tooltip>
</widget>
<!-- LSF_TERMINATION_DEADLINE: Job termination deadline -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_TERMINATION_DEADLINE#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_TERMINATION_DEADLINE"
style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_TERMINATION_DEADLINE#tooltip}</tooltip>
</widget>
<!-- LSF_RESERVATION_ID: Reservation ID -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_RESERVATION_ID#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_RESERVATION_ID" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="1" />
</layout-data>
<tooltip>${ptp_rm:LSF_RESERVATION_ID#tooltip}</tooltip>
</widget>
<widget type="custom" typeId="reservationQuery" style="SWT.LEFT"
attribute="LSF_RESERVATION_ID">
<layout-data>
<grid-data widthHint="100" horizontalAlign="SWT.BEGINNING" />
</layout-data>
<fixed-text>List</fixed-text>
</widget>
<!-- LSF_MIGRATION: Checkpointable/rerunnable migration threshold -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_MIGRATION#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_MIGRATION" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_MIGRATION#tooltip}</tooltip>
</widget>
<!-- LSF_LICENSE_SCHEDULER_PROJECT: License scheduler project -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_LICENSE_SCHEDULER_PROJECT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_LICENSE_SCHEDULER_PROJECT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_LICENSE_SCHEDULER_PROJECT#tooltip}</tooltip>
</widget>
</composite>
</dynamic>
<!-- Resources tab -->
<dynamic includeWidgetValuesFrom="Job Submission,Scheduling,Limits,I/O,Notifications">
<title>Resources</title>
<layout>
<grid-layout />
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="3" makeColumnsEqualWidth="false"
horizontalSpacing="10" verticalSpacing="15" />
</layout>
<!-- LSF_HOST_NAMES: Hosts to run job -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_HOST_NAMES#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_HOST_NAMES" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_HOST_NAMES#tooltip}</tooltip>
</widget>
<!-- LSF_NUM_PROCS: Min/max processors to run -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_NUM_PROCS#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_NUM_PROCS" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_NUM_PROCS#tooltip}</tooltip>
</widget>
<!-- LSF_RESOURCES: Resource requirements -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_RESOURCES#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_RESOURCES" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_RESOURCES#tooltip}</tooltip>
</widget>
<!-- LSF_NETWORK: LSF -network option -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_NETWORK#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_NETWORK" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_NETWORK#tooltip}</tooltip>
</widget>
<!-- LSF_EXCLUSIVE_EXECUTION: Nodes in exclusive execution mode -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_EXCLUSIVE_EXECUTION#description}
</fixed-text>
</widget>
<widget type="checkbox" attribute="LSF_EXCLUSIVE_EXECUTION"
style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.FILL"
grabExcessHorizontal="false" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_EXCLUSIVE_EXECUTION#tooltip}</tooltip>
</widget>
<!-- LSF_JOB_RESIZABLE: Job is resizable -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JOB_RESIZABLE#description}
</fixed-text>
</widget>
<widget type="checkbox" attribute="LSF_JOB_RESIZABLE" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.FILL"
grabExcessHorizontal="false" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_JOB_RESIZABLE#tooltip}</tooltip>
</widget>
</composite>
</dynamic>
<!-- Limits tab -->
<dynamic includeWidgetValuesFrom="Job Submission,Scheduling,Resources,I/O,Notifications">
<title>Limits</title>
<layout>
<grid-layout />
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="3" makeColumnsEqualWidth="false"
horizontalSpacing="10" verticalSpacing="15" />
</layout>
<!-- LSF_PASS_USER_LIMITS: Pass user limits -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_PASS_USER_LIMITS#description}
</fixed-text>
</widget>
<widget type="checkbox" attribute="LSF_PASS_USER_LIMITS"
style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.FILL"
grabExcessHorizontal="false" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_PASS_USER_LIMITS#tooltip}</tooltip>
</widget>
<!-- LSF_COREFILE_LIMIT: Corefile limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_COREFILE_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_COREFILE_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_COREFILE_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_CPUTIME_LIMIT: CPU Time Limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_CPUTIME_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_CPUTIME_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_CPUTIME_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_DATA_LIMIT: Data limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_DATA_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_DATA_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_DATA_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_FILESIZE_LIMIT: Filesize limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_FILESIZE_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_FILESIZE_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_FILESIZE_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_MEMORY_LIMIT: Memory limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_MEMORY_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_MEMORY_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_MEMORY_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_PROCESS_LIMIT: Process limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_PROCESS_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_PROCESS_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_PROCESS_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_STACK_LIMIT: Stack limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_STACK_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_STACK_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_STACK_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_THREAD_LIMIT: Thread limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_THREAD_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_THREAD_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_THREAD_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_SWAP_LIMIT: Swap limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_SWAP_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_SWAP_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_SWAP_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_RUNTIME_LIMIT: Runtime limit -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_RUNTIME_LIMIT#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_RUNTIME_LIMIT" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_RUNTIME_LIMIT#tooltip}</tooltip>
</widget>
<!-- LSF_RUNTIME_ESTIMATE: Run time estimate -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_RUNTIME_ESTIMATE#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_RUNTIME_ESTIMATE" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_RUNTIME_ESTIMATE#tooltip}</tooltip>
</widget>
<!-- LSF_JOB_ACTION: Job action signal -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JOB_ACTION#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_JOB_ACTION" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_JOB_ACTION#tooltip}</tooltip>
</widget>
<!-- LSF_JOB_ACTION_TIME: Job action signal -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_JOB_ACTION_TIME#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_JOB_ACTION_TIME" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_JOB_ACTION_TIME#tooltip}</tooltip>
</widget>
</composite>
</dynamic>
<!-- I/O tab -->
<dynamic includeWidgetValuesFrom="Job Submission,Scheduling,Resources,Limits,Notifications">
<title>I/O</title>
<layout>
<grid-layout />
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="3" makeColumnsEqualWidth="false"
horizontalSpacing="10" verticalSpacing="15" />
</layout>
<!--LSF_STDIN_PATH: Stdin Path -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_STDIN_PATH#description}</fixed-text>
</widget>
<browse textStyle="SWT.BORDER" attribute="LSF_STDIN_PATH"
title="Browse">
<text-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</text-layout-data>
<button-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</button-layout-data>
<tooltip>${ptp_rm:LSF_STDIN_PATH#tooltip}</tooltip>
</browse>
<!--LSF_STDIN_EDITABLE_PATH: Stdin Editable Path -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_STDIN_EDITABLE_PATH#description}</fixed-text>
</widget>
<browse textStyle="SWT.BORDER" attribute="LSF_STDIN_EDITABLE_PATH"
title="Browse">
<text-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</text-layout-data>
<button-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</button-layout-data>
<tooltip>${ptp_rm:LSF_STDIN_EDITABLE_PATH#tooltip}</tooltip>
</browse>
<!-- LSF_STDOUT_PATH_NEW STDOUT new file path -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_STDOUT_PATH_NEW#description}</fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="LSF_STDOUT_PATH_NEW" readOnly="true">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="true"/>
</layout-data>
<tooltip>${ptp_rm:LSF_STDOUT_PATH_NEW#tooltip}</tooltip>
</widget>
<!-- LSF_STDOUT_PATH_APPEND STDOUT appendable path -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_STDOUT_PATH_APPEND#description}</fixed-text>
</widget>
<browse textStyle="SWT.BORDER" attribute="LSF_STDOUT_PATH_APPEND"
title="Browse">
<text-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</text-layout-data>
<button-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</button-layout-data>
<tooltip>${ptp_rm:LSF_STDOUT_PATH_APPEND#tooltip}</tooltip>
</browse>
<!-- LSF_STDERR_PATH_NEW STDERR new file path -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_STDERR_PATH_NEW#description}</fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="LSF_STDERR_PATH_NEW" readOnly="true">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="true"/>
</layout-data>
<tooltip>${ptp_rm:LSF_STDERR_PATH_NEW#tooltip}</tooltip>
</widget>
<!-- LSF_STDERR_PATH_APPEND STDERR appendable path -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data verticalAlign="SWT.CENTER" />
</layout-data>
<fixed-text>${ptp_rm:LSF_STDERR_PATH_APPEND#description}</fixed-text>
</widget>
<browse textStyle="SWT.BORDER" attribute="LSF_STDERR_PATH_APPEND"
title="Browse">
<text-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</text-layout-data>
<button-layout-data>
<grid-data widthHint="300" verticalAlign="SWT.CENTER" />
</button-layout-data>
<tooltip>${ptp_rm:LSF_STDERR_PATH_APPEND#tooltip}</tooltip>
</browse>
</composite>
</dynamic>
<!-- Notifications tab -->
<dynamic includeWidgetValuesFrom="Job Submission,Scheduling,Resources,Limits,I/O">
<title>Notifications</title>
<layout>
<grid-layout />
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="3" makeColumnsEqualWidth="false"
horizontalSpacing="10" verticalSpacing="15" />
</layout>
<!-- LSF_EMAIL_ID: Notification email address -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_EMAIL_ID#description}
</fixed-text>
</widget>
<widget type="text" attribute="LSF_EMAIL_ID" style="SWT.BORDER">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" widthHint="300" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_EMAIL_ID#tooltip}</tooltip>
</widget>
<!-- LSF_NOTIFY_DISPATCH: Notify on job dispatch -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_NOTIFY_DISPATCH#description}
</fixed-text>
</widget>
<widget type="checkbox" attribute="LSF_NOTIFY_DISPATCH"
style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.FILL"
grabExcessHorizontal="false" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_NOTIFY_DISPATCH#tooltip}</tooltip>
</widget>
<!-- LSF_NOTIFY_COMPLETION: Notify on job completion -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING"
grabExcessHorizontal="false" />
</layout-data>
<fixed-text>${ptp_rm:LSF_NOTIFY_COMPLETION#description}
</fixed-text>
<control-state>
<disable-if>
<and>
<rule attribute="LSF_STDOUT_PATH_APPEND" value="" />
<rule attribute="LSF_STDOUT_PATH_NEW" value="" />
</and>
</disable-if>
</control-state>
</widget>
<widget type="checkbox" attribute="LSF_NOTIFY_COMPLETION"
style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.FILL"
grabExcessHorizontal="false" horizontalSpan="2" />
</layout-data>
<tooltip>${ptp_rm:LSF_NOTIFY_COMPLETION#tooltip}</tooltip>
<control-state>
<disable-if>
<and>
<rule attribute="LSF_STDOUT_PATH_APPEND" value="" />
<rule attribute="LSF_STDOUT_PATH_NEW" value="" />
</and>
</disable-if>
</control-state>
</widget>
</composite>
</dynamic>
<!-- Advanced Tab -->
<dynamic>
<title>Advanced</title>
<layout>
<grid-layout />
</layout>
<composite group="true">
<layout>
<grid-layout numColumns="1" />
</layout>
<viewer name="LSFOptionsAdvanced" style="SWT.BORDER" sort="true"
initialAllChecked="true" type="table">
<layout-data>
<grid-data widthHint="600" heightHint="400"
horizontalSpan="1" />
</layout-data>
<!-- These are the 6 attribute fields mappable to columns. In a "table
viewer" the order of the columns is entirely arbitrary -->
<column-data name="Description" width="300" />
<column-data name="Value" width="300" />
<items>
<include>LSF_QUEUE</include>
<include>LSF_EXCLUSIVE_EXECUTION</include>
<include>LSF_NUM_PROCS</include>
<include>LSF_HOST_NAMES</include>
<include>LSF_DEPENDENCIES</include>
<include>LSF_RESOURCES</include>
<include>LSF_HOST_NAMES</include>
<include>LSF_RESERVATION_ID</include>
<include>LSF_APP_PROFILE</include>
<include>LSF_NETWORK</include>
<include>LSF_JOB_RESIZABLE</include>
<include>LSF_LICENSE_SCHEDULER_PROJECT</include>
<include>LSF_PROJECT_NAME</include>
<include>LSF_SERVICE_CLASS</include>
<include>LSF_JOB_NAME</include>
<include>LSF_JOB_DESCRIPTION</include>
<include>LSF_JOB_PRIORITY</include>
<include>LSF_USER_GROUP</include>
<include>LSF_JOB_GROUP</include>
<include>LSF_LOGIN_SHELL</include>
<include>LSF_JSDL_FILE</include>
<include>LSF_JSDL_FILE_STRICT</include>
<include>LSF_CHECKPOINT</include>
<include>LSF_SIGNAL</include>
<include>LSF_JOB_ACTION</include>
<include>LSF_JOB_ACTION_TIME</include>
<include>LSF_DISPATCH_AT</include>
<include>LSF_TERMINATION_DEADLINE</include>
<include>LSF_RUNTIME_ESTIMATE</include>
<include>LSF_MIGRATION</include>
<include>LSF_PASS_USER_LIMITS</include>
<include>LSF_COREFILE_LIMIT</include>
<include>LSF_CPUTIME_LIMIT</include>
<include>LSF_DATA_LIMIT</include>
<include>LSF_FILESIZE_LIMIT</include>
<include>LSF_MEMORY_LIMIT</include>
<include>LSF_PROCESS_LIMIT</include>
<include>LSF_STACK_LIMIT</include>
<include>LSF_THREAD_LIMIT</include>
<include>LSF_RUNTIME_LIMIT</include>
<include>LSF_SWAP_LIMIT</include>
<include>LSF_STDIN_PATH</include>
<include>LSF_STDIN_EDITABLE_PATH</include>
<include>LSF_STDOUT_PATH_NEW</include>
<include>LSF_STDOUT_PATH_APPEND</include>
<include>LSF_STDERR_PATH_NEW</include>
<include>LSF_STDERR_PATH_APPEND</include>
<include>LSF_RERUN_SYS_FAILURE</include>
<include>LSF_NORERUN_SYS_FAILURE</include>
<include>LSF_REQUEUE_CODES</include>
<include>LSF_NOTIFY_DISPATCH</include>
<include>LSF_NOTIFY_COMPLETION</include>
<include>LSF_EMAIL_ID</include>
<include>LSF_OTHER_OPTIONS</include>
<include>LSF_MPI_COMMAND</include>
</items>
</viewer>
</composite>
</dynamic>
</launch-tab>
</control-data>
<monitor-data schedulerType="LSF">
</monitor-data>
</resource-manager-builder>