We present a modern C++20 interface for MPI 4.0. The interface utilizes recent language features to ease development of MPI applications. An aggregate reflection system enables generation of MPI data types from user-defined classes automatically. Immediate and persistent operations are mapped to futures, which can be chained to describe sequential asynchronous operations and task graphs in a concise way. This work introduces the prominent features of the interface with examples. We further measure its performance overhead with respect to the raw C interface.
翻译:我们提出了一种面向MPI 4.0的现代C++20接口。该接口利用最新语言特性以简化MPI应用程序的开发。通过聚合反射系统,可自动从用户自定义类生成MPI数据类型。即时操作与持久操作被映射为future对象,这些future可串联使用,从而简洁地描述顺序异步操作与任务图。本文通过示例介绍了该接口的突出特性,并进一步测量了其相对于原始C接口的性能开销。