首页> 外文会议>Joint ACM-ISCOPE conference on Java Grande >Using MPI with C# and the common language infrastructure
【24h】

Using MPI with C# and the common language infrastructure

机译:在C #和公共语言基础结构中使用MPI

获取原文

摘要

The Common Language Infrastructure (CLI) is a new virtual machine and runtime environment recently introduced by Microsoft® as part of the .NET initiative [1]. It provides a standard bytecode format, and a set of libraries for programs to use. It is specifically designed to be used with multiple programming languages, and allows cross-language interoperability. It also includes a provision for stack-allocated data structures (for higher performance), and the use of raw pointers for interfacing to native code. C# is a new programming language designed to take advantage of the features of the CLI [2]. The Message Passing Interface (MPI) is a standard application programming interface (API) for distributed-memory parallel computing [3]. It provides primitive operations for sending and receiving messages, collective operations, data type= declarations, and other common message-passing operations.This poster presents two binding specifications for MPI for the CLI, allowing access to high-performance message passing from any language in the CLI, including C#. The first, called the CLI bindings, provides an interface based on that of the C++ bindings in the MPI standard. This specification provides an object-oriented interface to MPI functionality that directly maps object method calls to the underlying MPI functions. Method and property names follow exactly the conventions of the Cpp{} bindings whenever possible, and arguments are passed to MPI functions using a start address and an element count, just as in the C++ bindings. This eases migration from C++ for both programmers and programs.MPI.NET is a higher-level binding specification, which is designed to match the naming conventions of the standard CLI libraries. For instance, this layer of bindings uses properties for convenient access to information about objects. These bindings evolved from the OOMPI object-oriented C++ interface to MPI, and operate at a higher level of abstraction than the CLI bindings [4]. For instance, a communicator and source or destination process rank are combined into a port (an abstraction inherited from OOMPI). One important feature of MPI.NET is that buffers are represented generically. As in OOMPI, a message is generalized as an interface, not a specific class. The CLI bindings, as well as MPI.NET, are implemented using an internal, low-level set of bindings designed to match the MPI C API.In order to determine whether using these bindings for parallel communication would cause a severe performance loss, the overheads of each binding layer were measured on two 1.5 GHz P4® systems connected by full-duplex 100 Mbps Ethernet. Both systems were running Red Hat® Linu ® 7.3, with the 2.4.18-10smp kernel. The C compiler used was GCC 2.96, and the "Rotor" environment was used for C++ and the CLI [5]. LAM/MPI 6.5.6 using c2c mode and homogeneous-network optimization was used for communication. As shown in Figure 1, overhead from using the CLI is fairly small and generally does not increase much with largermessage sizes.
机译:通用语言基础结构(CLI)是Microsoft®作为.NET计划的一部分[1]最近引入的一种新的虚拟机和运行时环境。它提供了一种标准的字节码格式,以及一组供程序使用的库。它是专门为与多种编程语言一起使用而设计的,并允许跨语言的互操作性。它还包括用于堆栈分配的数据结构(以提高性能)的规定,以及使用原始指针与本机代码进行接口的规定。 C#是一种新的编程语言,旨在利用CLI的功能[2]。消息传递接口(MPI)是用于分布式内存并行计算的标准应用程序编程接口(API)[3]。它提供了用于发送和接收消息的原始操作,集体操作,数据类型=声明以及其他常见的消息传递操作。此海报提供了CLI的MPI的两个绑定规范,允许访问从任何语言传递的高性能消息。 CLI,包括C#。第一个称为CLI绑定,它基于MPI标准中的C ++绑定提供接口。该规范为MPI功能提供了一个面向对象的接口,该接口将对象方法调用直接映射到基础MPI函数。方法和属性名称尽可能严格地遵循\ Cpp {}绑定的约定,就像C ++绑定一样,使用开始地址和元素计数将参数传递给MPI函数。这简化了程序员和程序从C ++的迁移。MPI.NET是一个更高级别的绑定规范,旨在与标准CLI库的命名约定匹配。例如,此绑定层使用属性来方便地访问有关对象的信息。这些绑定从OOMPI面向对象的C ++接口发展到MPI,并且在比CLI绑定更高的抽象级别上运行[4]。例如,将通信器和源或目标进程级别组合为端口(继承自OOMPI的抽象)。 MPI.NET的一个重要功能是缓冲区是通用表示的。与在OOMPI中一样,消息被一般化为接口,而不是特定的类。 CLI绑定以及MPI.NET使用内部低级绑定集来实现,这些绑定集旨在与MPI C API匹配。为了确定将这些绑定用于并行通信是否会导致严重的性能损失,在通过全双工100 Mbps以太网连接的两个1.5 GHzP4®系统上测量每个绑定层的开销。两个系统都运行带有2.4.18-10smp内核的RedHat®Linu®7.3。使用的C编译器是GCC 2.96,“ Rotor”环境用于C ++和CLI [5]。使用c2c模式和同类网络优化的LAM / MPI 6.5.6用于通信。如图1所示,使用CLI的开销相当小,并且通常随着较大的消息大小而不会增加太多。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号