The heterogeneous parallel processing community has long been struggling to bring its approach to computation into the mainstream. One major impediment is that no popular programminglanguage supports a sufficiently w...
详细信息
ISBN:
(纸本)0818683651
The heterogeneous parallel processing community has long been struggling to bring its approach to computation into the mainstream. One major impediment is that no popular programminglanguage supports a sufficiently wide range of models of parallelism. The recent emergence of java as a popular programminglanguage may offer an opportunity to change this situation. This article begins with a review of the special linguistic and computational needs of heterogeneous parallel processing by considering the user communities that would benefit most from the approach. It then reviews the pros and cons of java as a language for Expressing and realizing heterogeneity and concludes with some possible changes that would make java more suitable for such use.
This paper describes a streaming mechanism that distributes java class bytecode streams to a client from a database server. Using the java linking model, the mechanism distributes a virtual application to a client'...
详细信息
ISBN:
(纸本)1932415408
This paper describes a streaming mechanism that distributes java class bytecode streams to a client from a database server. Using the java linking model, the mechanism distributes a virtual application to a client's process space allowing the deployment of dynamic component streams instead of static applications. Customized client class loaders request java components from a class server using dedicated socket ports. The class saver uses a 1(st)-order Markov probability model to effectively predict the client's next class request. Experimental results demonstrate that class prediction can deliver a class cache hit ratio of up to 35% using a modest cache size of 64 kb on the client, whereas a 16 kb cache delivers a hit ratio of 27% The model is designed to mitigate some of the distribution and deployment problems of monolithic application software and is useful for applications running on resource constrained mobile computing devices.
In this paper, we present the design of a novel multicore simulator called ParTejas. It is a fast shared memory based parallel simulator written in java. Unlike recently released parallel simulators that mainly rely o...
详细信息
ISBN:
(纸本)9781479936069
In this paper, we present the design of a novel multicore simulator called ParTejas. It is a fast shared memory based parallel simulator written in java. Unlike recently released parallel simulators that mainly rely on sampling, high level models, and highly relaxed synchronization, we primarily rely on novel concurrent data structures. In specific, we use a lock free parallel slot scheduler for synchronizing the accesses of multiple threads at a shared resource, and we use flexible barriers known as phasers to relax synchronization within bounds. We leverage additional language specific features of java, and demonstrate a mean speedup of 11. 8X (simulation speed of 4-8 MIPS) with 64 threads for a suite of Splash2 and Parsec benchmarks.
This paper is a progress report on our research into the problem of automatically identifying and using class invariants in object-oriented programs. We introduce an example of a class invariant in java, and review ap...
详细信息
ISBN:
(纸本)9781581134131
This paper is a progress report on our research into the problem of automatically identifying and using class invariants in object-oriented programs. We introduce an example of a class invariant in java, and review applications for class invariants in software engineering tools and in compiler optimization. We then focus on an elementary problem of definition: what is a class invariant? This question gives an interesting perspective on programminglanguage design. We conclude that there axe many reasonable categories of class invariants, and that the problem of finding good definitions cannot be solved by a thought experiment. The only way to choose good categories is to experiment with the analysis of real programs, to see which categories of class invariant axe actually useful. Our current research focuses on these experiments.
In this paper, we propose an environment for evolutionary prototyping technique, which is a theoretical framework based on abstract interpretation for java programs. In general, it is difficult to execute a prototype ...
详细信息
ISBN:
(纸本)0769520111
In this paper, we propose an environment for evolutionary prototyping technique, which is a theoretical framework based on abstract interpretation for java programs. In general, it is difficult to execute a prototype in the intermediate stage of top-down development. This disadvantage prevents us to find bugs in the early stage of the development. The technique we propose here allows programmers to execute the prototype as a whole, even though it is partially implemented. In the technique, an object is repeatedly changed with interface changes. Our idea is to use an earlier runnable object instead of an unimplemented later object in runtime. The changes of objects are based on abstract interpretation. However, it is necessary to realize the mechanism for using the alternative object including the interface changes in java. To solve this problem, we introduce proxy object, which is a mediator containing all interface and transform objects dynamically and automatically to keep execution going. Moreover, proxy objects can be automatically, generated by the dynamic proxy class API, which is one of java reflection mechanism. As a result, our environment would reduce the cost that programmers describe code for adjusting current objects.
J-Orchestra is an automatic partitioning system for java programs. J-Orchestra takes as input java applications in bytecode format and transforms them into distributed applications, running on distinct java Virtual Ma...
详细信息
ISBN:
(纸本)3540437592
J-Orchestra is an automatic partitioning system for java programs. J-Orchestra takes as input java applications in bytecode format and transforms them into distributed applications, running on distinct java Virtual Machines. To accomplish such automatic partitioning, J-Orchestra uses bytecode rewriting to substitute method calls with remote method calls, direct object references with proxy references, etc. Using J-Orchestra does not require great sophistication in distributed system methodology-the user only has to specify the network location of various hardware and software resources and their corresponding application classes. J-Orchestra has significant generality, flexibility, and degree of automation advantages compared to previous work on automatic partitioning. For instance, J-Orchestra can correctly partition almost any pure java program, allowing any application object to be placed on any machine, regardless of how application objects access each other and java system objects. This power is due to the novel way that J-Orchestra deals with unmodifiable code (e,g,, native code in the java system classes). Additionally, J-Orchestra offers support for object migration and run-time optimizations, like the lazy creation of distributed objects. We have used J-Orchestra to successfully partition several realistic applications including a command line shell, a ray tracer, and several applications with native dependencies (sound, graphics).
This paper presents a framework for writing parallel benchmark programs for Real-Time Specification for java (RTSJ) implementations that run on multi-processor platforms. The framework supports UMA and cc-NUMA archite...
详细信息
ISBN:
(纸本)9781424467259
This paper presents a framework for writing parallel benchmark programs for Real-Time Specification for java (RTSJ) implementations that run on multi-processor platforms. The framework supports UMA and cc-NUMA architectures such as those employed by the multi-core architectures in the recent years. It is written in java and features some JNI code needed for accessing OS services and special hardware instructions (e.g. for synchronization purposes). Essentially, the framework offers to the developer the means of setting a collection of parallel threads and its properties as well as various support services for thread synchronization or RTSJ asynchronous event handling support. The results of an initial evaluation of the framework using a particular RTSJ implementation are also presented in the paper.
Semantic code clones are regions of duplicated code that may appear dissimilar but compute similar functions. Since in general it is algorithmically undecidable whether two or more programs compute the same function, ...
详细信息
ISBN:
(纸本)9781509065950
Semantic code clones are regions of duplicated code that may appear dissimilar but compute similar functions. Since in general it is algorithmically undecidable whether two or more programs compute the same function, locating all semantic code clones is infeasible. One way to dodge the undecidability issue and find potential semantic clones, using only static information, is to search for recurring subgraphs of a program dependence graph (PDG). PDGs represent control and data dependence relationships between statements or operations in a program. PDG-based clone detection techniques, unlike syntactically-based techniques, do not distinguish between code fragments that differ only because of dependence-preserving statement re-orderings, which also preserve semantics. Consequently, they detect clones that are difficult to find by other means. Despite this very desirable property, work on PDG-based clone detection has largely stalled, apparently because of concerns about the scal-ability of the approach. We argue, however, that the time has come to reconsider PDG-based clone detection, as a part of a holistic strategy for clone management. We present evidence that its scalability problems are not as severe as previously thought. This suggests the possibility of developing integrated clone management systems that fuse information from multiple clone detection methods, including PDG-based ones.
Analysis of dynamic data structure usage is useful for both program understanding and for improving the accuracy of other program analyses. Static analysis techniques, however, suffer from reduced accuracy in complex ...
详细信息
ISBN:
(纸本)0769526012
Analysis of dynamic data structure usage is useful for both program understanding and for improving the accuracy of other program analyses. Static analysis techniques, however, suffer from reduced accuracy in complex situa tions, and do not necessarily give a clear picture of runtime heap activity. We have designed and implemented a dynamic heap analysis system that allows one to examine and analyze how java programs build and modify data structures. Using a complete execution trace from a profiled run of the program, we build an internal representation that mirrors the evolving runtime data structures. The resulting series of representations can then be analyzed and visualized, and we show how to use our approach to help understand how programs use data structures, the precise effect of garbage collection, and to establish limits on static data structure analysis. A deep understanding of dynamic data structures is particularly importantfor modem, object-oriented languages that make extensive use of heapbased data. structures.
AIJ (ACL2 In java) is a deep embedding in java of an executable, side-effect-free, non-stobj-accessing subset of the ACL2 language without guards. ATJ (ACL2 To java) is a simple java code generator that turns ACL2 fun...
详细信息
AIJ (ACL2 In java) is a deep embedding in java of an executable, side-effect-free, non-stobj-accessing subset of the ACL2 language without guards. ATJ (ACL2 To java) is a simple java code generator that turns ACL2 functions into AIJ representations that are evaluated by the AIJ interpreter. AIJ and ATJ enable possibly verified ACL2 code to run as, and interoperate with, java code, without much of the ACL2 framework or any of the Lisp runtime. The current speed of the resulting java code may be adequate to some applications.
暂无评论