代码之家  ›  专栏  ›  技术社区  ›  Bartzilla

并发,4个CUDA应用程序争夺GPU资源

  •  6
  • Bartzilla  · 技术社区  · 14 年前

    如果有四个并发CUDA应用程序在一个GPU中竞争资源,会发生什么 这样他们就可以把工作转移到显卡上了?。Cuda编程指南3.1提到

    • 内核启动
    • 设备内存拷贝
    • 由后缀为Async的函数执行的内存拷贝
    • 内存集函数调用

    溪流 在一个单一的cuda应用程序,但不可能当有完全不同的应用程序请求GPU资源??

    这是否意味着并发支持仅在一个应用程序中可用(上下文??)这4个应用程序将以这样的方式并发运行:CPU中的上下文切换可能会重叠这些方法,但这4个应用程序需要等待GPU被其他应用程序释放?(也就是说,从app4启动内核要等到从app1启动内核完成时才开始…)

    如果是这样的话,那么这4个应用程序如何访问GPU资源而不遭受长时间的等待呢?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Tom    14 年前

    正如您所说,在任何给定的时间,每个引擎只能占用一个“上下文”。这意味着其中一个复制引擎可以为应用程序a提供memcpy,另一个为应用程序B提供memcpy,计算引擎可以为应用程序C执行内核(例如)。

    一个应用程序实际上可以有多个上下文,但是没有两个应用程序可以共享同一个上下文(尽管应用程序中的线程 共享上下文)。

    任何将工作安排在GPU上运行的应用程序(即memcpy或内核启动)都可以安排工作 这样应用程序就可以自由地在CPU上进行其他工作,并且可以调度任意数量的任务在GPU上运行。

    独占模式 在任何时候只有一个上下文可以在GPU上运行(即。 全部的 共享模式 .