UNICORE Implementation of the EMI-ES ParallelEnvironment

This Wiki page explains how UNICORE's implementation of the EMI-ES parallel environment works, how it is configured and how it is used.

This is part of the EMI MPI work, for details see the EMI-MPI page

The basic principle is that UNICORE maps the EMI-ES ParallelEnvironment to an execution environment of the SAME NAME, i.e. for example

    <ParallelEnvironment>
      <Type>OpenMPI</Type>
      ...
    </ParallelEnvironment>

is mapped to an execution environment "OpenMPI".

Configuring execution environments

For each supported ParallelEnvironment the site administrator needs to configure the appropriate execution environment in the UNICORE/X IDB file. Usually this file is named "/etc/unicore/unicorex/simpleidb", if not otherwise configured.

The IDB might contain an entry such as the following (this is a minimalistic version!)

<jsdl-u:ExecutionEnvironment xmlns:jsdl-u="http://www.unicore.eu/unicore/jsdl-extensions">
  <jsdl-u:Name>OpenMPI</jsdl-u:Name>
    <jsdl-u:Description>Run an OpenMPI application</jsdl-u:Description>
    <jsdl-u:ExecutableName>mpirun</jsdl-u:ExecutableName>
    <jsdl-u:Argument>
      <jsdl-u:Name>ProcessesPerHost</jsdl-u:Name>
      <jsdl-u:IncarnatedValue>-npernode </jsdl-u:IncarnatedValue>
      <jsdl-u:ArgumentMetadata>
        <jsdl-u:Description>The number of processes per node</jsdl-u:Description>
        <jsdl-u:Type>int</jsdl-u:Type>
      </jsdl-u:ArgumentMetadata>
    </jsdl-u:Argument>
</jsdl-u:ExecutionEnvironment>

Parameter mapping

The ADL parameters ProcessesPerHost and ThreadsPerProcess will be mapped to the corresponding arguments of the execution environment, if they exist.

For example, the above OpenMPI example has an argument ProcessesPerHost which will be filled with the appropriate value given in the job description.

Additionally, the submit script will contain two environment variable definitions: UC_PROCESSES_PER_HOST and UC_THREADS_PER_PROCESS which can be used in the definition of the environment, if necessary.

Example: 'Hello world' with precompiled binary

The following ADL

 
<ActivityDescription xmlns="http://www.eu-emi.eu/es/2010/12/adl">
  <Application>
    <Executable>
      <Path>~/mpi/hello</Path>
    </Executable>
    <Output>stdout</Output>
  </Application>
  <Resources>
    <ParallelEnvironment>
      <Type>OpenMPI</Type>
      <ProcessesPerHost>2</ProcessesPerHost>
      <ThreadsPerProcess>10</ThreadsPerProcess>
    </ParallelEnvironment>
    <SlotRequirement>
      <NumberOfSlots>1</NumberOfSlots>
      <SlotsPerHost>1</SlotsPerHost>
    </SlotRequirement>
  </Resources>
</ActivityDescription>

will result in the following script to be submitted to the batch system (slightly abridged for better readability)


#!/bin/sh 

# (boilerplate stuff deleted!)

UC_PROCESSES_PER_HOST="2"; export UC_PROCESSES_PER_HOST

UC_THREADS_PER_PROCESS="10"; export UC_THREADS_PER_PROCESS

UC_EXECUTABLE='~/mpi/hello'; export UC_EXECUTABLE

UC_USERDN='CN=Bernd Schuller,OU=VSGC,OU=Forschungszentrum Juelich GmbH,O=GridGermany,C=DE'; export UC_USERDN
PATH=$PATH:. ; export PATH
cd /home15/unicore/FILESPACE/2161360e-5469-47b7-8ab8-148a57411a04/

chmod u+x ~/mpi/hello 2> /dev/null 

mpirun -npernode 2 ~/mpi/hello 

echo $? > /home15/unicore/FILESPACE/2161360e-5469-47b7-8ab8-148a57411a04//UNICORE_SCRIPT_EXIT_CODE

Edit | Attach | Watch | Print version | History: r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r1 - 2012-12-12 - BerndThomasSchullerExCern
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    EMI All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback