Efficient automated marshaling of C++ data structures for MPI applications

Efficient automated marshaling of C++ data structures for MPI applications
复制标题

MPI 应用程序的 C 数据结构的高效自动编组

DOI:
--
复制
发表时间:
2008
期刊:
2008 IEEE International Symposium on Parallel and Distributed Processing
影响因子:
--
通讯作者:
E. Tilevich
E. Tilevich
中科院分区:
--
文献类型:
--
作者:
Wesley Tansey;E. Tilevich

文献摘要

被引文献

相似文献

我们提出了一种在高性能计算(HPC)应用程序中自动封送c++数据结构的方法。我们的方法利用图形化编辑器,用户可以通过该编辑器表达对象状态的子集,以便将其编组并通过网络发送。然后,我们的工具MPI序列化器自动生成高效的封送和反封送代码,用于消息传递接口(MPI),这是HPC系统的主要通信中间件。我们的方法为c++语言特性提供了比现有技术更全面的支持,并且完全符合c++语言标准。具体来说,我们可以有效且高效地封送一些重要的语言结构,如多态指针、动态分配的数组、非公共成员字段、继承的成员和STL容器类。此外,我们的封送处理方法也适用于第三方库,因为它不需要对现有的c++源代码进行任何修改。我们通过两个案例研究验证了我们的方法,这两个案例研究应用我们的工具来自动生成两个实际HPC应用程序的封送功能。案例研究表明,自动生成的代码与典型的手写实现的性能相匹配,并且超过了当前最先进的c++封送处理库,在某些情况下超过了一个数量级。我们的案例研究结果表明,我们的方法既有利于HPC应用程序的初始构建,也有利于为并行执行而重构顺序应用程序。
We present an automated approach for marshaling C++ data structures in high performance computing (HPC) applications. Our approach utilizes a graphical editor through which the user can express a subset of an object's state to be marshaled and sent across a network. Our tool, MPI serializer, then automatically generates efficient marshaling and unmarshaling code for use with the message passing interface (MPI), the predominant communication middleware for HPC systems. Our approach provides a more comprehensive level of support for C++ language features than the existing state of the art, and does so in full compliance with the C++ language standard. Specifically, we can marshal effectively and efficiently non-trivial language constructs such as polymorphic pointers, dynamically allocated arrays, non-public member fields, inherited members, and STL container classes. Additionally, our marshaling approach is also applicable to third party libraries, as it does not require any modifications to the existing C++ source code. We validate our approach through two case studies of applying our tool to automatically generate the marshaling functionality of two realistic HPC applications. The case studies demonstrate that the automatically generated code matches the performance of typical hand-written implementations and surpasses current state-of-the-art C++ marshaling libraries, in some cases by more than an order of magnitude. The results of our case studies indicate that our approach can be beneficial for both the initial construction of HPC applications as well as for the refactoring of sequential applications for parallel execution.