【问题标题】:optimizing nbody on a GPU cluster with openacc使用 openacc 在 GPU 集群上优化 nbody
【发布时间】:2014-02-08 03:19:39
【问题描述】:

我们正在尝试为多个节点提供通用的 nbody 算法。 一个节点有 2 个 GPU 和 1 个 CPU。

我们只想在 GPU 上使用 openacc 计算 n-body。在对 openacc 做了一些研究后,我不确定如何将计算分散到多个 GPU。

是否可以使用只有一个线程和 openacc 的 2 个 GPU? 如果没有,什么是合适的方法,使用 openMP 在一个节点上使用两个 GPU 并通过 MPI 与其他节点通信?

【问题讨论】:

    标签: openacc


    【解决方案1】:

    OpenACC 运行时库提供例程(acc_set_device_num()、acc_get_device_num())来选择特定线程将针对哪个加速器设备,但使用单个线程同时使用多个设备并不方便。相反,可以使用 OpenMP 或 MPI。

    例如(来自here)OpenMP 的基本框架可能是:

    #include <openacc.h>
    #include <omp.h>
    #pragma omp parallel num_threads(2)
    {
      int i = omp_get_threadnum();
      acc_set_device_num( i, acc_device_nvidia );
      #pragma acc data copy...
      {
      }
    }
    

    也可以使用 MPI 完成,和/或您可以使用 MPI 在节点之间进行通信,这是典型的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      相关资源
      最近更新 更多