Bolt
1.3
C++ template library with support for OpenCL
|
Defines macros to help the user create code with C++ semantics for OpenCL kernels. More...
#include <string>
Go to the source code of this file.
Classes | |
struct | TypeName< TypeNameType > |
struct | ClCode< Type > |
The definition of a type trait for the definition of a type, which could be arbitrarily complex. More... | |
Macros | |
#define | BOLT_CL_CLCODE_H |
#define | STRINGIFY_CODE2(...) #__VA_ARGS__ |
Macro that wraps around arbitrary text, and creates a string out of it This macro is helpful to write inline OpenCL programs, as it avoids wrapping every line of OpenCL line with "XXX" . | |
#define | STRINGIFY_CODE(...) STRINGIFY_CODE2( __VA_ARGS__ ) |
#define | BOLT_CODE_STRING(...) STRINGIFY_CODE( __VA_ARGS__ ); __VA_ARGS__; |
#define | BOLT_HOST_DEVICE_DEFINITION(...) "namespace bolt { namespace cl {\n" STRINGIFY_CODE( __VA_ARGS__ ) "\n } } \n" ; __VA_ARGS__; |
#define | BOLT_CREATE_TYPENAME(...) template<> struct TypeName< __VA_ARGS__ > { static std::string get( ) { return #__VA_ARGS__; } }; |
#define | BOLT_CREATE_CLCODE(Type, CODE_STRING) |
#define | BOLT_TEMPLATE_REGISTER_NEW_TYPE(CONTAINER, OLDTYPE, NEWTYPE) |
This macro specializes a template with a new type using the template definition of a previously defined type This is a convenience macro to specialize a template for a new type, using the generic template definition from a previosly defined type. | |
#define | BOLT_TEMPLATE_REGISTER_NEW_ITERATOR(CONTAINER, OLDTYPE, NEWTYPE) |
This macro specializes a template iterator with a new type using the template definition of a previously defined iterator type This is a convenience macro to specialize an iterator for a new type, using the generic template definition from a previosly defined iterator. | |
#define | BOLT_CREATE_DEFINE(DefineName, D,...) |
This macro defines a macro on the kernel code. | |
#define | BOLT_TEMPLATE_REGISTER_NEW_TRANSFORM_ITERATOR(FUNCTOR, DATATYPE) |
This macro creates a TypeName and the ClCode data structure for the transform iterator associated with FUNCTOR and DATA_TYPE. The use of this macro is necessary if transform iterator is used in the algorithm This macro creates a TypeName and the ClCode data structure for the transform iterator associated with FUNCTOR and DATA_TYPE. The use of this macro is necessary if transform iterator is used in the algorithm. | |
#define | BOLT_TEMPLATE_REGISTER_NEW_PERMUTATION_ITERATOR(ELEMENT_ITERATOR, INDEX_ITERATOR) |
A Permutation iterator is associated with an ELEMENT_ITERATOR and INDEX_ITERATOR. This Macro creates a ClCode and TypeName for the permutation iterator. A Permutation iterator is associated with an ELEMENT_ITERATOR and INDEX_ITERATOR. This Macro creates a ClCode and TypeName for the permutation iterator. Note that the data type associated with the element and index iterators must be declared within the BOLT_FUNCTOR macro. Only device vector iterators can be used with permutation iterators. Both the iterators has to be either std iterators or device vector iterators. Combination of the two is not supported. | |
#define | BOLT_FUNCTOR(T,...) |
#define | BOLT_TEMPLATE_FUNCTOR1(CONTAINER, TYPE1,...) |
#define | BOLT_TEMPLATE_FUNCTOR2(CONTAINER, TYPE1, TYPE2,...) |
#define | BOLT_TEMPLATE_FUNCTOR3(CONTAINER, TYPE1, TYPE2, TYPE3,...) |
#define | BOLT_TEMPLATE_FUNCTOR4(CONTAINER, TYPE1, TYPE2, TYPE3, TYPE4,...) |
#define | BOLT_CREATE_CODE_SNIPPET(Name,...) |
#define | BOLT_ADD_DEPENDENCY(Type, DependingType) ClCode<Type>::addDependency(ClCode<DependingType>::get()); |
Defines macros to help the user create code with C++ semantics for OpenCL kernels.