Distributed computing has become increasingly popular in the high-performance community. java's remote method invocation (RMI) provides a simple, yet powerful method for implementing parallel algorithms. The perfo...
详细信息
Distributed computing has become increasingly popular in the high-performance community. java's remote method invocation (RMI) provides a simple, yet powerful method for implementing parallel algorithms. The performance of RMI has been less than adequate, however, and object serialization is often identified as a major performance inhibitor. We believe that object serialization is best performed in the java Virtual Machine (JVM), where information regarding object layout and hardware communication resources are readily available. We implement a subset of java's object serialization protocol in native code, using the java Native Interface (JNI) and JVM internals. Experiments show that our approach is up to eight times faster than java's original object serialization protocol for array objects. Also, for linked data structures our approach obtains a moderate speedup and better scalability. Evaluation of our object serialization implementation in an RMI framework indicates that a higher throughput can be obtained. parallel applications, written using RMI, obtain better speedups and scalability when this more efficient object serialization is used. Copyright (C) 2003 John Wiley Sons, Ltd.
作者:
Bacon, DFIBM Corp
Thomas J Watson Res Ctr Yorktown Hts NY 10598 USA
object-oriented programming languages have always distinguished between 'primitive' and 'user-defined' data types, and in the case of languages like C++ and java the primitives are not even treated as ...
详细信息
object-oriented programming languages have always distinguished between 'primitive' and 'user-defined' data types, and in the case of languages like C++ and java the primitives are not even treated as objects, further fragmenting the programming model. The distinction is especially problematic when a particular programming community requires primitive-level support for a new data type, as for complex, intervals, fixed-point numbers, and so on. We present Kava, a design for a backward-compatible version of java that solves the problem of programmable lightweight objects in a much more aggressive and uniform manner than previous proposals. In Kava, there are no primitive types;instead, object-oriented programming is provided down to the level of single bits, and types such as int can be explicitly programmed within the language. While the language maintains a uniform object reference semantics, efficiency is obtained by making heavy use of unboxing and semantic expansion. We describe Kava as a dialect of the java language, show how it can be used to define various primitive types, describe how it can be translated into java, and compare it to other approaches to lightweight objects. Copyright (C) 2003 John Wiley Sons, Ltd.
The computational science community is reluctant to write large-scale computationally-intensive applications in java due to concerns over java's poor performance, despite the claimed software engineering advantage...
详细信息
The computational science community is reluctant to write large-scale computationally-intensive applications in java due to concerns over java's poor performance, despite the claimed software engineering advantages of its object-oriented features. Naive java implementations of numerical algorithms can perform poorly compared to corresponding Fortran or C implementations. To achieve high performance, java applications must be designed with good performance as a primary goal. This paper presents the object-oriented design and implementation of two real-world applications from the field of computational fluid dynamics (CFD): a finite-volume fluid flow solver (LAURA, from NASA Langley Research Center) and an unstructured mesh adaptation algorithm (2D_TAG, from NASA Ames Research Center). This work builds on our previous experience with the design of high-performance numerical libraries in java. We examine the performance of the applications using the currently available java infrastructure and show that the java version of the flow solver LAURA performs almost within a factor of 2 of the original procedural version. Our java version of the mesh adaptation algorithm 2D-TAG performs within a factor of 1.5 of its original procedural version on certain platforms. Our results demonstrate that object-oriented software design principles are not necessarily inimical to high performance. Copyright (C) 2003 John Wiley Sons, Ltd.
The lack of direct support for multidimensional arrays in java(TM) has been recognized as a major deficiency in the language's applicability to numerical computing. It has been shown that, when augmented with mult...
详细信息
The lack of direct support for multidimensional arrays in java(TM) has been recognized as a major deficiency in the language's applicability to numerical computing. It has been shown that, when augmented with multidimensional arrays, java can achieve very high-performance for numerical computing through the use of compiler techniques and efficient implementations of aggregate array operations. Three approaches have been discussed in the literature for extending java with support for multidimensional arrays: class libraries that implement these structures;extending the java language with new syntactic constructs for multidimensional arrays that are directly translated to bytecode;and relying on the java Virtual Machine to recognize those arrays of arrays that are being used to simulate multidimensional arrays. This paper presents a balanced presentation of the pros and cons of each technique in the areas of functionality, language and virtual machine impact, implementation effort, and effect on performance. We show that the best choice depends on the relative importance attached to the different metrics, and thereby provide a common ground for a rational discussion and comparison of the techniques. Copyright (C) 2003 John Wiley Sons, Ltd.
We present a set of language extensions that improve the expressiveness and performance of java for scientific computation. The language extensions allow the manipulation of multi-dimensional arrays to be expressed mo...
详细信息
We present a set of language extensions that improve the expressiveness and performance of java for scientific computation. The language extensions allow the manipulation of multi-dimensional arrays to be expressed more naturally, and to be implemented more efficiently. Furthermore, data-parallel programming is supported, allowing efficient parallelization of a large class of operations on arrays. We also provide language extensions to construct specialized array representations, such as symmetric, block, and sparse matrices. These extensions are: tuples, parameterized types, array subscript overloading, and the inline modifier. These extensions are not only useful in the construction of special array representations, but are also useful in their own right. Finally, we add complex numbers as a primitive type to the language. We evaluate our language extensions using performance results. We also compare relevant code fragments of our extended language with standard java implementations and language extensions proposed by others. Copyright (C) 2003 John Wiley Sons, Ltd.
The growing use in concurrent systems of languages that require garbage collection (GC), such as java, is raising practical interest in concurrent GC. Sapphire is a new algorithm for concurrent copying GC for java. It...
详细信息
The growing use in concurrent systems of languages that require garbage collection (GC), such as java, is raising practical interest in concurrent GC. Sapphire is a new algorithm for concurrent copying GC for java. It stresses minimizing the amount of time any given application thread may need to block to support the collector. In particular, Sapphire is intended to work well in the presence of a large number of application threads, on small- to medium-scale shared memory multiprocessors. Sapphire extends previous concurrent copying algorithms, and is most closely related to replicating copying collection, a GC technique in which application threads observe and update primarily the old copies of objects. The key innovations of Sapphire are: (1) the ability to 'flip' one thread at a time (changing the thread's view from the old copies of objects to the new copies), as opposed to needing to stop all threads and flip them at the same time;(2) exploiting java semantics and assuming any data races occur on volatile fields, to avoid a barrier on reads of non-volatile fields;and (3) working in concert with virtually any underlying (non-concurrent) copying collection algorithm. Copyright (C) 2003 John Wiley Sons, Ltd.
paralleljavaenvironments present challenging problems for performance tools because of java's rich language system and its multi-level execution platform combined with the integration of native-code application ...
详细信息
ISBN:
(纸本)9781581133592
paralleljavaenvironments present challenging problems for performance tools because of java's rich language system and its multi-level execution platform combined with the integration of native-code application libraries and parallel runtime software. In addition to the desire to provide robust performance measurement and analysis capabilities for the java language itself, the coupling of different software execution contexts under a uniform performance model needs careful consideration of how events of interest are observed and how cross-context parallel execution information is linked. This paper relates our experience in extending the TAU performance system to a paralleljava environment based on mpijava. We describe the complexities of the instrumentation model used, how performance measurements are made, and the overhead incurred. A paralleljava application simulating the game of Life is used to show the performance system's capabilities.
暂无评论