我正在编写一个CUDA内核,它应该在各种类型的矢量上运行。没问题 - 使用template<typename T>
,对吧?但是如果我想处理矢量化标量类型的向量呢?
为了便于讨论,假设我希望能够处理所有int4
,uint4
,float4
等。我可以使用某种Quad<T>
类型吗?使用?作为CUDA或C ++标准库类型的一部分? “元组”也会这样做。
注意:
答案 0 :(得分:1)
您可以使用类型特征。例如
#include <cuda.h>
template<typename T> struct vectorized_type;
template<> struct vectorized_type<int> { typedef int4 vect_type; };
int main () {
vectorized_type<int>::vect_type test;
return 0;
}