代码之家  ›  专栏  ›  技术社区  ›  GG.

如何在多个GPU上缩放cholesky分解

  •  2
  • GG.  · 技术社区  · 16 年前

    我使用ATI Stream SDK在GPU上实现了Cholesky分解,用于求解大型线性方程。现在我想利用越来越多的GPU的计算能力,我想在多个GPU上运行这段代码。

    目前我有一台机器和一个GPU安装在它和cholesky分解是正常运行。 我想为N机器做这件事,所有的机器上都安装了一个GPU。因此,建议我应该如何进行。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Eric    16 年前

    首先,您必须知道,这种方法将为节点之间的任何通信引入三个级别的延迟:

    1. 机器1上的GPU内存到机器1上的主内存
    2. 机器2上的主内存到机器2上的GPU内存

    好的第一步是做一些后台计算,以确定通过在多台机器之间拆分问题所获得的速度是否会超过您引入的延迟。

    一旦您确定该方法是您想要遵循的方法,那么您就可以正确地实现它了。请注意,目前,NVIDIA的CUDA或OpenCL库将是更好的选择,因为它们允许您访问GPU进行计算,而无需将其与X会话耦合。一旦ATI的OpenCL实现支持GPU,那么这也应该是一个可行的选择。

    • 确定如何更新因式分解算法以支持单独节点的处理
    • 设置将在计算节点之间划分输入问题的分散操作
    • 设置计算机与其GPU之间的数据交换
    • 设置收集操作,将结果从节点收集到一个节点中
        2
  •  0
  •   Mitch Wheat    16 年前

    这是一个非常专业的问题。建议你检查一下 Stream developer resources Stream Developer Forums .

        3
  •  0
  •   Die in Sente    16 年前