Procedia Computer Science
Volume 29, 2014, Pages 1468–1479
ICCS 2014. 14th International Conference on Computational Science
High Performance Message-Passing InfiniBand
Communication Device for Java HPC
Omar Khan, Mohsan Jameel and Aamir Shafi
SEECS, National University of Sciences and Technology, Islamabad, Pakistan
{11mscsokhan, mohsan.jameel, aamir.shafi}@seecs.edu.pk
Abstract
MPJ Express is a Java messaging system that implements an MPI-like interface. It is used for writing parallel Java applications on High Performance Computing (HPC) hardware including commodity clusters. The software is capable of executing in multicore and cluster mode. In the cluster mode, it currently supports Ethernet and Myrinet based interconnects and provide specialized communication devices for these networks. One recent trend in distributed memory parallel hardware is the emergence of InfiniBand interconnect, which is a high-performance proprietary network and provides low latency and high bandwidth for parallel MPI applications. Currently there is no direct support available in Java (and hence MPJ Express) to exploit the performance benefits of InfiniBand networks. The only option to run distributed Java programs over InfiniBand networks is to rely on TCP/IP emulation layers like IP over InfiniBand (IPoIB) and Sockets Direct Protocol (SDP), which provide poor communication performance. To tackle this issue in the context of MPJ Express, this paper presents a low-level communication device called ibdev that can be used to execute parallel Java applications on InfiniBand clusters. MPJ Express is based on a layered architecture and hence users can opt to use ibdev at runtime on an InfiniBand equipped commodity cluster. ibdev improves Java application performance with access to InfiniBand hardware using native verbs API. Our performance evaluation reveals that MPJ Express achieves much better latency and bandwidth using this new device, compared to IPoIB and SDP. Improvement in communication performance is also evident in NAS parallel benchmark results where ibdev helps MPJ Express achieve better scalability and speedups as compared to IPoIB and SDP. The results show that it is possible to reduce the performance gap between Java and native languages with efficient support for low level communication libraries.
Keywords: MPJ Express, Java MPI, Java InfiniBand
1 Introduction
Java is a popular programming language because of its portability, security, and wide-spread knowledge. It is beginning to play a role that C and C have been performing successfully for many
1468 Selection and peer-review under responsibility of the Scientific Programme Committee of ICCS 2014
doi:10.1016/j.procs.2014.05.133
sect;c The Authors. Published by Elsevier B.V.
years, especially in enterprise computing applications. Java is fast turning into a system level programming language instead of just an internet specific technology [1].
Initially, Java was heavily censured for its poor execution speed compared to native languages like C, C and Fortran [2]. But, in the past many years, a lot of effort has been made to enhance the performance of Java applications. The most successful approach in this context is the Just-in-Time (JIT) compiler within the JVM. It caches the most frequently used native code and remarkably cuts down byte-code to native code translations, in turn increasing code execution tremendously. Another reason for the performance increase of Java is the close collaboration between microprocessor and JVM designers. Since 2007, Oracle and Intel have worked together and improved Javarsquo;s performance by up to 14 times by correlating language optimization with hardware design [8]. Intel has benchmarked a TeraSort application on an Intel Xeon powered Hadoop cluster and showed a performance gain of 50 percent with JDK 7 update 13 compared to JDK 6 update 14 [8].
In recent years, more and more Java server applications have been deployed in data centers. One such success story is the Apache Hadoop software, which is a scalable, distributed data storage and analytics engine and can process huge amounts of data. The core components in Hadoop: Apache Hadoop Distributed File System, MapReduce, Apache Hadoop common are all written in Java. Currently many leading organizations including Facebook, Yahoo, Amazon, and IBM are relying on Hadoop software to run their business applications.
Apart from increasing instruction execution speed of software, a lot of research is also under way to develop high speed proprietary communication interconnects. These interconnects deliver low latency and high bandwidth to user applications. InfiniBand is one such interconnect for network and inter-process communication. The number of InfiniBand-based supercomputers has increased to 207, signifying 41.4 percent of the TOP500 clusters. According to the list issued in June 2013, InfiniBand is used to connect 16 out of 33 peta-scale capable systems.
If Java is to become a language of choice for HPC community, the tremendous improvement in its computational performance needs to be augmented with high communication performance on these new network architectures. Presently, no built-in support is available in Java to take benefits of the communication capabilities of InfiniBand interconnect. Java applications depend on Upper Layer Protocols (ULPs), IPoIB and SDP, to run on InfiniBand network.
However, IPoIB and SDP have a high overhead and degrade communication performance of the application significantly. According to Zhang [7], in a Gigabit Ethernet environment, the latency and bandwidth of Java bench-marks is very close to C counterparts, though with a higher CPU utilization. However, since Java can only run on InfiniBand using ULPs, the test results of Java benchmarks over InfiniB
剩余内容已隐藏,支付完成后下载完整资料
Communication Device for Java HPC
java HPC通信设备的高性能消息传递机制
奥马尔汗,穆赫辛贾米尔和阿米尔·沙菲
SEECS,国立信息工程大学,伊斯兰堡,巴基斯坦
Abstract
摘要
MPJ Express是一个java的通讯系统,实现了一个MPI接口。它用于编写并行在高性能计算 (HPC) 硬件的包括商品集群的 Java 应用程序。该软件能够在多核和集群模式下执行。在群集模式中,它目前支持以太网和基于 Myrinet 互连并提供这些网络的专业的通信设备。在分布式的内存并行硬件的一个最近新的趋势是无限带宽互连,这是一个高性能的为专用网络提供低延迟和高带宽并行的MPI应用程序。目前还没有直接支持java(鉴于MPJ Express)利用InfiniBand网络的性能优势。在无限带宽网络运行 Java 的分布式的程序的唯一选择是依靠 TCP/IP 仿真层像 IP 无限带宽 (IPoIB) 和套接字直接协议 (SDP) ,提供比较差的通信的性能。为了解决在MPJ Express方面的这一问题,本文提出了一种叫做 ibdev,可用于在无限带宽集群上执行并行的 Java 应用程序的底层通信装置。 MPJ Express是基于分层的架构,因此用户可以选择在InfiniBand运行时使用ibdev配备商品集群。ibdev 提高了无限带宽硬件使用本机动词 API 访问 Java 应用程序的性能。我们的绩效评估显示,MPJ Express实现了更好的延迟和带宽使用这种新装置,相比于IPoIB和SDP。通信性能的改善在NAS并行基准测试的结果中,ibdev帮助MPJ Express实现更好的可扩展性和加速相比于IPoIB和SDP也是显而易见的。结果表明,这有可能减少 Java 和母语和有效支持低级通信库之间的性能差距。
关键词 ︰MPJ Express,Java MPI,Java InfiniBand
1 Introduction
1引言
Java是一种流行的编程语言,因为它可移植性、安全性和广泛的知识。这开始发挥作用,C和c 已经执行成功多年,尤其是在企业计算的应用程序。Java正迅速变成一个系统级的编程语言,而不只是一个互联网特定技术[1]。
最初,Java 的糟糕的执行速度相比于本机语言如 C、 c 和 Fortran [2]被严重谴责。但是在过去的许多年中,大量的努力提高 了Java 应用程序的性能。在这方面最成功的方法是 JVM 中的实时 (JIT) 编译器。它缓存最频繁使用的本机代码,并显著地减少字节码到本机代码的翻译,反过来增加代码的执行。Java 的性能提升的另一个原因是微处理器和 JVM 设计师之间的密切合作。自2007年以来,甲骨文和英特尔合作,改善Java性能的相关语言与硬件优化设计[8]高达14倍。英特尔已达到基准 TeraSort 应用英特尔至强动力 Hadoop 集群和显示性能增加了 50%与 JDK 7 更新 13 跟JDK 6 更新 14 [8] 相比。
近年来,越来越多的java服务器应用程序被部署在数据中心。其中一个成功事例是Apache Hadoop的软件,这是一个可扩展的分布式数据存储和分析引擎,可以处理大量的数据。 Hadoop的核心组件:Apache Hadoop分布式文件系统,Apache Hadoop MapReduce,普遍都是用Java编写的。目前许多领先的组织包括Facebook、雅虎、亚马逊、和IBM正依赖于Hadoop软件来运行他们的业务应用程序。
除了增加指令执行速度的软件,很多研究也正在开发高速专用通信互联。这些互联提供低延迟、高带宽的用户应用程序。无限是一种互连网络和进程间通信。基于无限带宽的超级计算机的数量已经增加到207,标志着全球41.4%的集群。根据在2013年6月发布的名单,InfiniBand是用来连接16 33 peta-scale系统能力。
如果java成为HPC社区的语言选择,其计算的性能的改善很大程度上需要提高与这些新的网络体系结构的通信性能。目前,没有内置的支持 Java 采取无限带宽互连通信能力效益互连。java应用程序依赖于上层协议(进行),IPoIB和SDP协议,运行在InfiniBand网络。
然而,IPoIB 和 SDP 有很高的开销,大大降低应用程序的通信性能。据张[7],在千兆以太网环境中,Java的延迟和带宽水准跟同行C非常接近,虽然有更高的CPU利用率。然而,因为 Java 只能运行在无限带宽使用 ULPs,无限带宽网络上的 Java 基准测试结果表明在带宽和延迟与 C 相比有很大的差距。
消息传递接口(MPI)被认为是建立在HPC硬件[10]的并行应用程序的事实标准。 MPI应用程序的性能和可扩展性严重依赖于运行在不同的群集节点上的进程之间交换消息的速率。C、 c 和 Fortran 主要是用于开发 MPI 应用程序的编程语言。但是,Java也提供了一个有吸引力的选择,因为它具有联网,多线程和内置安全功能的支持。在这种情况下,MPJ表达是一个流行的类似的库,目前实现了mpiJava 1.2 API[16]。软件能够执行两种模式。第一个模式称为集群模式是用于商品集群使用快速构建互连。第二模式称为多核模式时使用MPJ表达用于运行并行应用程序共享内存并行系统,如对称多处理器(smp)或多核处理器。在集群模式的背景下,当前版本的MPJ Express提供了两个传输层设备。有一个基于Java NIO的设备叫niodev面向以太网和Myrinet表达(MX)的基础设备称为mxdev Myrinet互连。
java消息传递库主要是提供便携式通信设备,而不是专注于开发在高速网络上进行通信的低一级设备。这导致与本机的 MPI 库相比性能较低。在为了获得最佳性能的群集中,是非常重要,有效地实施消息特别专有互连像无限带宽。
直到现在,MPJ Express可以通过IPoIB或SDP运行在一个IB网络。IPoIB 和 SDP 开通了性能测试。当MPJ Express是在群集配置40 Gbps的无限带宽网络(niodev)上运行、SDP提供7.4 Gbps的最大带宽的同时提供了一个名义上1.1 Gbps的 IPoIB。这主要是由于ULP的额外的开销。这些结果凸显了新的底层设备的重要性,我们称之为ibdev,它可以充分利用IB网络,并给予Java的网络应用合理的加速。 ibdev依赖于低级别动词API,而不是ULP的。这允许MPJ Express直接访问无限带宽通讯服务而大大提高通信性能。NPB是对评估高性能并行系统的性能的最知名的基准之一。
我们的绩效评估显示,MPJ Express使用ibdev的与使用IPoIB相比,一个字节的消息由51微秒降到到27微秒的延迟。另一方面, MPJ Express实现吞吐量为2兆字节的信息使用SDP只要7.4 Gbps,而使用ibdev则要16 Gbps。在MPJ Express的通信性能改善也描述了在NAS并行基准测试(NPB)的结果。NPB是对评估高性能并行系统的性能的最知名的基准之一,ibdev就ulp比较帮助MPJ Express获得更好的可伸缩性和加速效果。
本文的结构如下 ︰ 部分 2 概述了一些相关的工作。部分 3 介绍了食指表达高水平设计。部分 4 解释了我们的通信设备,ibdev 的体系结构和实现细节。节部分5 无限带宽群集上的性能结果进行了讨论。评价包括点对点微基准以及 NAS 平行基准。部分 7 给出的结论,并讨论了今后的工作。
2相关工作
本节讨论,已采取了提高性能的java应用程序运行在IB互连的最新方法。
FastMPJ[5]是支持共享存储器和高速网络的消息传递通信库。 FastMPJ包括通讯设备上的MX / Open-MX ,InfiniPath PSM和IB动词本地库。得到相似的性能的MPI库由高效的、可扩展的通信协议的实现,拓扑感知集体的原语,零拷贝协议避免缓冲开销,高效的共享内存通信使用线程。
mpiJava是Java中实现MPI操作的一个面向对象的接口。它是作为JNI包装原生MPI库的集合。mpiJava已闲置近几年但openmpi最近在他们新开发的主干的图书馆采取了集成然而,这些新的Java绑定只会与OpenMPI合作,因为这将需要巨大的努力来包装各种MPI库的功能。。
MPJ/Ibis [12] 在Java大论坛(JGF)MPJ API实现了Ibis网格编程平台。Ibis的灵活性允许集群上运行java消息传递应用程序而无需重新编译。所有必需的模块是通过各自的交流平台库在运行时加载。这个库可以使用“纯”Java通信,基于Java的套接字,或Myrinet的本地通讯。然而,MPJ/Ibis是不是线程安全和Myrinet的支持是基于具有比MX库中的性能较低的通用库。它也缺乏直接的InfiniBand支持和依靠ULP的对InfiniBand的运行。
Jdib[14]是一个Java包装InfiniBand动词的API。它通过直接使用通过Java本地接口(JNI)InfiniBand的RDMA机制来提供高性能。RDMA Jdib为Java开发人员提供了一个API。RDMA Jdib为Java开发人员提供了一个API。Jdib的主要缺点是它的低级别的AP会给每个调用带来一个JNI开销。对于动词API声明的每个结构,Jdib创建一个匹配的Java类,它的成员映射到对应的C结构的成员。
FastMPJ是目前最稳定和最成功的Java消息传递库。它是对InfiniBand的网络mpiJava1.2的非常有效的和高性能的实现,但它不是开源和一个需要购买许可证来使用它。然而,FastMPJ突出的好处在Java中实现支持低水平通信库。jdib也使用IB动词库但是API太低的水平,在很大程度上依赖于JNI每个操作在并行应用中有效地使用
3 Mpj Express设计和架构
MPJ Express具有层状结构,只要接口没有改变且需要,能够添加和更新交换层。图1是在MPJ Express软件各层的图。这部分是MPJ Express中的不同层的职责的概述。它突出,每个层提供到所述一个位于其上方的抽象
一个Java应用程序使用点至点和消息传递MPJ Express集体套路。这些程序运行在XDEV层依次调用mpjdev层。所述mpjdev层为高层通信API和低水平XDEV层之间的中间件;它实现了实际的网络设备。所述mpjdev层为高电平通信API和低电平XDEV层之间的中间件;它实现了实际的网络设备。
Figure 1: MPJ Express design including InfiniBand device
图1的XDEV层形成MPJ Express基础结构。这是基于设备驱动程序的概念,类似于MPICH。MPJ Express使用各种不同的通信设备上的更高级的操作,比如实现点对点和集体通信。这种方法允许不同的设备驱动程序的不同的互连,例如,java NIO,java I/O或Myrinet的表达。该XDEV API只包括点至点通信程序。它既有阻塞和非阻塞通信原语以及同步模式。xdev API如下表1中列出。可以看到,xdev API只有一些基本的点对点的原语是基于复杂的集体通信原语的更高层次。
图1中的两层,MPJ应用下层,形成消息传递API。它提供了一个接口,应用程序开发人员编写消息传递并行应用程序。该接口隐藏了所有底层实现细节。消息传递API包括点对点通信、集体交流,和一些工具比如传播者,流程拓扑和派生数据类型。
public abstract class Device {
//Initialization
ProcessID[] init(String[] args); ProcessID id();
//Blocking communication primitives
void send(Buffer buf, PID dest, int tag, int context); Status recv(Buffer buf, PID src, int tag, int context); void ssend(Buffer buf, PID dest, int tag, int context);
//Non-Blocking communication primitives
Request isend(Buffer buf, PID dest, int tag, int context); Request issend(Buffer buf, PID dest, int tag, int context);
Request irecv(Buffer buf, PID src, int tag, int context, Status s); Status probe(PID src, int tag, int context);
Status iprobe(PID src, int tag, int context); Request peek();
//Clean up resources void finish();
}
Table 1: xdev API
4 MPJ Express 的infiniband通信装置
本节提供了新的通信设备,ibdev的高层次设计。InfiniBand的通信模型的概述。
MPJ Express的通信基础设施(xdev)也有一个分层架构。第一层是新设备ibdev的定义。这是一个纯Java类
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[30983],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。