我需要就我将要进行的项目提出一些建议.我计划通过遵循下面列出的策略,在使用CUDA 4.0的Multi-GPU节点上运行简单的内核(尚未决定,但我正在以令人难以置信的平行方式).目的是通过在多GPU环境中以CUDA提供的不同策略启动内核来分析节点.
我错过了任何类别吗?您对我选择的测试类别有什么看法,欢迎使用多GPU编程的任何一般建议.
谢谢,
萨彦
编辑:
我认为以前的分类涉及一些冗余,所以修改它.
大多数工作负载的 CPU 工作量都足够轻,您可以通过单个线程处理多个 GPU,但这从 CUDA 4.0 开始才变得容易。在 CUDA 4.0 之前,您可以调用cuCtxPopCurrent()/cuCtxPushCurrent()来更改给定线程的当前上下文。但从 CUDA 4.0 开始,您只需调用cudaSetDevice()即可设置当前上下文以对应于给定设备。
不过,您的选项 1) 是用词不当,因为不存在“共享上下文”——GPU 上下文仍然是独立的,设备内存和对象(例如 CUDA 流和 CUDA 事件)与创建它们的 GPU 上下文相关联。