我已经实现了 Cholesky 分解,用于使用 ATI Stream SDK 在 GPU 上求解大型线性方程。现在我想利用越来越多的 GPU 的计算能力,我想在多个 GPU 上运行这段代码。
目前我安装了一台机器和一台 GPU,并且 cholesky 分解运行正常。我想为 N 台机器做这件事,并且都安装了一个 GPU。所以建议我应该如何进行。
我已经实现了 Cholesky 分解,用于使用 ATI Stream SDK 在 GPU 上求解大型线性方程。现在我想利用越来越多的 GPU 的计算能力,我想在多个 GPU 上运行这段代码。
目前我安装了一台机器和一台 GPU,并且 cholesky 分解运行正常。我想为 N 台机器做这件事,并且都安装了一个 GPU。所以建议我应该如何进行。
首先,您必须意识到这种方法将为节点之间的任何通信引入三个级别的延迟:
一个好的第一步是进行一些包络计算,以确定通过在多台机器之间拆分问题所获得的速度是否会超过您引入的延迟。
一旦您确定该方法是您想要遵循的方法,那么正确实施它几乎取决于您。请注意,目前,NVIDIA 的 CUDA 或 OpenCL 库将是您更好的选择,因为它们允许您访问 GPU 进行计算,而无需将其与 X 会话耦合。一旦 ATI 的 OpenCL 实现支持 GPU,那么这也应该是一个可行的选择。
由于您已经有一个有效的 GPU 实现,以下是您必须遵循的基本步骤:
这是一个非常专业的问题。建议您查看Stream 开发者资源和Stream 开发者论坛。
我把这个 Q 展示给了我的一位了解这些事情的同事。他建议你使用 ScaLAPACK。