SkelCL
SkelCL is a high level multi GPU skeleton library developed at the university of Münster, Germany.
|
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< IndexPoint > | IndexMatrix |
An simple to use alias for the Matrix<IndexPoint> class. | |
typedef const Vector< Index > | IndexVector |
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... | |
The namespace skelcl encapsulated the whole project. Every class provided by SkelCL is in this namespace.
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.
dID | The 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.
properties | Specifies 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. |
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.
pID | The ID of the OpenCL platform to be used. |
dID | The ID of the OpenCL device to be used. |
Definition at line 56 of file SkelCL.cpp.
Local skelcl::local | ( | size_t | sizeInBytes | ) |
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.
n | Number of OpenCL devices. |
Definition at line 66 of file SkelCL.cpp.
Out<ContainerType<T> > skelcl::out | ( | ContainerType< T > & | c | ) |
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.
pID | The 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.