The javalanguage provides exceptions in order to handle errors gracefully. However, the presence of exception handlers complicate the job of a JIT (Just-in-Time) compiler, including optimizations and register allocat...
详细信息
ISBN:
(纸本)1581132883
The javalanguage provides exceptions in order to handle errors gracefully. However, the presence of exception handlers complicate the job of a JIT (Just-in-Time) compiler, including optimizations and register allocation, even though exceptions are rarely used in most programs. This paper describes some mechanisms for removing overheads imposed by the existence of exception handlers, including on-demand translation of exception handlers, which expose more optimization opportunities in normal flow. In addition, we also minimize the exception handling overhead for frequently thrown exceptions by jumping directly from the exception throwing point into the exception handler through a technique called exception handler prediction. Experiments show that the existence of exception handlers indeed does not interfere with the translation of normal flow using our exception handling mechanisms. Also, the results reveal that frequently thrown exceptions are efficiently handled with exception handler prediction.
The javaMonte language serves as a superset to the javalanguage developed by Sun Microsystems. A developer can code in javaMonte taking advantage of the features of a language targeting boundary value problems while ...
详细信息
The javaMonte language serves as a superset to the javalanguage developed by Sun Microsystems. A developer can code in javaMonte taking advantage of the features of a language targeting boundary value problems while at the same time integrating an OO language with cross-platform capabilities. The major objective in the design of javaMonte is to simplify coding using a more powerful tool in terms of having built-in types that support Monte Carlo simulation.
We describe a new approach to object replication in java, aimed at improving the performance of parallel programs. Our programming model allows the programmer to define groups of objects that can be replicated and upd...
详细信息
ISBN:
(纸本)1581132883
We describe a new approach to object replication in java, aimed at improving the performance of parallel programs. Our programming model allows the programmer to define groups of objects that can be replicated and updated as a whole, using totally-ordered broadcast to send update methods to all machines containing a copy. The model has been implemented in the Manta high-performance java system. Performance measurements on a Myrinet cluster show that the replication mechanism is efficient (e.g., updating 16 replicas of a simple object takes 68 microseconds, only slightly longer than the Manta RMI latency). Example applications that use object replication perform as fast as manually optimized versions based on RMI.
cJVM is a java Virtual Machine (JVM) which provides a single system image of a traditional JVM while executing in a distributed fashion on the nodes of a cluster, cJVM virtualizes the cluster, transparently distributi...
详细信息
ISBN:
(纸本)1581132883
cJVM is a java Virtual Machine (JVM) which provides a single system image of a traditional JVM while executing in a distributed fashion on the nodes of a cluster, cJVM virtualizes the cluster, transparently distributing the objects and threads of any pure java application. The aim of cJVM is to obtain improved scalability for java Server Applications by distributing the application's work among the cluster's computing resources. cJVM's architecture, its unique object model, thread and memory models were described in [6]. In this article we focus on the optimization techniques employed in cJVM to achieve high scalability. In particular, we focus on the techniques used to enhance locality thereby reducing the amount of communication generated by cJVM. In addition, we describe how communication overhead can be reduced by taking advantage of java semantics. Our optimization techniques are based on three principles. First, we employ a large number of mostly simple optimizations which address caching, locality of execution and object migration. Second, we take advantage of the java semantics and of common usage patterns in implementing the optimizations. Third, we use speculative optimizations, taking advantage of the fact that the cJVM run-time environment can correct false speculations. We have demonstrated the usefulness of these techniques on a large (10Kloc) java application, achieving 80% efficiency on a four-node cluster. This paper discusses the various techniques used and reports our results.
We study the effectiveness of garbage collection (GC) algorithms by measuring the time difference between the actual collection time of an object and the potential earliest collection time for that object. Our ultimat...
详细信息
ISBN:
(纸本)1581132638
We study the effectiveness of garbage collection (GC) algorithms by measuring the time difference between the actual collection time of an object and the potential earliest collection time for that object. Our ultimate goal is to use this study in order to develop static analysis techniques that can be used together with GC to allow earlier reclamation of objects. The results may also be used to pinpoint application source code that could be rewritten in a way that would allow more timely GC. Specifically, we compare the objects reachable from the root set to the ones that are actually used again. The idea is that GC could reclaim unused objects even if they are reachable from the root set. Thus, our experiments indicate a kind of upper bound on storage savings that could be achieved. We also try to characterize these objects in order to understand the potential benefits of various static analysis algorithms. The java Virtual Machine (JVM) was instrumented to measure objects that are reachable, but not used again, and to characterize these objects. Experimental results are shown for the SPECjvm98 benchmark suite. The potential memory savings for these benchmarks range from 23% to 74%.
In this paper, we present an efficient and practical algorithm for inferring static types for local variables in a 3-address, stackless, representation of java bytecode. By decoupling the type inference problem from t...
详细信息
Current work on persistency in java does not consider the execution environment of the threads and this is one of the reasons why persistence has not been addressed by the java high-performance community. Equipping hi...
详细信息
ISBN:
(纸本)1581132883
Current work on persistency in java does not consider the execution environment of the threads and this is one of the reasons why persistence has not been addressed by the java high-performance community. Equipping high-performance computing systems with checkpointing and recovery mechanisms allows to minimise work loss in presence of failure. This paper discusses concepts for checkpointing and recovery of running java virtual machines (JVM). Checkpointing a JVM is to capture the execution state of the JVM and to make this state persistent. In order to recover the checkpointed execution state, it is necessary to reproduce the execution state and to resume the JVM. In other words checkpointing and recovery allows the reconstruction of a JVM at any arbitrary execution state. The checkpointing and recovery concepts have been prototypically implemented. The prototype provides generic mechanisms for extracting an execution state from a running JVM and for initialising a JVM with a persitent execution state. These mechanisms can be used for a wide range of applications. Our prototype also uses these mechanisms for JVM migration (relocation of a running JVM from one computer to another computer).
The transfer of medical data within heterogeneous hard-and software infrastructures requires platform-independent standardized protocols and data formats such as DICOM. To avoid costly vendor-specific solutions a DICO...
详细信息
ISBN:
(纸本)1586030639
The transfer of medical data within heterogeneous hard-and software infrastructures requires platform-independent standardized protocols and data formats such as DICOM. To avoid costly vendor-specific solutions a DICOM server was implemented in java thereby enabling the data access via internet browser technology. The most important patient and image acquisition information were extracted from the DICOM images and stored into a relational database. For an integrated view patient information such as radiological findings were transferred from the Radiological Information System (RIS) into the data base. Image data were accessed either by a fast preview tool or using a DICOM viewer. Since DICOM does not include inherent data security mechanisms, a second tool allowed the DICOM-conform encryption of DCIOM data for a secure long term storage on CD-R or across unsecure networks.
The slow execution speed and huge memory consumption caused by the current execution model of java have been major hindrances to its development. In this paper, we propose the compiling execution model of java and cre...
详细信息
java is quickly becoming the preferred language for writing distributed applications because of its inherent support for programming on distributed platforms. In particular, java provides compile-time and run-time sec...
详细信息
ISBN:
(纸本)1581132883
java is quickly becoming the preferred language for writing distributed applications because of its inherent support for programming on distributed platforms. In particular, java provides compile-time and run-time security, automatic garbage collection, inherent support for multithreading, support for persistent objects and object migration, and portability. Given these significant advantages of java, there is a growing interest in using java for high-performance computing applications. To be successful in the high-performance computing domain, however, java must have the capability to efficiently handle the significant I/O requirements commonly found in high-performance computing applications. While there has been significant research in high-performance I/O using languages such as C, C++, and Fortran, there has been relatively little research into the I/O capabilities of java. In this paper, we evaluate the I/O capabilities of java for high-performance computing. We examine several approaches that attempt to provide high-performance I/O - many of which are not obvious at first glance - and investigate their performance in both parallel and multithreaded environments. We also provide suggestions for expanding the I/O capabilities of java to better support the needs of high-performance computing applications.
暂无评论