在CUDA中,如何管理GPU核心内部的顺序代码?
如果我在 for 循环中有内核,它是以顺序模式管理还是存在逻辑并行?
答案 0 :(得分:2)
顺序代码仍将按顺序计算,唯一的变化是所有线程都会计算此代码并行。
让我们假设下面是简单的内核(在这里写下的corde,未经过测试):
__global__ void kernel(int *array, int N)
{
if (threadIdx.x < N)
{
// complete for loop is computed parallel for different threads
for (int i=0; i<1000; i++)
{
// every single thread perfomes this statement 1000 times
array[threadIdx.x] += i;
}
}
}
对于同一warp中的不同线程,将完全并行计算完整的for循环。 但是每个线程都为自身的循环顺序计算这个。