pilot.api.compute.api.ComputeUnitDescription

Package pilot :: Package api :: Package compute :: Module api :: Class ComputeUnitDescription |

# Class ComputeUnitDescription

source code

ComputeUnitDescription (CUD).

The ComputeUnitDescription is a task description based on SAGA Job Description.

It offers the application to describe a ComputeUnit in an abstract way that is dealt with by the Pilot-Manager. It can contain references to depended DataUnits. ComputeUnitDescription are submitted to the ComputeDataService.

Format:

       compute_unit_description =
           {
               'executable': <path to executable>,
               'arguments': <arguments>,           # Arguments
               'environment': <environment>,          # environment variables

               # Working directory
               # Recommendation: Do not set working directory!
               #     if None working directory is sandbox directory of this CU (automatically
               #     created by BigJob)
               'working_directory': <working directory>,

               # I/O
               'input': <stdin>,
               'error': <sterr>,
               'output': <stdout>,

               # Parallelism

               # Defines how many CPU cores are reserved for the application process.
               'number_of_processes': <Total number of processes to start>,

               # Defines how the application process is launched:
               #     "single": ./a.out
               #     "mpi": mpirun -np <number_of_processes> ./a.out
               # In the MPI case BJ generates an appropriate machinefile
               'spmd_variation':      <Type and startup mechanism. Supported Values: [single, mpi]>,

               # Data - input/output data flow for ComputeUnit
               'input_data': [<data unit url>, ... ],
               'output_data': [<data unit url>, ... ]
           }

       Example::
               compute_unit_description = {
                       "executable": "/bin/cat",
                       "arguments": ["test.txt"],
                       "number_of_processes": 1,
                       "output": "stdout.txt",
                       "error": "stderr.txt",
                       "input_data" : [data_unit.get_url()], # this stages the content of the data unit to the working directory of the compute unit
                       "affinity_datacenter_label": "eu-de-south",
                       "affinity_machine_label": "mymachine-1"
                   }

ComputeUnitDescription objects are loosely typed. A dictionary containing the respective keys can be passed instead to the ComputeDataService.

Instance Methods
    new empty dictionary
__init__(self) x.__init__(...) initializes x; see help(type(x)) for signature | source code
__setattr__(self, attr, value) x.__setattr__('name', value) <==> x.name = value | source code
__getattr__(self, attr) | source code
Inherited from `dict`: `__cmp__`, `__contains__`, `__delitem__`, `__eq__`, `__ge__`, `__getattribute__`, `__getitem__`, `__gt__`, `__iter__`, `__le__`, `__len__`, `__lt__`, `__ne__`, `__new__`, `__repr__`, `__setitem__`, `__sizeof__`, `clear`, `copy`, `fromkeys`, `get`, `has_key`, `items`, `iteritems`, `iterkeys`, `itervalues`, `keys`, `pop`, `popitem`, `setdefault`, `update`, `values`, `viewitems`, `viewkeys`, `viewvalues` Inherited from `object`: `__delattr__`, `__format__`, `__reduce__`, `__reduce_ex__`, `__str__`, `__subclasshook__`

Class Variables
Inherited from `dict`: `__hash__`

Properties
Inherited from `object`: `__class__`

Method Details

### __init__(self) (Constructor) | source code
x.__init__(...) initializes x; see help(type(x)) for signature Returns:
    new empty dictionary
Overrides: object.__init__ (inherited documentation)

### __setattr__(self, attr, value) | source code
x.__setattr__('name', value) <==> x.name = value Overrides: object.__setattr__ (inherited documentation)