Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing 如何在多个GPU上缩放cholesky分解_Parallel Processing_Gpu_Distributed Computing_Gpgpu - Fatal编程技术网

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

Parallel processing 如何在多个GPU上缩放cholesky分解,parallel-processing,gpu,distributed-computing,gpgpu,Parallel Processing,Gpu,Distributed Computing,Gpgpu,我使用ATI Stream SDK在GPU上实现了Cholesky分解,用于求解大型线性方程。现在我想利用越来越多的GPU的计算能力,我想在多个GPU上运行这段代码 目前我有一台机器和一个GPU安装在它和cholesky分解是正常运行。 我想为N机器做这件事,所有的机器上都安装了一个GPU。因此,建议我应该如何进行 这是一个非常专业的问题。建议您检查和。首先,您必须意识到这种方法将为节点之间的任何通信引入三个级别的延迟: 机器1上的GPU内存到机器1上的主内存 机器1上的主存储器到机器2上的主存

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

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

这是一个非常专业的问题。建议您检查和。

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

  • 机器1上的GPU内存到机器1上的主内存
  • 机器1上的主存储器到机器2上的主存储器
  • 机器2上的主内存到机器2上的GPU内存
  • 好的第一步是做一些后台计算,以确定通过在多台机器之间拆分问题所获得的速度是否会超过您引入的延迟

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

    由于您已经有了一个正常工作的GPU实现,以下是您必须遵循的基本步骤:

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

    我向一位了解这些事情的同事展示了这个问题。 他建议你用ScaLAPACK