如何在多个GPU上扩展cholesky分解

时间:2009-09-09 06:08:59

标签: parallel-processing gpu distributed-computing gpgpu

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

目前我安装了One Machine和One GPU,并且cholesky factorization正常运行。 我想为N机器做这件事并且所有人都安装了一个GPU。所以建议我该怎么办。

3 个答案:

答案 0 :(得分:2)

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

  1. 机器1上的GPU内存到机器1上的主内存
  2. 机器1上的主存储器到机器2上的主存储器
  3. 机器2上的主内存到机器2上的GPU内存
  4. 良好的第一步是做一些包络计算,以确定通过在多台机器之间分割问题而获得的速度是否会超过您引入的延迟。

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

    由于您已经有了可用的GPU实现,因此以下是您必须遵循的基本步骤:

    • 确定如何更新分解算法以支持单独节点的处理
    • 设置N台计算机之间的数据交换(我注意到你选择了MPI)
    • 设置将在计算节点之间划分输入问题的分散操作
    • 在机器及其GPU之间设置数据交换
    • 设置将从节点收集结果到一个节点的收集操作

答案 1 :(得分:0)

这是一个非常专业的问题。建议您查看Stream developer resourcesStream Developer Forums

答案 2 :(得分:0)

我向我的同事展示了这个Q,他知道这些事情。 他建议你使用ScaLAPACK。