具有泛型数据类型的OpenCL内核
在为内核编写代码时,是否可以指定一个通用数据类型,以便不必为每个使用的数据类型复制内核?目前,我正在使用预处理器宏定义具有各种数据类型的整个函数:具有泛型数据类型的OpenCL内核,opencl,Opencl,在为内核编写代码时,是否可以指定一个通用数据类型,以便不必为每个使用的数据类型复制内核?目前,我正在使用预处理器宏定义具有各种数据类型的整个函数: #define REDUCTION(type) __kernel void reduce_##type##_f(__global __read_only type* a) \ { \ // do something } \ REDUCTION(float) REDUCTION(float2) 然而,这不是很舒服。是否有一些类型说明符,如代码> G
#define REDUCTION(type) __kernel void reduce_##type##_f(__global __read_only type* a) \
{ \
// do something
} \
REDUCTION(float)
REDUCTION(float2)
然而,这不是很舒服。是否有一些类型说明符,如代码> GeType < /Cord>?< /P> < P>,您应该能够从OpenCL 2.1开始,这允许您在内核代码中使用C++和模板。 有了这些,你可以简单地写下:
template <class T>
void reduce_f(__global __read_only T* a) {
// do something
}
你的宏不应该在行尾有反斜杠吗?
#define REDUCTION(type) __kernel void reduce_##type##_f(__global __read_only type* a) \
{ \
return reduce_t(a); \
}
REDUCTION(float)