假设底层算法可以移植到多 GPU 上,那么从 MPI(在多个节点上)移植到多 GPU(再次在多个节点上)时应该考虑哪些方面?
使用 Hyper Q 吗?MPS 的?点对点通信 ?
例如,如果我们考虑使用 ADI 在具有域分解的多个节点上求解 Navier Stokes 方程的 MPI 代码,并通过求解域分解引起的舒尔补矩阵和界面未知数来求解压力和速度。我们可以通过高度并行的简单三对角求解器(例如,Thomas 算法)求解内部未知数,并使用 schur 补码方法求解接口未知数,并在整个时间步长中重复此操作。
schur 补码将涉及求解定向系统(MPI 等级取决于一个方向上的笛卡尔分解),因此将涉及一个方向上的等级之间的通信。
移植到 GPU 时会出现通信问题,因为我们需要在逻辑上相同方向的不同节点上的 GPU 之间进行通信(考虑 MPI 等级:GPU 的 1:1 比率)。
欢迎任何建议或想法。
谢谢。