我有一个想要在多个进程之间共享单个GPU的应用程序。也就是说,这些进程中的每一个都会创建自己的CUDA或OpenCL上下文,目标是相同的GPU。根据费米怀特paper1的说法,应用程序级别的上下文切换不到25微秒,但启动在GPU上启动时实际上是序列化的--因此费米不能很好地解决这一问题。根据开普尔白paper2的说法,有一种叫做Hyper-Q的东西,它允许从多个CUDA流、MPI进程或一个进程内的线程同时进行多达32个连接。
我的问题是:有没有人在开普勒GPU上尝试过,并验证了它的内核在从不同的进程调度时是并发运行的?这只是一个CUDA功能,或者它也可以在Nvidia GPU上与OpenCL一起使用?AMD的GPU是否支持类似的功能?
1
2
发布于 2012-10-05 21:51:40
为了回答第一个问题,NVIDIA在博客here中发布了一些hyper-Q结果。该博客指出,移植CP2K的开发人员能够更快地获得加速结果,因为hyper-Q允许他们或多或少地按原样使用应用程序的MPI结构,并在单个GPU上运行多个级别,并通过这种方式获得更高的有效GPU利用率。正如评论中提到的,这个(hyper-Q)功能目前只在K20处理器上可用,因为它依赖于GK110图形处理器。
发布于 2013-05-29 16:24:19
我从Fermi架构运行过同步内核,它工作得非常好,事实上,这通常是从你的硬件中获得高占用率的唯一方法。Hyper-Q是从另一个内核中分派新数据并行内核的能力。这只在开普勒上才有。
https://stackoverflow.com/questions/12679737
复制相似问题