如果我通过注册一个回调cudaStreamAddCallback(),哪个线程将运行它?
CUDA文档说 cudaStreamAddCallback
在流中所有当前排队的项目完成后,添加要在主机上调用的回调。对于每个
cudaStreamAddCallback调用,回调将仅执行一次。回调将阻止流中的后续工作,直到完成为止。
但是没有提到回调本身的调用方式。
只是为了充实评论,以便这个问题有答案,并且会从未回答的队列中消失:
简而言之,这是 CUDA 运行时的内部实现细节,您无需担心它。
更长的答案是,如果您仔细观察 CUDA 运行时的操作,您会注意到设备上的上下文建立(无论是通过驱动程序 API 显式建立,还是通过运行时 API 隐式建立)会生成一个小型线程池。这些线程用于实现运行时的功能,例如流命令队列和回调操作。同样,程序员不需要了解内部实现细节。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |