SkelCL
SkelCL is a high level multi GPU skeleton library developed at the university of Münster, Germany.
 All Classes Namespaces Files Functions Variables Typedefs Groups
Classes

This group of classes implements the Map skeleton, which describes calculations performed on one or more devices. It invokes a unary used-defined function on a container in a parallel fashion. More...

Classes

class  skelcl::Map< Tout(Tin)>
 This class implements the Map skeleton, which describes calculations performed on one or more devices. It invokes a unary used-defined function on a container in a parallel fashion. More...
 
class  skelcl::Map< void(Tin)>
 This version of the Map<Tout(Tin)> skeleton is used, when the user-defined function has the return type void, i.e. it doesn't produce a return value. More...
 
class  skelcl::Map< Tout(Index)>
 This version of the Map<Tout(Tin)> skeleton is executed over an one-dimensional index space defined by an IndexVector. More...
 
class  skelcl::Map< void(Index)>
 This version of the Map<Tout(Tin)> skeleton is executed over an one-dimensional index space defined by an IndexVector. This version is used when the user-function has return type void. More...
 
class  skelcl::Map< Tout(IndexPoint)>
 This version of the Map<Tout(Tin)> skeleton is executed over an two-dimensional index space defined by an IndexMatrix. More...
 
class  skelcl::Map< void(IndexPoint)>
 This version of the Map<Tout(Tin)> skeleton is executed over an two-dimensional index space defined by an IndexMatrix. This version is used when the user-function has return type void. More...
 

Detailed Description

This group of classes implements the Map skeleton, which describes calculations performed on one or more devices. It invokes a unary used-defined function on a container in a parallel fashion.

The most general version of the Map skeleton can be customized with a user-defined function taking an arbitrary types argument (no classes are currently possible) and produces an arbitrary typed output.

On creation the Map skeleton is customized with source code defining a unary function. An instance of this class is a function object, i.e. it can be called like a function. When this happens a container is passed as input to the Map skeleton which then invokes the provided function on every element of the container in a parallel fashion on one or more devices (depending of the distribution of the container).

More formally: When c is a container of length n with items c[0] .. c[n-1], and f is the provided unary function, the Map skeleton performs the calculation f(x[i]) for ever i in 0 .. n-1.

As all skeletons, the Map skeleton allows for passing additional arguments, i.e. arguments besides the input container, to the user defined function. The user-defined function has to written in such a way, that it expects more than just one argument (it is no unary function any more). Accordingly the number, types and order of arguments used when calling the map skeleton has to match the declaration of the user-defined function.