异构主动消息(HAM)--在C++中实现轻量级远程过程调用
Heterogeneous Active Messages (HAM) -- Implementing Lightweight Remote Procedure Calls in C++
摘要:
HAM(Heterogeneous Active Messages)是一种仅用C++语言实现的异构分布式系统的主动消息传递解决方案,结合通信协议,HAM可以作为一种通用的远程过程调用(RPC)机制。它已被用于HAM-Offload中,以实现不同架构之间的节点间和节点内卸载的低开销卸载框架,包括Intel Xeon Phi x100系列和NEC SX-Aurora TSUBASA Vector Engine等加速器。HAM使用模板元编程来隐式地生成活动消息类型及其对应的处理函数。通过在不同架构上运行不同二进制文件的进程的各个处理程序代码地址之间提供有效的地址转换机制,以及在每个类型的基础上注入序列化和非序列化代码的钩子,可以实现异构化。在现代C++中实现这样一个解决方案,揭示了C++标准在分布式和异构环境中的缺点和灰色地带。
英文摘要:
We present HAM (Heterogeneous Active Messages), a C++-only active messaging solution for heterogeneous distributed systems.Combined with a communication protocol, HAM can be used as a generic Remote Procedure Call (RPC) mechanism. It has been used in HAM-Offload to implement a low-overhead offloading framework for inter- and intra-node offloading between different architectures including accelerators like the Intel Xeon Phi x100 series and the NEC SX-Aurora TSUBASA Vector Engine. HAM uses template meta-programming to implicitly generate active message types and their corresponding handler functions. Heterogeneity is enabled by providing an efficient address translation mechanism between the individual handler code addresses of processes running different binaries on different architectures, as well a hooks to inject serialisation and deserialisation code on a per-type basis. Implementing such a solution in modern C++ sheds some light on the shortcomings and grey areas of the C++ standard when it comes to distributed and heterogeneous environments.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。