pymor.parallel.dummy

Module Contents

class pymor.parallel.dummy.DummyPool[source]

Bases: pymor.parallel.interface.WorkerPool

Dummy WorkerPool.

Methods

apply

Apply function in parallel on each worker.

apply_only

Apply function on a single worker.

map

Parallel version of the builtin map function.

push

Push a copy of obj to all workers of the pool.

scatter_array

Distribute VectorArray evenly among the workers.

scatter_list

Distribute list of objects evenly among the workers.

apply(function, *args, **kwargs)[source]

Apply function in parallel on each worker.

This calls function on each worker in parallel, passing args as positional and kwargs as keyword arguments. Keyword arguments which are RemoteObjects are automatically mapped to the respective object on the worker. Moreover, keyword arguments which are immutable objects that have already been pushed to the workers will not be transmitted again. (Immutable objects which have not been pushed before will be transmitted and the remote copy will be destroyed after function execution.)

Parameters:
  • function – The function to execute on each worker.

  • args – The positional arguments for function.

  • kwargs – The keyword arguments for function.

Returns:

  • List of return values of the function executions, ordered by

  • worker number (from 0 to len(pool) - 1).

apply_only(function, worker, *args, **kwargs)[source]

Apply function on a single worker.

This calls function on on the worker with number worker, passing args as positional and kwargs as keyword arguments. Keyword arguments which are RemoteObjects are automatically mapped to the respective object on the worker. Moreover, keyword arguments which are immutable objects that have already been pushed to the workers will not be transmitted again. (Immutable objects which have not been pushed before will be transmitted and the remote copy will be destroyed after function execution.)

Parameters:
  • function – The function to execute.

  • worker – The worker on which to execute the function. (Number between 0 and len(pool) - 1.)

  • args – The positional arguments for function.

  • kwargs – The keyword arguments for function.

Returns:

Return value of the function execution.

map(function, *args, **kwargs)[source]

Parallel version of the builtin map function.

Each positional argument (after function) must be a sequence of same length n. map calls function in parallel on each of these n positional argument combinations, always passing kwargs as keyword arguments. Keyword arguments which are RemoteObjects are automatically mapped to the respective object on the worker. Moreover, keyword arguments which are immutable objects that have already been pushed to the workers will not be transmitted again. (Immutable objects which have not been pushed before will be transmitted and the remote copy will be destroyed after function execution.)

Parameters:
  • function – The function to execute on each worker.

  • args – The sequences of positional arguments for function.

  • kwargs – The keyword arguments for function.

Returns:

  • List of return values of the function executions, ordered by

  • the sequence of positional arguments.

push(obj)[source]

Push a copy of obj to all workers of the pool.

A RemoteObject is returned as a handle to the pushed object. This object can be used as a keyword argument to apply, apply_only, map and will then be transparently mapped to the respective copy of the pushed object on the worker.

Immutable objects will be pushed only once. If the same immutable object is pushed a second time, the returned RemoteObject will refer to the already transferred copy. It is therefore safe to use push to ensure that a given immutable object is available on the worker. No unnecessary copies will be created.

Parameters:

obj – The object to push to all workers.

Returns:

A |RemoteObject| referring to the pushed data.

scatter_array(U, copy=True)[source]

Distribute VectorArray evenly among the workers.

On each worker a VectorArray is created holding an (up to rounding) equal amount of vectors of U. The returned RemoteObject therefore refers to different data on each of the workers.

Parameters:
  • U – The VectorArray to distribute.

  • copy – If False, U will be emptied during distribution of the vectors.

Returns:

A |RemoteObject| referring to the scattered data.

scatter_list(l)[source]

Distribute list of objects evenly among the workers.

On each worker a list is created holding an (up to rounding) equal amount of objects of l. The returned RemoteObject therefore refers to different data on each of the workers.

Parameters:

l – The list (sequence) of objects to distribute.

Returns:

A |RemoteObject| referring to the scattered data.

class pymor.parallel.dummy.DummyRemoteObject(obj)[source]

Bases: pymor.parallel.interface.RemoteObject

Dummy RemoteObject.

pymor.parallel.dummy.dummy_pool[source]