- Parallel Computing and Optimization Techniques
- Distributed and Parallel Computing Systems
- Distributed systems and fault tolerance
- Advanced Data Storage Technologies
- Embedded Systems Design Techniques
- Logic, programming, and type systems
- Cloud Computing and Resource Management
- Interconnection Networks and Systems
- Software Engineering Research
- Software Testing and Debugging Techniques
- Numerical Methods and Algorithms
- Security and Verification in Computing
- Software System Performance and Reliability
- Formal Methods in Verification
- Advanced Database Systems and Queries
- Medical Imaging Techniques and Applications
- Peer-to-Peer Network Technologies
- Advanced MRI Techniques and Applications
- Algorithms and Data Compression
- Advanced Malware Detection Techniques
- Green IT and Sustainability
- Real-Time Systems Scheduling
- Advanced X-ray and CT Imaging
- Caching and Content Delivery
- Energy Efficient Wireless Sensor Networks
Purdue University West Lafayette
2011-2020
Institute of Electrical and Electronics Engineers
2006
University of Illinois Urbana-Champaign
1986-2005
University of California, Irvine
2005
IBM (United States)
1994-2003
IBM Research - Thomas J. Watson Research Center
1998-2002
National Center for Supercomputing Applications
1986
This paper presents a simple and efficient data flow algorithm for escape analysis of objects in Java programs to determine (i) if an object can be allocated on the stack; (ii) is accessed only by single thread during its lifetime, so that synchronization operations removed. We introduce new program abstraction analysis, connection graph, used establish reachability relationships between references. show graph summarized each method such same summary information may effectively different...
Automated localization of software bugs is one the essential issues in debugging aids. Previous studies indicated that evaluation history program predicates may disclose important clues about underlying bugs. In this paper, we propose a new statistical model-based approach, called SOBER, which localizes without any prior knowledge semantics. Unlike existing approaches select correlated with failures, SOBER models patterns both correct and incorrect runs respectively regards predicate as...
Despite their immense popularity in recent years, smartphones are and will remain severely limited by battery life. Preserving this critical resource has driven smartphone OSes to undergo a paradigm shift power management: default every component, including the CPU, stays off or an idle state, unless app explicitly instructs OS keep it on! Such policy encumbers developers juggle control APIs exported components on, during active use otherwise. The resulting power-encumbered programming...
Manual debugging is tedious, as well costly. The high cost has motivated the development of fault localization techniques, which help developers search for locations. In this paper, we propose a new statistical method, called SOBER, automatically localizes software faults without any prior knowledge program semantics. Unlike existing approaches that select predicates correlated with failures, SOBER models predicate evaluation in both correct and incorrect executions regards fault-relevant if...
The Cetus tool provides an infrastructure for research on multicore compiler optimizations that emphasizes automatic parallelization. infrastructure, which targets C programs, supports source-to-source transformations, is user-oriented and easy to handle, the most important parallelization passes as well underlying enabling techniques.
Translating program loops into a parallel form is one of the most important transformations performed by concurrentizing compilers. This transformation often requires insertion synchronization instructions within body concurrent loop. Several loop techniques are presented first. Compiler algorithms to generate for singly-nested then discussed. Finally, technique elimination redundant presented.
This paper makes two contributions to architectural support for software debugging. First, it proposes a novel statistics-based, on-the-fly bug detection method called PC-based invariant detection. The idea is based on the observation that, in most programs, given memory location typically accessed by only few instructions. Therefore, capturing of set PCs that normally access variable, we can detect accesses outlier instructions, which are often caused corruption, buffer overflow, stack...
First proposed as a mechanism for enhancing Web content, the Java™ language has taken off serious general-purpose programming language. Industry and academia alike have expressed great interest in using Java scientific engineering computations. Applications these domains are characterized by intensive numerical computing often very high performance requirements. In this paper we discuss techniques that lead to codes with comparable FORTRAN or C, more traditional languages field. The centered...
This article presents an escape analysis framework for Java to determine (1) if object is not reachable after its method of creation returns, allowing the be allocated on stack, and (2) only from a single thread during lifetime, unnecessary synchronization operations that removed. We introduce new program abstraction analysis, connection graph , used establish reachability relationships between objects references. show can succinctly summarized each such same summary information may in...
Automated localization of software bugs is one the essential issues in debugging aids. Previous studies indicated that evaluation history program predicates may disclose important clues about underlying bugs. In this paper, we propose a new statistical model-based approach, called SOBER, which localizes without any prior knowledge semantics. Unlike existing approaches select correlated with failures, SOBER models patterns both correct and incorrect runs respectively regards predicate as...
The rise of Java, C#, and other explicitly parallel languages has increased the importance compiling for different software memory models. This paper describes co-operating escape, thread structure, delay set analyses that enable high performance sequentially consistent programs.We compare a Java programs compiled sequential consistency (SC) with same weak consistency. For SC, we observe slowdown 10% on average an architecture based Intel Xeon processor, 26% IBM Power3.
In general, the hardware memory consistency model in a multiprocessor system is not identical to at programming language level. Consequently, must be mapped onto model. Memory fence instructions can inserted by compiler where needed accomplish this mapping. We have developed and implemented several insertion optimization algorithms our Pensieve project. present different techniques that were used guarantee sequential level, compare them using performance data. Our target two relaxed models...
We describe pHPF, an research prototype HPF compiler for the IBM SP series parallel machines. The accepts as input Fortran 90 and 77 programs, augmented with directives; sequential loops are automatically parallelized. supports symbolic analysis of expressions. This allows parameters such number processors to be unknown at compile-time without significantly affecting performance. Communication schedules computation guards generated in a parameterized form compile-time. Several novel...
Traditional compiler techniques developed for sequential programs do not guarantee the correctness (sequential consistency) of transformations when applied to parallel programs. This is because traditional compilers account updates a shared variable by different threads. We present concurrent static single assignment (CSSA) form containing cobegin/coend and constructs post/wait synchronization primitives. Based on CSSA form, we copy propagation dead code elimination techniques. Also, global...
A platform that supported Sequential Consistency (SC) for all codes --- not only the well-synchronized ones would simplify task of programmers. Recently, several hardware architectures support high-performance SC by committing groups instructions at a time have been proposed. However, to SC, it is insufficient does; compiler has as well.
Compiling for parallelism is a longstanding topic of compiler research. This book describes the fundamental principles compiling "regular" numerical programs parallelism. We begin with an explanation analyses that allow to understand interaction data reads and writes in different statements loop iterations during program execution. These include dependence analysis, use-def analysis pointer analysis. Next, we describe how results these are used enable transformations make loops more amenable...
Wireless reprogramming of sensor nodes is an essential requirement for long-lived networks since software functionality needs to be changed over time. During reprogramming, the number radio transmissions should minimized, time and energy depend chiefly on transmissions. In this article, we present a multihop incremental protocol called Zephyr that transfers delta between old new versions, lets rebuild using received software. reduces size by application-level modifications mitigate effects...
To maximally conserve the critical resource of battery energy, smartphone OSes implement an aggressive system suspend policy that suspends whole after a brief period user inactivity. This burdens developers with responsibility keeping on, or waking it up, to execute time-sensitive code. Developer mistakes in using explicit power management unavoidably give rise energy bugs, which cause significant, unexpected drain.
This paper presents the design and implementation of Quicksilver1 quasi-static compiler for Java. Quasi-static compilation is a new approach that combines benefits static dynamic compilation, while maintaining compliance with Java standard, including support its features. A relies on generation reuse persistent code images to reduce overhead during program execution, provide identical, testable reliable binaries over different executions. At runtime, adapts pre-compiled current JVM instance,...
Although there has been some experimentation with Java as a language for numerically intensive computing, is perception by many that the unsuited such work because of performance deficiencies. In this article we show how optimizing array bounds checks and null pointer creates loop nests on which aggressive optimizations can be used. Applying these hand to simple matrix-multiply test case leads Java-compliant programs whose in excess 500 Mflops four-processor 332MHz RS/6000 model F50...