我是一名学生,其研究工作包括使用MPI和OpenACC来加速我们在多个GPU上的内部研究CFD代码。我正在使用openmpi 2.0.0和PGI 17.5编译器。现在,我遇到了一个与“ MPI中的运算进度”有关的大问题。如果使用多个GPU,我的代码中的通信开销非常大,因此我想重叠主机(CPU)和设备上的计算(GPU)之间的通信。但是,就我而言,实际通信通常在计算完成时开始。因此,即使我以重叠的方式编写代码,也不会重叠,因为openmpi不支持异步进行。另外,我已经做了很多测试,并在代码中添加了MPI_Test函数进行探测,我发现MPI通常只会在我阻塞对MPI_Wait的调用时(即使没有重叠)才确实会进展(即实际发送或接收数据)。发生)。我的目的是使用重叠来隐藏通信延迟,从而提高代码的性能。有人可以为这个问题提供一些建议吗?非常感谢您的帮助!
最好
程