Cuda 在两个GPU上并发运行两个for循环,循环周期数相同,涉及GPU和CPU任务

Cuda 在两个GPU上并发运行两个for循环,循环周期数相同,涉及GPU和CPU任务,cuda,gpgpu,Cuda,Gpgpu,我的代码中有两个for循环运行相同的循环周期数。这两个循环是独立的(每个循环处理不同的输入数据)。在一个循环中,有CPU函数和几个内核不能同时运行 我可以在单独的GPU上运行这些迭代吗?您可以在两个不同的GPU上分别运行相关的内核 您必须注意两个GPU的部分结果上CPU处理的同步。由于存在顺序部件,在使用2GPU时,您可能不会体验到2的最大可能加速系数 从CUDA 4.0开始,您可以使用cudaSetDevice() 您必须注意两个GPU的部分结果上CPU处理的同步。由于存在顺序部件,在使用2G

我的代码中有两个
for
循环运行相同的循环周期数。这两个循环是独立的(每个循环处理不同的输入数据)。在一个循环中,有CPU函数和几个内核不能同时运行


我可以在单独的GPU上运行这些迭代吗?

您可以在两个不同的GPU上分别运行相关的内核

您必须注意两个GPU的部分结果上CPU处理的同步。由于存在顺序部件,在使用
2
GPU时,您可能不会体验到
2
的最大可能加速系数


从CUDA 4.0开始,您可以使用
cudaSetDevice()

您必须注意两个GPU的部分结果上CPU处理的同步。由于存在顺序部件,在使用
2
GPU时,您可能不会体验到
2
的最大可能加速系数


从CUDA 4.0开始,您可以使用
cudaSetDevice()
设置与给定设备相对应的当前上下文,而无需创建流来启用多gpu处理。

您所说的“迭代”是什么意思?你是说“循环”吗<代码>用于循环,而
用于循环?两个“迭代”的周期数相同吗?如果“迭代”在不同的数据上运行并且是独立的,那么我相信您可以在两个不同的GPU上分别运行相关的内核。但是,我认为您必须注意两个GPU的部分结果上CPU处理的同步。因此,我认为您不会体验到最大可能的加速因子
2
。是的,这些迭代被称为for循环。迭代具有相同的循环数,并且完全独立(独立的输入和输出)。我还有一个疑问。我需要创建流吗?我认为它在没有流的情况下一定可以正常工作。从CUDA 4.0开始,您可以使用
cudaSetDevice()
设置与给定设备对应的当前上下文。当然,您可以在每个上下文中创建流,以支持在同一GPU上并发执行内核,但我认为这不是您想要的。谢谢,现在我清楚地知道我需要做什么了。您所说的“迭代”是什么意思?你是说“循环”吗<代码>用于循环,而
用于循环?两个“迭代”的周期数相同吗?如果“迭代”在不同的数据上运行并且是独立的,那么我相信您可以在两个不同的GPU上分别运行相关的内核。但是,我认为您必须注意两个GPU的部分结果上CPU处理的同步。因此,我认为您不会体验到最大可能的加速因子
2
。是的,这些迭代被称为for循环。迭代具有相同的循环数,并且完全独立(独立的输入和输出)。我还有一个疑问。我需要创建流吗?我认为它在没有流的情况下一定可以正常工作。从CUDA 4.0开始,您可以使用
cudaSetDevice()
设置与给定设备对应的当前上下文。当然,您可以在每个上下文中创建流,以支持在同一GPU上并发执行内核,但我认为这不是您想要的。谢谢,现在我需要做的已经很清楚了。