很抱歉,如果这很明显,但我现在正在学习 c++ 和 Cuda,想知道这是否可行,以便我可以更多地关注相关部分。
基本上我的问题是高度可并行化的,事实上我目前正在多台服务器上运行它。我的程序得到一个工作项(非常小的列表)并在其上运行一个循环并做出 3 个决定之一:
- 保留数据(保存),
- 丢弃数据(不做任何事情),
- 进一步处理数据(它不确定要做什么,它会修改数据并将其重新发送到队列进行处理。
这曾经是一个递归,但我使每个部分独立,虽然我不再受一个 cpu 的约束,但它的负面影响是有很多消息来回传递。我大致了解 CUDA 的工作原理以及如何向其提交工作,但 CUDA 是否可以管理设备本身的队列?
我目前的想法是在 c++ 主机上管理队列,然后将处理发送到设备,然后将结果返回主机并发送回设备(依此类推)。我认为这可行,但我想看看是否可以让 CUDA 内存本身的队列和内核承担工作并将工作直接发送给它。
CUDA 是否可以实现类似的操作,或者有更好的方法吗?