Size: 379
Comment:
|
Size: 4083
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 26: | Line 26: |
{{{ | ARC supports MPI jobs through the RunTimeEnvironments. There are two options for integrating them with mpi-start 1. Explicit mpi-start usage by users. 1. mpi-start as backend of parallel jobs |
Line 28: | Line 30: |
=== Explicit mpi-start === | |
Line 29: | Line 32: |
In this use case, the only requirements is that mpi-start is available at the nodes that will execute the job. There is no need for a RuntimeEnvironment and the user must set as executable for the jobs `mpi-start`. A minimal job description is shown below: | |
Line 30: | Line 34: |
Other sample | {{{#!highlight xml |
Line 32: | Line 36: |
<ActivityDescription xmlns="http://www.eu-emi.eu/es/2010/12/adl"> <ActivityIdentification> <Name>MPI Test job</Name> <Description>A test job showing the features of EMI-ES</Description> <Type>single</Type> </ActivityIdentification> <Application> <Executable> <Path>/usr/bin/mpi-start</Path> <Argument>-type</Argument> <Argument>openmpi</Argument> <Argument>-pre</Argument> <Argument>pre.sh</Argument> <Argument>cpi</Argument> </Executable> <Error>std.err</Error> <Output>std.out</Output> </Application> <Resources> <SlotRequirement> <NumberOfSlots>2</NumberOfSlots> <SlotsPerHost>2</SlotsPerHost> <ExclusiveExecution>true</ExclusiveExecution> </SlotRequirement> </Resources> |
|
Line 33: | Line 62: |
<DataStaging> <InputFile><Name>pre.sh</Name><Source><URI>pre.sh</URI></Source></InputFile> <InputFile><Name>cpi.c</Name><Source><URI>cpi.c</URI></Source> </InputFile> </DataStaging> </ActivityDescription> }}} Note that the `-t openmpi` option is passed explicitly to indicate to mpi-start which implementation to use. === mpi-start backend === In this case, a RuntimeEnvironment prepares the execution with mpi-start, hiding from the user the details of the implementation. Any additional arguments to mpi-start must be passed as environment variables. A sample runtime environment for running !OpenMPI applications would be: {{{#!highlight sh #!/bin/sh export I2G_MPI_TYPE=openmpi case "$1" in 0) joboption_args="mpi-start -- $joboption_args" ;; 1) ;; 2) ;; *) return 1 ;; esac }}} The job description would look as follows: {{{#!highlight xml <ActivityDescription xmlns="http://www.eu-emi.eu/es/2010/12/adl"> <ActivityIdentification> <Name>test job</Name> <Description>A test job showing the features of EMI-ES</Description> <Type>single</Type> <Annotation>test</Annotation> </ActivityIdentification> <Application> <Executable><Path>cpi</Path></Executable> <Error>std.err</Error> <Output>std.out</Output> <Environment><Name>I2G_MPI_PRE_RUN_HOOK</Name><Value>pre.sh</Value></Environment> </Application> <Resources> <SlotRequirement> <NumberOfSlots>2</NumberOfSlots> <SlotsPerHost>2</SlotsPerHost> <ExclusiveExecution>true</ExclusiveExecution> </SlotRequirement> <RuntimeEnvironment><Name>OPENMPI</Name></RuntimeEnvironment> </Resources> <DataStaging> <InputFile> <Name>pre.sh</Name> <Source><URI>pre.sh</URI></Source> </InputFile> <InputFile> <Name>cpi.c</Name> <Source><URI>cpi.c</URI></Source> </InputFile> <!-- Fake input file --> <InputFile> <Name>cpi</Name> <Source><URI>cpi</URI></Source> </InputFile> </DataStaging> </ActivityDescription> |
|
Line 36: | Line 130: |
Cream does not support the !ParallelEnvironment. Jobs may be sumbmitted using `/usr/bin/mpi-start` as executable. See the previous ARC example for details. |
MPI-Start as EMI-ES ParallelEnvironment backend
Contents
1. UNICORE
The UNICORE EMI-ES ParallelEnvironment is a complete implementation of the specification. The configuration is done via xml files.
A sample file is:
sample!!
2. ARC
ARC supports MPI jobs through the RunTimeEnvironments. There are two options for integrating them with mpi-start
- Explicit mpi-start usage by users.
- mpi-start as backend of parallel jobs
2.1. Explicit mpi-start
In this use case, the only requirements is that mpi-start is available at the nodes that will execute the job. There is no need for a RuntimeEnvironment and the user must set as executable for the jobs mpi-start. A minimal job description is shown below:
1 <ActivityDescription xmlns="http://www.eu-emi.eu/es/2010/12/adl">
2 <ActivityIdentification>
3 <Name>MPI Test job</Name>
4 <Description>A test job showing the features of EMI-ES</Description>
5 <Type>single</Type>
6 </ActivityIdentification>
7 <Application>
8 <Executable>
9 <Path>/usr/bin/mpi-start</Path>
10 <Argument>-type</Argument>
11 <Argument>openmpi</Argument>
12 <Argument>-pre</Argument>
13 <Argument>pre.sh</Argument>
14 <Argument>cpi</Argument>
15 </Executable>
16 <Error>std.err</Error>
17 <Output>std.out</Output>
18 </Application>
19 <Resources>
20 <SlotRequirement>
21 <NumberOfSlots>2</NumberOfSlots>
22 <SlotsPerHost>2</SlotsPerHost>
23 <ExclusiveExecution>true</ExclusiveExecution>
24 </SlotRequirement>
25 </Resources>
26
27 <DataStaging>
28 <InputFile><Name>pre.sh</Name><Source><URI>pre.sh</URI></Source></InputFile>
29 <InputFile><Name>cpi.c</Name><Source><URI>cpi.c</URI></Source>
30 </InputFile>
31 </DataStaging>
32 </ActivityDescription>
Note that the -t openmpi option is passed explicitly to indicate to mpi-start which implementation to use.
2.2. mpi-start backend
In this case, a RuntimeEnvironment prepares the execution with mpi-start, hiding from the user the details of the implementation. Any additional arguments to mpi-start must be passed as environment variables.
A sample runtime environment for running !OpenMPI applications would be:
The job description would look as follows:
1 <ActivityDescription xmlns="http://www.eu-emi.eu/es/2010/12/adl">
2 <ActivityIdentification>
3 <Name>test job</Name>
4 <Description>A test job showing the features of EMI-ES</Description>
5 <Type>single</Type>
6 <Annotation>test</Annotation>
7 </ActivityIdentification>
8 <Application>
9 <Executable><Path>cpi</Path></Executable>
10 <Error>std.err</Error>
11 <Output>std.out</Output>
12 <Environment><Name>I2G_MPI_PRE_RUN_HOOK</Name><Value>pre.sh</Value></Environment>
13 </Application>
14 <Resources>
15 <SlotRequirement>
16 <NumberOfSlots>2</NumberOfSlots>
17 <SlotsPerHost>2</SlotsPerHost>
18 <ExclusiveExecution>true</ExclusiveExecution>
19 </SlotRequirement>
20 <RuntimeEnvironment><Name>OPENMPI</Name></RuntimeEnvironment>
21 </Resources>
22 <DataStaging>
23 <InputFile> <Name>pre.sh</Name> <Source><URI>pre.sh</URI></Source> </InputFile>
24 <InputFile> <Name>cpi.c</Name> <Source><URI>cpi.c</URI></Source> </InputFile>
25 <!-- Fake input file -->
26 <InputFile> <Name>cpi</Name> <Source><URI>cpi</URI></Source> </InputFile>
27 </DataStaging>
28 </ActivityDescription>
3. CREAM
Cream does not support the ParallelEnvironment. Jobs may be sumbmitted using /usr/bin/mpi-start as executable. See the previous ARC example for details.