冗余线程的分歧声明

时间:2013-10-15 05:29:14

标签: c cuda

我有一个400x900矩阵,意味着360,000个元素。块中的线程数是1024.块数(方形排列)是352,这意味着总共360,448个线程。因此,假设为每个元素分配了一个线程,448个线程将不执行任何操作。我已经读过有关分歧的分支和理解,但在这里我不明白分歧声明和代码应该是什么?

1 个答案:

答案 0 :(得分:1)

由于线程在CUDA中被分组为块,因此我们经常使用比实际数据大小更多的线程来并行执行工作。在这种情况下,我们需要一个分支来确保只有那些分配了数据的线程才能工作,而其他线程只是等待而什么都不做。

以下文章介绍了如何使用CUDA计算AXPY。您会发现尽管线程总数始终是256的倍数,但内核可以处理任意长度N的向量。代码if (i < n) {...}确保那些额外的线程无效。

https://developer.nvidia.com/content/easy-introduction-cuda-c-and-c