【问题标题】:Implicit working of Multi GPU多 GPU 的隐式工作
【发布时间】:2016-05-14 03:26:37
【问题描述】:

在 OpenCL 中,由多个 GPU 组成的系统是否有可能在没有程序员显式划分工作负载的情况下隐式划分工作?
例如,假设我有一个由 1 个 SM 192 核心 GPU 组成的 GPU 并运行一个矩阵乘法,它可以正常工作。现在我添加了另一个相同的 GPU,OpenCL 使用这两个 GPU 来计算其上的矩阵乘法,而不是程序员将工作负载分摊到每个 GPU 上。

【问题讨论】:

    标签: opencl multi-gpu


    【解决方案1】:

    我不认为 OpenCL 可以自动做到这一点(至少在 1.2 中),但是有一些 OpenCL 包装器可以自动处理多个计算设备。我没有使用OpenCL CodeBench,但他们声称他们有多个计算设备的负载平衡。

    【讨论】:

    • 那么在这两个GPU卡中各有1个SM,系统会识别出系统中总共有2个SM存在吗?
    【解决方案2】:

    您只能统一设备的内存,并且只能使用 2.0 版及更高版本的 opencl 执行此操作。

    内核在命令队列中排队,它们是使用(并绑定到)单个设备创建的。所以它们只能在单个设备上工作。但是多个命令队列可以在一个公共上下文中服务,这可以利用隐式缓冲区同步。

    不能隐式地拆分工作,因为在运行时无法知道哪个工作项访问哪个内存地址。

    一旦您编写了一个有效的单设备包装器,添加多 gpu 支持就不是什么麻烦事了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 2020-04-27
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      相关资源
      最近更新 更多