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
Namespaces | Classes | Typedefs | Functions
skelcl Namespace Reference

The namespace skelcl encapsulated the whole project. Every class provided by SkelCL is in this namespace. More...

Namespaces

 distribution
 This namespace groups factory functions to construct the different distributions available in SkelCL.
 

Classes

class  AllPairs< Tout(Tleft, Tright)>
 An instance of the AllPairs class describes a calculation of pairs of row vectors and column vectors with a user defined function which can be performed on a device. More...
 
class  Index
 This class defines an Index, i.e. an unsigned integer representing a value in a one-dimensional index space. More...
 
class  IndexPoint
 This class defines an two-dimensional IndexPoint, i.e. a pair of unsigned integers representing a value in a two-dimensional index space. More...
 
class  Local
 This class represents OpenCL local memory in SkelCL. More...
 
class  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  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  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  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  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...
 
class  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  MapOverlap< Tout(Tin)>
 This class implements the MapOverlap skeleton, which describes calculations performed on one or more devices. It invokes a unary user-defined function on a container in a parallel fashion. Unlike the Map skeleton the user-defined function can access more than just a single element of the container. More...
 
class  Matrix
 The Matrix class is a two dimensional container which makes its data accessible on the host as well as on the devices. More...
 
class  Matrix< IndexPoint >
 The IndexMatrix (a.k.a. Matrix<IndexPoint>) class is a special implementation of a Matrix with Elements of type IndexPoint. More...
 
class  MatrixSize
 This class defines a two dimensional size for a Matrix. More...
 
class  Out< ContainerType< T > >
 This class can be used to wrap an container to be passed as argument to a skeleton. More...
 
class  Reduce< T(T)>
 An instance of the Reduce class describes a reduction calculation (a.k.a. accumulate) customized by a given binary user-defined function. More...
 
class  Scan< T(T)>
 An instance of the Reduce class describes a scan (a.k.a. prefix sum) calculation customized by a given binary user-defined function. More...
 
class  Source
 This class is a unified wrapper for defining source code in SkelCL. More...
 
class  Vector
 The Vector class is a one dimensional container which makes its data accessible on the host as well as on the devices. More...
 
class  Vector< Index >
 The IndexVector (a.k.a. Vector<Index>) class is a special implementation of a Vector with Elements of type Index. More...
 
class  Zip< Tout(Tleft, Tright)>
 An instance of the Zip class describes a calculation which can be performed on one or more devices. More...
 
class  Zip< void(Tleft, Tright)>
 An instance of the Zip class describes a calculation which can be performed on one or more devices. More...
 

Typedefs

typedef const Matrix< IndexPointIndexMatrix
 An simple to use alias for the Matrix<IndexPoint> class.
 
typedef const Vector< IndexIndexVector
 An simple to use alias for the Vector<Index> class.
 
typedef detail::Device::Type device_type
 Public name for a type representing different types of device. E.g. CPU or GPU.
 

Functions

SKELCL_DLL Local local (size_t sizeInBytes)
 Helper function to easily create an Local object with a given size. More...
 
template<template< typename > class ContainerType, typename T >
Out< ContainerType< T > > out (ContainerType< T > &c)
 Helper function to create a Out wrapper object. More...
 
SKELCL_DLL detail::DeviceProperties allDevices ()
 Creates a detail::DeviceProperties object representing all devices in the system. This object should be used as parameter of the init(detail::DeviceProperties) function.
 
SKELCL_DLL detail::DeviceProperties nDevices (size_t n)
 Creates a detail::DeviceProperties object representing n devices. This object should be used as parameter of the init(detail::DeviceProperties) function. More...
 
SKELCL_DLL detail::PlatformID platform (size_t pID)
 Creates an OpenCL platform ID to be used as parameter of the init(detail::PlatformID, detail::DeviceID) function. More...
 
SKELCL_DLL detail::DeviceID device (size_t dID)
 Creates an OpenCL device ID to be used as parameter of the init(detail::PlatformID, detail::DeviceID) function. More...
 
SKELCL_DLL void init (detail::DeviceProperties properties=allDevices())
 Initializes the SkelCL library. This function (or another init function) has to be called prior to every other function in the library. More...
 
