有没有一种方法可以在 CPU 和 GPU 上同时运行函数(使用 Python)?我已经在使用 Numba 对 GPU 上的计算密集型函数进行线程级调度,但我现在还需要在 CPU-GPU 之间添加并行性。一旦我们确保 GPU 共享内存拥有开始处理的所有数据,我需要触发 GPU 启动,然后使用 CPU 在主机上并行运行一些函数。
我确信 GPU 返回数据所花费的时间比 CPU 完成任务要多得多。这样,一旦 GPU 完成处理,CPU 就已经在等待将数据获取到主机。是否有标准库/方法来实现这一目标?感谢这方面的任何指示。
谢谢罗伯特和安德。我也有类似的想法,但不太确定。我检查过,直到我在核心之间进行一些任务完成同步(例如使用 CuPy 时的 cp.cuda.Device().synchronize()),我才能有效地并行运行 GPU-CPU。再次感谢。 Numba 的一般流程GPU函数 and 中央处理器功能并行运行将类似于以下内容:
""" 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 所花费的时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)