CPU-GPU并行编程(Python)

问题描述 投票:0回答:1

是否有一种方法可以同时在CPU和GPU(使用Python)上运行函数?我已经在使用Numba对GPU上的计算密集型功能进行线程级调度,但是现在我还需要在CPU-GPU之间添加并行性。一旦确保GPU共享内存具有开始处理的所有数据,就需要触发GPU启动,然后使用CPU在主机上并行运行某些功能。

我确信GPU返回数据所花费的时间比CPU完成任务所花费的时间多得多。因此,一旦GPU完成处理,CPU就已经在等待将数据提取到主机。是否有标准的库/方法来实现这一目标?感谢这方面的任何指示。

python-3.x numba
1个回答
0
投票

感谢罗伯特和安德。我在想类似的思路,但不是很确定。我检查了一下,直到在内核之间进行一些同步以完成任务为止(例如使用CuPy时,例如cp.cuda.Device()。synchronize()),我实际上是在并行运行GPU-CPU。再次感谢。 Numba的一般流程是使gpu_functioncpu_function并行运行,如下所示:

    """ GPU has buffer full to start processing Frame N-1 """
    tmp_gpu = cp.asarray(tmp_cpu)
    gpu_function(tmp_gpu)
    """ CPU receives Frame N over TCP socket """
    tmp_cpu = cpu_function()
    """ For instance we know cpu_function takes [a little] longer than gpu_function """
     cp.cuda.Device().synchronize()

当然,通过使用PING-PONG缓冲区和初始帧延迟,我们甚至可以消除将tmp_cpu传输到tmp_gpu所花费的时间。

© www.soinside.com 2019 - 2024. All rights reserved.