CUDA: Chamando uma função __device__ de um kernel
Tenho um kernel que chamadispositiv dentro de uma instrução if. O código é o seguinte:
__device__ void SetValues(int *ptr,int id)
{
if(ptr[threadIdx.x]==id) //question related to here
ptr[threadIdx.x]++;
}
__global__ void Kernel(int *ptr)
{
if(threadIdx.x<2)
SetValues(ptr,threadIdx.x);
}
Nos threads do kernel 0-1, chame SetValues simultaneamente. O que acontece depois disso? Quero dizer, agora existem 2 chamadas simultâneas para SetValues. Toda chamada de função é executada em série? Então eles se comportam como duas chamadas de função do kernel?