SKELCL_DLL void init (detail::PlatformID pID, detail::DeviceID dID)
 Initializes the SkelCL library. This function (or another init function) has to be called prior to every other function in the library. More...
 
SKELCL_DLL void terminate ()
 Frees all resources allocated internally by SkelCL. More...
 

Detailed Description

The namespace skelcl encapsulated the whole project. Every class provided by SkelCL is in this namespace.

IndexMatrix.h

Author
Michel Steuwer miche.nosp@m.l.st.nosp@m.euwer.nosp@m.@uni.nosp@m.-muen.nosp@m.ster.nosp@m..de

IndexVector.h

Author
Michel Steuwer miche.nosp@m.l.st.nosp@m.euwer.nosp@m.@uni.nosp@m.-muen.nosp@m.ster.nosp@m..de

DeviceID.cpp

Author
Michel Steuwer miche.nosp@m.l.st.nosp@m.euwer.nosp@m.@uni.nosp@m.-muen.nosp@m.ster.nosp@m..de

IndexMatrix.cpp

Author
Michel Steuwer miche.nosp@m.l.st.nosp@m.euwer.nosp@m.@uni.nosp@m.-muen.nosp@m.ster.nosp@m..de

PlatformID.cpp

Author
Michel Steuwer miche.nosp@m.l.st.nosp@m.euwer.nosp@m.@uni.nosp@m.-muen.nosp@m.ster.nosp@m..de

Function Documentation

detail::DeviceID skelcl::device ( size_t  dID)

Creates an OpenCL device ID to be used as parameter of the init(detail::PlatformID, detail::DeviceID) function.

Parameters
dIDThe ID of the OpenCL device.

Definition at line 76 of file SkelCL.cpp.

void skelcl::init ( detail::DeviceProperties  properties = allDevices())

Initializes the SkelCL library. This function (or another init function) has to be called prior to every other function in the library.

Parameters
propertiesSpecifies properties about the devices to use by default all devices are selected by calling the allDevices() function. To select a specific number of devices call nDevices(size_t). Additional properties can be specified using member functions of the detail::DeviceProperties class.
See also
DeviceSelectionTests.cpp

Definition at line 51 of file SkelCL.cpp.

void skelcl::init ( detail::PlatformID  pID,
detail::DeviceID  dID 
)

Initializes the SkelCL library. This function (or another init function) has to be called prior to every other function in the library.

This function should only be used if one specific OpenCL device should be used by SkelCL.

Parameters
pIDThe ID of the OpenCL platform to be used.
dIDThe ID of the OpenCL device to be used.

Definition at line 56 of file SkelCL.cpp.

Local skelcl::local ( size_t  sizeInBytes)

Helper function to easily create an Local object with a given size.

Parameters
sizeInBytesThe amount of local memory to be used in bytes.
Returns
A newly created Local object representing the given amount of local memory.

Definition at line 54 of file Local.cpp.

detail::DeviceProperties skelcl::nDevices ( size_t  n)

Creates a detail::DeviceProperties object representing n devices. This object should be used as parameter of the init(detail::DeviceProperties) function.

Parameters
nNumber of OpenCL devices.

Definition at line 66 of file SkelCL.cpp.

template<template< typename > class ContainerType, typename T >
Out<ContainerType<T> > skelcl::out ( ContainerType< T > &  c)

Helper function to create a Out wrapper object.

Parameters
cContainer to be wrapped

Definition at line 94 of file Out.h.

detail::PlatformID skelcl::platform ( size_t  pID)

Creates an OpenCL platform ID to be used as parameter of the init(detail::PlatformID, detail::DeviceID) function.

Parameters
pIDThe ID of the OpenCL platform.

Definition at line 71 of file SkelCL.cpp.

void skelcl::terminate ( )

Frees all resources allocated internally by SkelCL.

This function normally does not have to be called explicitly. If for some reason the number of devices used by SkelCL should be changed after a first initialization, this function has to be called prior to calling one of the init() functions again.

Definition at line 81 of file SkelCL.cpp.