我正在尝试优化称为LAMMPS的MPI + CUDA基准测试的性能(https://github.com/lammps/lammps).现在我运行两个MPI进程和两个GPU.我的系统有两个插座,每个插座连接到2个K80.由于每个K80内部包含2个GPU,因此每个插槽实际连接到4个GPU.但我只使用一个插槽中的2个内核和连接到该插槽的2个GPU(1个K80).MPI编译器是MVAPICH2 2.2rc1,CUDA编译器版本是7.5.
那是背景.我分析了应用程序,发现通信是性能瓶颈.我怀疑是因为没有应用GPUDirect技术.所以我切换到MVAPICH2-GDR 2.2rc1并安装了所有其他必需的库和工具.但MVAPICH2-GDR需要的Infiniband接口卡,不可用我的系统上,所以我必须运行时错误"通道初始化失败.在系统上未找到有效的HCAs".根据我的理解,Infiniband的卡则不需要,如果我们只是想在一个节点上使用1 K80内的GPU,因为K80具有这两个GPU的内部PCIe交换机.这些都是我的疑惑.为了清楚地说明问题,我将其列出如下:
在我的系统中,一个插座连接到两个K80.如果一个K80中的两个GPU需要与另一个K80中的GPU通信,那么如果我们想使用GPUDirect,我们必须拥有IB卡,是吗?
如果我们只需要在1 K80内使用两个GPU,那么这两个GPU之间的通信不需要IB卡,对吗?但是,MVAPICH2-GDR至少需要一张IB卡.那么有什么解决方法可以解决这个问题吗?或者我必须在系统上插入IB卡?