In the context of the Message Passing Interface (MPI), most implementations employ one of the following three mechanisms to ensure strong communication progress: using a background thread, dedicating a hardware core, or relying on the application to make frequent MPI test calls, such as MPI_Test, MPI_Testany, MPI_Testall, etc.. These mechanisms continuously ensure progress in communication operations by processing pending tasks, updating completion queues, and handling necessary callback functions, resulting in effective computation and communication overlap. However, these methods may lead to hardware resource consumption, which could otherwise be used for computation, while also increasing context switches between the main thread and the asynchronous progress thread. In this paper, we leverage the ARM cores integrated within NVIDIA’s InfiniBand BlueField Data Processing Unit (DPU) to offload the communication progress in non-blocking two-sided communication. This approach is implemented using Unified Communication X (UCX), leveraging the Unified Communication Protocols (UCP) API. Compared to Open MPI and MPICH, our results indicate that this approach significantly improves the overlap between communication and computation in scenarios with multiple non-blocking send and receive requests, achieving close to 100% overlap. Additionally, we observed an improvement in the solving time for the Jacobi 2D solver applied to massive grid sizes. This improvement is especially significant when compared to MPICH with asynchronous progress thread enabled, where we achieve more than a 50% reduction in the solving time.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Progressing Non-blocking Two-Sided Communication Using BlueField DPUs

  • Ehab Saleh,
  • Amir Raoofy,
  • Josef Weidendorfer

摘要

In the context of the Message Passing Interface (MPI), most implementations employ one of the following three mechanisms to ensure strong communication progress: using a background thread, dedicating a hardware core, or relying on the application to make frequent MPI test calls, such as MPI_Test, MPI_Testany, MPI_Testall, etc.. These mechanisms continuously ensure progress in communication operations by processing pending tasks, updating completion queues, and handling necessary callback functions, resulting in effective computation and communication overlap. However, these methods may lead to hardware resource consumption, which could otherwise be used for computation, while also increasing context switches between the main thread and the asynchronous progress thread. In this paper, we leverage the ARM cores integrated within NVIDIA’s InfiniBand BlueField Data Processing Unit (DPU) to offload the communication progress in non-blocking two-sided communication. This approach is implemented using Unified Communication X (UCX), leveraging the Unified Communication Protocols (UCP) API. Compared to Open MPI and MPICH, our results indicate that this approach significantly improves the overlap between communication and computation in scenarios with multiple non-blocking send and receive requests, achieving close to 100% overlap. Additionally, we observed an improvement in the solving time for the Jacobi 2D solver applied to massive grid sizes. This improvement is especially significant when compared to MPICH with asynchronous progress thread enabled, where we achieve more than a 50% reduction in the solving time.