我从 CUDA 5.5 知道可以拥有高优先级内核,但我知道这仅适用于 GPU 上相同上下文的调用问题,即它不会影响另一个进程的内核启动的优先级,只要因为他们有足够的 CPU 时间来发布。
是否可以在 GPU 上拥有高优先级的应用程序,类似于如何设置操作系统以赋予特定线程优先级?
谢谢
亨利克·安德森
我从 CUDA 5.5 知道可以拥有高优先级内核,但我知道这仅适用于 GPU 上相同上下文的调用问题,即它不会影响另一个进程的内核启动的优先级,只要因为他们有足够的 CPU 时间来发布。
是否可以在 GPU 上拥有高优先级的应用程序,类似于如何设置操作系统以赋予特定线程优先级?
谢谢
亨利克·安德森
从技术上讲,CUDA 5.5 增加了为计算能力 3.5 设备的 CUDA 工作调度系统设置单个流优先级的能力。这意味着 CUDA 驱动程序将允许较高优先级流中的任何操作内核抢占竞争较低优先级流中操作的驱动程序级别调度。这可以包括启动内核、将操作和事件复制到设备。但是,我不相信一旦内核在设备本身上启动后,执行优先级的任何差异就会扩大,它纯粹是驱动程序端流调度启发式控制。. 当存在并发内核执行的条件时,这扩展到从设备上较低优先级的流中抢占正在运行的内核。
据我所知,目前还没有能力将该机制扩展到单个上下文中的流之外,并且无法影响竞争访问 GPU 的进程将如何在驱动程序级别进行优先级排序。我要补充的唯一警告是 CUDA 6可能已经改变了这一点,而且我还没有机会查看该版本中的所有新内容。