В CUDA, как он управляет последовательным кодом внутри ядра графического процессора?
Если у меня есть ядро в цикле for, оно работает в последовательном режиме или существует логический параллелизм?
В CUDA, как он управляет последовательным кодом внутри ядра графического процессора?
Если у меня есть ядро в цикле for, оно работает в последовательном режиме или существует логический параллелизм?
Последовательный код по-прежнему будет вычисляться последовательно, с той лишь разницей, что все потоки будут вычислять этот код параллельно.
Предположим, следующее простое ядро (записано здесь, не тестировалось):
__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;
}
}
}
Полный цикл for будет вычисляться параллельно для разных потоков в пределах одного и того же варпа. Но каждый отдельный поток вычисляет этот цикл for для себя.