__global__ void helloCUDA(float f)
{
printf("Hello thread %d, f=%f\n", threadIdx.x, f);
}
int main()
{
helloCUDA<<<1, 5>>>(1.2345f);
cudaDeviceSynchronize();
return 0;
}
Neden cudaDeviceSynchronize(); Örneğin here gibi birçok yerde çekirdek çağrısından sonra gerekli değildir?neden cudaDeviceSynchronize(); Aygıt-printf ile çekirdeklerde?
fakat gönderdiğim bağlantıyı görüyorsanız, kernal çağrısından hemen sonra cudamemcpy (.... cihazını barındırmak için) çağırıyoruz. neden cudadevicesynchronize() burada yok? – gpuguy
Aynı akışa verilen CUDA işlemleri (API çağrıları, çekirdek çağrıları), eşzamansız olsa bile, seri olarak yürütme garantilidir. Çekirdek ve cudaMecpy işlemi aynı (varsayılan) akışta olduğu için, çekirdek başlatımı eşzamansız olsa bile (ana iş parçacığına göre), çekirdek tamamlanana kadar cudaMemcpy'nin başlatılmayacağı garanti edilir. –