基于任务的程序设计模型中阻塞和非阻塞MPI原语的集成
Integrating Blocking and Non-Blocking MPI Primitives with Task-Based Programming Models
摘要:
在本文中,我们提出了任务感知MPI库(TAMPI),集成了阻塞和非阻塞MPI原语与基于任务的编程模型。TAMPI库利用两个新的运行时API来提高混合应用程序的可编程性和性能。第一个API允许根据外部事件暂停和恢复任务的执行。此API用于提高阻塞MPI通信原语和任务之间的互操作性。当在任务内执行的MPI操作阻塞时,任务运行被暂停,以便运行时系统可以在空闲的核心上调度新任务。一旦被阻塞的MPI操作完成,暂停的任务将再次放在运行时系统的就绪队列中,因此最终它将再次被调度,并且其执行将继续。第二个API延迟与任务完成相关的依赖项的释放,直到某些外部事件完成。此API仅由两个函数组成,一个函数用于将外部事件绑定到正在运行的任务,另一个函数用于通知先前绑定的外部事件的完成。TAMPI利用此API将非阻塞MPI操作与任务绑定在一起,延迟释放它们的任务依赖关系,直到任务执行及其所有绑定的MPI操作都完成。我们的实验表明,增强功能的TAMPI不仅简化了开发的混合MPI+OpenMP应用程序,使用阻塞或非阻塞MPI原语,但他们也自然重叠的计算和通信阶段,提高了应用程序的性能和可扩展性,通过消除人为的依赖性跨通信任务。
英文摘要:
In this paper we present the Task-Aware MPI library (TAMPI) that integrates both blocking and non-blocking MPI primitives with task-based programming models. The TAMPI library leverages two new runtime APIs to improve both programmability and performance of hybrid applications. The first API allows to pause and resume the execution of a task depending on external events. This API is used to improve the interoperability between blocking MPI communication primitives and tasks. When an MPI operation executed inside a task blocks, the task running is paused so that the runtime system can schedule a new task on the core that became idle. Once the blocked MPI operation is completed, the paused task is put again on the runtime system's ready queue, so eventually it will be scheduled again and its execution will be resumed. The second API defers the release of dependencies associated with a task completion until some external events are fulfilled. This API is composed only of two functions, one to bind external events to a running task and another function to notify about the completion of external events previously bound. TAMPI leverages this API to bind non-blocking MPI operations with tasks, deferring the release of their task dependencies until both task execution and all its bound MPI operations are completed. Our experiments reveal that the enhanced features of TAMPI not only simplify the development of hybrid MPI+OpenMP applications that use blocking or non-blocking MPI primitives but they also naturally overlap computation and communication phases, which improves application performance and scalability by removing artificial dependencies across communication tasks.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。