这是this one的后续问题。
假设我有一个CUDA内核
template<unsigned ThreadsPerWarp>
___global__ foo(bar_t* a, const baz_t* b);
并且我在ThreadsPerWarp
为32的情况下实施了它的专业化(这避免了对Talonmies的有效批评&#39;回答我之前的问题。)
在这个函数(或从它调用的其他__device__
函数)的主体中 - 我应该更喜欢使用ThreadsPerWarp
的常量值吗?或者使用warpSize
更好吗?或者 - 根据它生成的PTX,编译器是否完全相同?
答案 0 :(得分:0)
不,不要使用warpSize
。
似乎除了潜在的未来证据(实际上有问题)之外,使用它没有任何优势。相反,你可以使用类似的东西:
enum : unsigned { warp_size = 32 };