【发布时间】:2013-09-04 15:33:28
【问题描述】:
我的代码中有两个for 循环运行相同数量的循环周期。这两个循环是独立的(每个循环处理不同的输入数据)。在一个循环中,有多个 CPU 功能和多个内核未同时运行。
我可以在不同的 GPU 上运行这些迭代吗?
【问题讨论】:
-
“迭代”是什么意思?你的意思是“循环”吗?
for循环,while循环?这两个“迭代”是否具有相同的周期数?如果“迭代”在不同的数据上运行并且是独立的,那么我相信您可以在两个不同的 GPU 上分别运行所涉及的内核。但是,我认为您必须注意 CPU 处理在两个 GPU 的部分结果上的同步。因此,我认为您不会体验到2的最大可能加速因子。 -
是的,这些迭代是在 for 循环中调用的。并且迭代具有相同的周期数并且完全独立(单独的输入和输出)。我还有一个疑问。我需要创建流吗?我认为它必须在没有流的情况下正常工作。
-
从 CUDA 4.0 开始,您可以使用
cudaSetDevice()设置与给定设备对应的当前上下文。当然,您可以在每个上下文中创建流以在同一个 GPU 上启用内核的并发执行,但我认为这不是您想要的。 -
谢谢,现在清楚我需要做什么了。