在MPI集群上使用CUDA

2020-03-19  本文已影响0人  马鹏飞_47c5

CUDA给的例子中有simpleMPI程序,给每台电脑上安装好了CUDA(也可能安装好驱动就好了),它可以在集群上运行,在不同节点上跑,各个节点都可以调用自己的GPU计算。为了大幅提升数据传输性能,我们必须启用CUDA-aware技术,它使得不同节点之间的GPU数据可以直接经过网卡传输,不需要通过主机内存。为了使数据传输能达到最大性能,CUDA-aware需要一系列技术支持,包括GPUDirect RDMA、Unified Virtual Address等。主流版本的MPI都可以支持这些技术,为了完整支持这些技术,MPI的编译比原先稍微复杂了一些。以openmpi为例,官网上给出了如何安装,如何运行的讲解。

How do I build Open MPI with CUDA-aware support?

What kind of CUDA support exists in Open MPI?

**配置和编译 Open MPI >= 2.0.0 **

官方推荐使用最新版本,我也就用最新版本。

  1. 安装UCX1.4 前提是安装好了gdrcopy和cuda
./configure --prefix=/path/to/ucx-cuda-install --with-cuda=/usr/local/cuda --with-gdrcopy=/usr
make -j40 install
  1. 安装OPEN MPI
./configure --with-cuda=/usr/local/cuda --with-ucx=/path/to/ucx-cuda-install
make -j40 install

关于GDRCopy:顾名思义,它是基于GPUDirect RDMA的库,用于数据拷贝。以下仅是个人理解,GPUDirect RDMA技术支持第三方设备有直接读写GPU内存的能力,比如一块GPU直接通过网卡读写另一块GPU的内存,CPU也可以直接通过网卡直接读写另一块GPU的内存。GPU不像CPU一样低延迟,用CPU读写远程GPU内存延迟低一些。

关于UCX:统一通信。MPI的通信层。

我不太懂这两个库,不管怎么样,按照官方推荐把这两个安装上去就好了,我们不会直接调用这两个库。

上一篇 下一篇

猜你喜欢

热点阅读