繁体   English   中英

来自多个进程的并发GPU内核执行

[英]Concurrent GPU kernel execution from multiple processes

我有一个应用程序,我希望在多个进程之间共享一个GPU。 也就是说,这些进程中的每一个都会创建自己的CUDA或OpenCL上下文,目标是相同的GPU。 根据Fermi白皮书[1],应用程序级上下文切换小于25微秒,但是在GPU上启动时启动有效地序列化 - 因此Fermi不能很好地完成这项工作。 根据Kepler白皮书[2],有一种叫做Hyper-Q的东西允许来自多个CUDA流,MPI进程或进程内线程的多达32个同时连接。

我的问题:是否有人在Kepler GPU上尝试过此操作并验证其内核是否在从不同进程调度时同时运行? 这只是一个CUDA功能,还是可以在Nvidia GPU上与OpenCL一起使用? AMD的GPU是否支持类似的东西?

[1] http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf

[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf

在回答第一个问题,NVIDIA已经发布在博客上的一些超-Q结果在这里 该博客指出,移植CP2K的开发人员能够更快地获得加速结果,因为hyper-Q允许他们或多或少地使用应用程序的MPI结构并在单个GPU上运行多个级别,并获得这种方式有效的GPU利用率更高。 正如评论中所提到的,这个(hyper-Q)功能目前仅适用于K20处理器,因为它依赖于GK110 GPU。

我从Fermi架构运行同步内核它运行得非常好,事实上,它通常是从硬件中获得高占用率的唯一方法。 我使用OpenCL并且您需要从单独的cpu线程运行单独的命令队列才能执行此操作。 Hyper-Q能够从另一个内核中调度新数据并行内核。 这只是在开普勒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM