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
Public Member Functions | List of all members
skelcl::Map< void(IndexPoint)> Class Template Reference

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...

#include <Map.h>

Inheritance diagram for skelcl::Map< void(IndexPoint)>:

Public Member Functions

 Map (const Source &source, const std::string &funcName=std::string("func"))
 Constructor taking the source code used of the user-defined function as argument. More...
 
template<typename... Args>
void operator() (const Matrix< IndexPoint > &input, Args &&...args) const
 Executes the skeleton on the index space described by the input Matrix. More...
 

Detailed Description

template<>
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.

This is a more specialized version of the general Map<Tout(Tin)> skeleton. It can be customized with a user-defined function taking an IndexPoint (a pair of integer values). For this version the user-defined function must be void, i.e. return nothing.

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.

Definition at line 604 of file Map.h.

Constructor & Destructor Documentation

skelcl::Map< void(IndexPoint)>::Map ( const Source source,
const std::string &  funcName = std::string("func") 
)

Constructor taking the source code used of the user-defined function as argument.

Parameters
sourceThe source code of the user-defined function.
funcNameThe name of the user-defined function which should be invoked by the Map skeleton.

Definition at line 104 of file Map.cpp.

Member Function Documentation

template<typename... Args>
void skelcl::Map< void(IndexPoint)>::operator() ( const Matrix< IndexPoint > &  input,
Args &&...  args 
) const

Executes the skeleton on the index space described by the input Matrix.

Template Parameters
ArgsThe types of the arguments which are passed to the user-defined function in addition to the input Matrix.
Parameters
inputThe input Matrix describing an index space on which the user-defined function is invoked.
argsThe values of the arguments which are passed to the user-defined function in addition to the input Matrix.

The documentation for this class was generated from the following files: