什么时候cudaDeviceSynchronize真的需要调用这个函数?
据我从CUDA文档中了解,CUDA内核是异步的,因此我们应该cudaDeviceSynchronize在每次内核启动后调用它们.但是,cudaDeviceSynchronize在时间测量之前,除了一个之外,我尝试了相同的代码(训练神经网络).我发现我得到了相同的结果,但速度在7-12x之间(取决于矩阵大小).
所以,问题是是否有任何理由使用cudaDeviceSynchronize时间测量.
例如:
是否需要先将数据从GPU复制回主机cudaMemcpy?
如果我做矩阵乘法,比如
C = A * B
D = C * F
Run Code Online (Sandbox Code Playgroud)我应该放在cudaDeviceSynchronize两者之间吗?
从我的实验看来我没有.
为什么这么cudaDeviceSynchronize慢的程序呢?