CUDA中的静态const int,用于模板化代码

时间:2015-07-03 13:20:16

标签: c++ c++11 static cuda

我有以下代码段:

class Mesh{
  public:
    static const int DIM = 3;
    // several more static constants here
}

template <class M>
Coords{
  public:
    int c[M::DIM];
    // some more members using static constants of M here
}

我会用以下方法实例化一些协调:

Coords<Mesh> coords;

现在这基本上对我有用。

根据文档,CUDA 6.5根本不支持static成员(编程指南,E.2.6.1。数据成员,没有可用的链接)。 CUDA 7.0增加了对static const成员(http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#const-variables)的支持。

只要我使用CUDA 6.5,如何替换 static const int#define可能不是一个好的选择,因为模板化将不再按预期工作。

1 个答案:

答案 0 :(得分:3)

尝试使用枚举?

class Mesh{
  public:
    enum { DIM = 3 };
    // several more constants declared as enums here
}

template <class M>
Coords{
  public:
    int c[M::DIM];
    // some more members using enums of M here
}