是否有模板化类型泛化int4,uint4,float4等?

时间:2013-12-03 10:14:36

标签: c++ templates cuda vectorization

我正在编写一个CUDA内核,它应该在各种类型的矢量上运行。没问题 - 使用template<typename T>,对吧?但是如果我想处理矢量化标量类型的向量呢?

为了便于讨论,假设我希望能够处理所有int4uint4float4等。我可以使用某种Quad<T>类型吗?使用?作为CUDA或C ++标准库类型的一部分? “元组”也会这样做。

注意:

  • 虽然这个问题与CUDA有关,但它不是特定于CUDA的。
  • 我想要一个不需要我“实现”模板的解决方案(例如使用int4,uint4或我自己定义的其他结构。)

1 个答案:

答案 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;
}