Demo Data from EDBT 2026 / reviewers in the wild / expert
Samuel P. Midkiff
dblp:95/2438
· DBLP profile ↗
54ranked-venue papers
7as first author
0since 2021 · last 2019
0000-0003-0246-7192ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 41 · 7 first-authorSoftware engineering, systems software and programming languages · 9Computer networks · 2Security and privacy · 1Graphics, computer vision, multimedia, augmented reality and games · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Computer architecture, parallel and distributed computing, and storage systems
17 papers |
High-performance computing · 36% Parallel and multicore computing · 34% Energy-efficient computing · 7% | |
| Software engineering, system software, and programming languages
20 papers |
Concurrent programming · 25% Compilers and program optimization · 21% Program analysis · 20% | |
| Interdisciplinary, comprehensive, and emerging computing
2 papers |
Medical and health informatics · 100% | |
| Network and information security
2 papers |
Web and mobile security · 72% Systems and software security · 28% |
Topics — the 30 heaviest of 76, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Parallel and multicore computing
parallel computing |
0.9 | 4 | 2019 | Consensus equilibrium framework for super-resolution and extreme-scale CT reconstruction · SC 2019 Massively parallel 3D image reconstruction · SC 2017 High performance model based image reconstruction · PPoPP 2016 |
High-performance computing › scientific computing systems
X-ray CT reconstruction |
0.9 | 3 | 2019 | Consensus equilibrium framework for super-resolution and extreme-scale CT reconstruction · SC 2019 Massively parallel 3D image reconstruction · SC 2017 High performance model based image reconstruction · PPoPP 2016 |
High-performance computing
scientific computing systems |
0.7 | 2 | 2019 | Consensus equilibrium framework for super-resolution and extreme-scale CT reconstruction · SC 2019 Massively parallel 3D image reconstruction · SC 2017 |
Medical and health informatics
medical imaging |
0.4 | 2 | 2017 | Model-based Iterative CT Image Reconstruction on GPUs · PPoPP 2017 High performance model based image reconstruction · PPoPP 2016 |
Medical and health informatics › medical imaging
tomographic reconstruction |
0.3 | 1 | 2017 | Model-based Iterative CT Image Reconstruction on GPUs · PPoPP 2017 |
GPUs and heterogeneous computing
GPU computing |
0.3 | 1 | 2017 | Model-based Iterative CT Image Reconstruction on GPUs · PPoPP 2017 |
Web and mobile security › mobile security
smartphone security |
0.2 | 1 | 2016 | Unsafe Time Handling in Smartphones · USENIX ATC 2016 |
Parallel and multicore computing › locality optimization
data locality optimization |
0.2 | 1 | 2016 | High performance model based image reconstruction · PPoPP 2016 |
High-performance computing
scientific computing |
0.2 | 1 | 2016 | High performance model based image reconstruction · PPoPP 2016 |
Parallel and multicore computing
parallel programming models |
0.2 | 3 | 2012 | A hybrid approach of OpenMP for clusters · PPoPP 2012 Expressing and exploiting concurrency in networked applications with aspen · PPoPP 2007 An HPF Compiler for the IBM SP2 · SC 1995 |
Concurrent programming
atomicity |
0.2 | 2 | 2010 | Using data structure knowledge for efficient lock generation and strong atomicity · PPoPP 2010 Automatic atomic region identification in shared memory SPMD programs · OOPSLA 2010 |
Image and video processing
super-resolution |
0.2 | 2 | 2019 | Consensus equilibrium framework for super-resolution and extreme-scale CT reconstruction · SC 2019 Massively parallel 3D image reconstruction · SC 2017 |
Operating systems › mobile systems › mobile operating systems
mobile OS power management |
0.2 | 2 | 2013 | What is keeping my phone awake?: characterizing and detecting no-sleep energy bugs in smartphone apps · MobiSys 2012 Hypnos: understanding and treating sleep conflicts in smartphones · EuroSys 2013 |
Energy-efficient computing
energy management |
0.2 | 1 | 2013 | Hypnos: understanding and treating sleep conflicts in smartphones · EuroSys 2013 |
Energy-efficient computing › energy management
smartphone energy management |
0.2 | 1 | 2013 | Hypnos: understanding and treating sleep conflicts in smartphones · EuroSys 2013 |
Debugging and program repair
fault localization |
0.2 | 3 | 2006 | Statistical Debugging: A Hypothesis Testing-Based Approach · IEEE Trans. Software Eng. 2006 SOBER: statistical model-based bug localization · ESEC/SIGSOFT FSE 2005 AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based Invariants · MICRO 2004 |
Program analysis
static analysis |
0.2 | 2 | 2010 | Automatic atomic region identification in shared memory SPMD programs · OOPSLA 2010 Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003 |
Compilers and program optimization › parallelization
automatic parallelization |
0.1 | 1 | 2012 | A hybrid approach of OpenMP for clusters · PPoPP 2012 |
Software testing › fault detection
energy bug detection |
0.1 | 1 | 2012 | What is keeping my phone awake?: characterizing and detecting no-sleep energy bugs in smartphone apps · MobiSys 2012 |
Parallel and multicore computing › parallel programming models › directive-based programming
OpenMP |
0.1 | 1 | 2012 | A hybrid approach of OpenMP for clusters · PPoPP 2012 |
Distributed systems
fault tolerance |
0.1 | 3 | 2006 | Grid resource management - CycleMeter: detecting fraudulent peers in internet cycle sharing · SC 2006 Trust but verify: monitoring remotely executing programs for progress and correctness · PPoPP 2005 A Checkpointing Strategy for Scalable Recovery on Distributed Parallel Systems · SC 1997 |
Concurrent programming › atomicity
strong atomicity |
0.1 | 1 | 2010 | Using data structure knowledge for efficient lock generation and strong atomicity · PPoPP 2010 |
Processor architecture and microarchitecture › chip multiprocessor
cell processor |
0.1 | 1 | 2010 | Modeling advanced collective communication algorithms on cell-based systems · PPoPP 2010 |
High-performance computing
collective communication |
0.1 | 1 | 2010 | Modeling advanced collective communication algorithms on cell-based systems · PPoPP 2010 |
Memory systems
memory consistency |
0.1 | 1 | 2009 | BulkCompiler: high-performance sequential consistency through cooperative compiler and hardware support · MICRO 2009 |
Memory systems › memory consistency › memory consistency model
sequential consistency |
0.1 | 1 | 2009 | BulkCompiler: high-performance sequential consistency through cooperative compiler and hardware support · MICRO 2009 |
Distributed systems
grid computing |
0.1 | 2 | 2006 | Trust but verify: monitoring remotely executing programs for progress and correctness · PPoPP 2005 Grid resource management - CycleMeter: detecting fraudulent peers in internet cycle sharing · SC 2006 |
Parallel and multicore computing › parallel programming models
dataflow programming |
0.1 | 1 | 2007 | Expressing and exploiting concurrency in networked applications with aspen · PPoPP 2007 |
Parallel and multicore computing › parallel computing
parallel programming languages |
0.1 | 1 | 2007 | Expressing and exploiting concurrency in networked applications with aspen · PPoPP 2007 |
Parallel and multicore computing › parallelization strategies
task-level parallelism |
0.1 | 1 | 2007 | Expressing and exploiting concurrency in networked applications with aspen · PPoPP 2007 |
Methods — techniques the papers use, named apart from their topics
model-based iterative reconstruction · 1.3consensus equilibrium · 0.8supervoxels · 0.6memory coalescing · 0.6data layout transformation · 0.6time handling · 0.5super-voxel buffering · 0.5prefetching · 0.5parallelization · 0.5power management analysis · 0.3runtime data flow analysis · 0.1data affinity optimization · 0.1lock generation · 0.1data structure knowledge · 0.1directed graph program representation · 0.1connection graph · 0.1sampling · 0.1hypothesis testing · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Consensus equilibrium framework for super-resolution and extreme-scale CT reconstructionabstractComputed tomography (CT) image reconstruction is a crucial technique for many imaging applications. Among various reconstruction methods, Model-Based Iterative Reconstruction (MBIR) enables super-resolution with superior image quality. MBIR, however, has a high memory requirement that limits the achievable image resolution, and the parallelization for MBIR suffers from limited scalability. In this paper, we propose Asynchronous Consensus MBIR (AC-MBIR) that uses Consensus Equilibrium (CE) to provide a super-resolution algorithm with a small memory footprint, low communication overhead and a high scalability. Super-resolution experiments show that AC-MBIR has a 6.8 times smaller memory footprint and 16 times more scalability, compared with the state-of-the-art MBIR implementation, and maintains a 100% strong scaling efficiency at 146880 cores. In addition, AC-MBIR achieves an average bandwidth of 3.5 petabytes per second at 587520 cores. Xiao Wang 0004, Venkatesh Sridhar, Zahra Ronaghi, Rollin C. Thomas, Jack Deslippe, Dilworth Parkinson, Gregery T. Buzzard, Samuel P. Midkiff, Charles A. Bouman, Simon K. Warfield |
SC | 8 |
| 2018 | Optimizing data layout and system configuration on FPGA-based heterogeneous platformsabstractThe most attractive feature of field-programmable gate arrays (FPGAs) is their configuration flexibility. However, if the configuration is performed manually, this flexibility places a heavy burden on system designers to choose among a vast number of configuration parameters and program transformations. In this paper, we improve the state-of-the-art with two main innovations: First, we apply compiler-automated transformations to the data layout and program statements to create streaming accesses. Such accesses are turned into streaming interfaces when the kernels are implemented in hardware, allowing the kernels to run efficiently. Second, we use two-step mixed integer programming to first minimize the execution time and then to minimize energy dissipation. Configuration parameters are chosen automatically, including several important ones omitted by existing models. Experimental results demonstrate significant performance gains and energy savings using these techniques. Hou-Jen Ko, Zhiyuan Li 0001, Samuel P. Midkiff |
ICCAD | 3 |
| 2017 | Model-based Iterative CT Image Reconstruction on GPUsabstractComputed Tomography (CT) Image Reconstruction is an important technique used in a variety of domains, including medical imaging, electron microscopy, non-destructive testing and transportation security. Model-based Iterative Reconstruction (MBIR) using Iterative Coordinate Descent (ICD) is a CT algorithm that produces state-of-the-art results in terms of image quality. However, MBIR is highly computationally intensive and challenging to parallelize, and has traditionally been viewed as impractical in applications where reconstruction time is critical. We present the first GPU-based algorithm for ICD-based MBIR. The algorithm leverages the recently-proposed concept of SuperVoxels, and efficiently exploits the three levels of parallelism available in MBIR to better utilize the GPU hardware resources. We also explore data layout transformations to obtain more coalesced accesses and several GPU-specific optimizations for MBIR that boost performance. Across a suite of 3200 test cases, our GPU implementation obtains a geometric mean speedup of 4.43X over a state-of-the-art multi-core implementation on a 16-core iso-power CPU. Amit Sabne, Xiao Wang 0004, Sherman J. Kisner, Charles A. Bouman, Anand Raghunathan, Samuel P. Midkiff |
PPoPP | 6 |
| 2017 | Massively parallel 3D image reconstructionabstractComputed Tomographic (CT) image reconstruction is an important technique used in a wide range of applications. Among reconstruction methods, Model-Based Iterative Reconstruction (MBIR) is known to produce much higher quality CT images; however, the high computational requirements of MBIR greatly restrict their application. Currently, MBIR speed is primarily limited by irregular data access patterns, the difficulty of effective parallelization, and slow algorithmic convergence. Xiao Wang 0004, Amit Sabne, Putt Sakdhnagool, Sherman J. Kisner, Charles A. Bouman, Samuel P. Midkiff |
SC | 6 |
| 2016 | Fast voxel line update for time-space image reconstructionabstractModel based iterative reconstruction (MBIR) algorithms have been used to greatly improve image quality and temporal resolution in synchrotron based time-space Computed Tomography (CT). Among the various optimization methods that have been used for MBIR, iterative coordinate descent (ICD) has relatively lower computational requirements because it converges fast. In spite of that, long execution time remains a barrier for the widespread use of MBIR. In this paper, we present a new data structure, called VL-Buffer, for time-space reconstruction that significantly improves the cache locality while retaining good parallel performance. Experimental results show an average speedup of 40% using VL-Buffer. Xiao Wang 0004, K. Aditya Mohan, Sherman J. Kisner, Charles A. Bouman, Samuel P. Midkiff |
ICASSP | 5 |
| 2016 | High performance model based image reconstructionabstractComputed Tomography (CT) Image Reconstruction is an important technique used in a wide range of applications, ranging from explosive detection, medical imaging to scientific imaging. Among available reconstruction methods, Model Based Iterative Reconstruction (MBIR) produces higher quality images and allows for the use of more general CT scanner geometries than is possible with more commonly used methods. The high computational cost of MBIR, however, often makes it impractical in applications for which it would otherwise be ideal. This paper describes a new MBIR implementation that significantly reduces the computational cost of MBIR while retaining its benefits. It describes a novel organization of the scanner data into super-voxels (SV) that, combined with a super-voxel buffer (SVB), dramatically increase locality and prefetching, enable parallelism across SVs and lead to an average speedup of 187 on 20 cores. Xiao Wang 0004, Amit Sabne, Sherman J. Kisner, Anand Raghunathan, Charles A. Bouman, Samuel P. Midkiff |
PPoPP | 6 |
| 2016 | Unsafe Time Handling in Smartphones
Abhilash Jindal, Y. Charlie Hu, Samuel P. Midkiff, Prahlad Joshi |
USENIX ATC | 3 |
| 2015 | Workload-Driven VM Consolidation in Cloud Data CentersabstractVirtual machines hosted in virtualized data centers are important providers of computational resources in the era of cloud computing. Efficient scheduling of data centers' virtual machines can reduce the number of physical servers needed to host the virtual machines and, in turn, reduce the energy and other capital costs for maintaining the virtualized data centre. In this paper, we propose an innovative approach to achieve efficient pro-active VM scheduling. Our approach uses a multi-capacity bin packing technique that efficiently places VMs onto physical servers. We use time-series analysis techniques to extract not only low frequency information about future VM workloads but also high frequency information for VM workload correlations. We show that the proposed algorithms mathematically guarantee the VM scheduling meets the Service Level Objectives (SLO) and, moreover, guarantee statistically that the desired success probability of the SLO is met. Evaluation of our technique on production (real) workloads shows that our approach reduces by up to 15% the number of physical machines. We also see improvements of up to 18% for production workloads in machine utilization. Shuo Yang 0010, Samuel P. Midkiff |
IPDPS | 4 |
| 2013 | Hypnos: understanding and treating sleep conflicts in smartphonesabstractTo maximally conserve the critical resource of battery energy, smartphone OSes implement an aggressive system suspend policy that suspends the whole system after a brief period of user inactivity. This burdens developers with the responsibility of keeping the system on, or waking it up, to execute time-sensitive code. Developer mistakes in using the explicit power management unavoidably give rise to energy bugs, which cause significant, unexpected battery drain. Abhilash Jindal, Abhinav Pathak, Y. Charlie Hu, Samuel P. Midkiff |
EuroSys | 4 |
| 2013 | Automatic Problem Localization via Multi-dimensional Metric ProfilingabstractDebugging today's large-scale distributed applications is complex. Traditional debugging techniques such as breakpoint-based debugging and performance profiling require a substantial amount of domain knowledge and do not automate the process of locating bugs and performance anomalies. We present Orion, a framework to automate the problem-localization process in distributed applications. From a large set of metrics, Orion intelligently chooses important metrics and models the application's runtime behavior through pair wise correlations of those metrics in the system, within multiple non-overlapping time windows. When correlations deviate from those of a learned correct model due to a bug, our analysis pinpoints the metrics and code regions (class and method within it) that are most likely associated with the failure. We demonstrate our framework with several real-world failure cases in distributed applications such as: HBase, Hadoop DFS, a campus-wide Java application, and a regression testing framework from IBM. Our results show that Orion is able to pinpoint the metrics and code regions that developers need to concentrate on to fix the failures. Ignacio Laguna, Subrata Mitra, Fahad A. Arshad, Nawanol Theera-Ampornpunt, Zongyang Zhu, Saurabh Bagchi, Samuel P. Midkiff, Michael Kistler, Ahmed Gheith |
SRDS | 7 |
| 2012 | What is keeping my phone awake?: characterizing and detecting no-sleep energy bugs in smartphone appsabstractDespite their immense popularity in recent years, smartphones are and will remain severely limited by their battery life. Preserving this critical resource has driven smartphone OSes to undergo a paradigm shift in power management: by default every component, including the CPU, stays off or in an idle state, unless the app explicitly instructs the OS to keep it on! Such a policy encumbers app developers to explicitly juggle power control APIs exported by the OS to keep the components on, during their active use by the app and off otherwise. The resulting power-encumbered programming unavoidably gives rise to a new class of software energy bugs on smartphones called no-sleep bugs, which arise from mis-handling power control APIs by apps or the framework and result in significant and unexpected battery drainage. Abhinav Pathak, Abhilash Jindal, Y. Charlie Hu, Samuel P. Midkiff |
MobiSys | 4 |
| 2012 | A hybrid approach of OpenMP for clustersabstractWe present the first fully automated compiler-runtime system that successfully translates and executes OpenMP shared-address-space programs on laboratory-size clusters, for the complete set of regular, repetitive applications in the NAS Parallel Benchmarks. We introduce a hybrid compiler-runtime translation scheme. Compared to previous work, this scheme features a new runtime data flow analysis and new compiler techniques for improving data affinity and reducing communication costs. We present and discuss the performance of our translated programs, and compare them with the performance of the MPI, HPF and UPC versions of the benchmarks. The results show that our translated programs achieve 75% of the hand-coded MPI programs, on average. Okwan Kwon, Fahed Jubair, Rudolf Eigenmann, Samuel P. Midkiff |
PPoPP | 4 |
| 2011 | Efficient incremental code update for sensor networksabstractWireless 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 of radio transmissions should be minimized, since reprogramming time and energy depend chiefly on the number of radio transmissions. In this article, we present a multihop incremental reprogramming protocol called Zephyr that transfers the delta between old and new software versions, and lets the sensor nodes rebuild the new software using the received delta and the old software. Zephyr reduces the delta size by using application-level modifications to mitigate the effects of function shifts. Then it compares the two binary images at the byte level to generate a small delta, that is then sent over the wireless network to all the nodes. For the wide range of software change cases that we used as benchmarks, Zephyr transfers 1.83 to 1987 times less traffic through the network than Deluge (the standard nonincremental reprogramming protocol for TinyOS) and 1.14 to 49 times less traffic than an existing incremental reprogramming protocol by Jeong and Culler [2004]. Rajesh Krishna Panta, Saurabh Bagchi, Samuel P. Midkiff |
ACM Trans. Sens. Networks | 3 |
| 2010 | Automatic atomic region identification in shared memory SPMD programsabstractThis paper presents TransFinder, a compile-time tool that automatically determines which statements of an unsynchronized multithreaded program must be enclosed in atomic regions to enforce conflict-serializability. Unlike previous tools, TransFinder requires no programmer input (beyond the program) and is more efficient in both time and space. Gautam Upadhyaya, Samuel P. Midkiff, Vijay S. Pai |
OOPSLA | 2 |
| 2010 | Modeling advanced collective communication algorithms on cell-based systemsabstractThis paper presents and validates performance models for a varietyvof high-performance collective communication algorithms for systems with Cell processors. The systems modeled include a single Cell processor, two Cell chips on a Cell Blade, and a cluster of Cell Blades. The models extend PLogP, the well-known point-topoint performance model, by accounting for the unique hardware characteristics of the Cell (e.g., heterogeneous interconnects and DMA engines) and by applying the model to collective communication. This paper also presents a micro-benchmark suite to accurately measure the extended PLogP parameters on the Cell Blade and then uses these parameters to model different algorithms for the barrier, broadcast, reduce, all-reduce, and all-gather collective operations. Out of 425 total performance predictions, 398 of them see less than 10% error compared to the actual execution time and all of them see less than 15%. Qasim Ali 0001, Samuel P. Midkiff, Vijay S. Pai |
PPoPP | 2 |
| 2010 | Using data structure knowledge for efficient lock generation and strong atomicityabstractTo achieve high-performance on multicore systems, sharedmemory parallel languages must efficiently implement atomic operations. The commonly used and studied paradigms for atomicity are fine-grained locking, which is both difficult to program and error-prone; optimistic software transactions, which require substantial overhead to detect and recover from atomicity violations; and compiler-generation of locks from programmer-specified atomic sections, which leads to serialization whenever imprecise pointer analysis suggests the mere possibility of a conflicting operation. This paper presents a new strategy for compiler-generated locking that uses data structure knowledge to facilitate more precise alias and lock generation analyses and reduce unnecessary serialization. Implementing and evaluating these ideas in the Java language shows that the new strategy achieves eight-thread speedups of 0.83 to 5.9 for the five STAMP benchmarks studied, outperforming software transactions on all but one benchmark, and nearly matching programmer-specified fine-grained locks on all but one benchmark. The results also indicate that compiler knowledge of data structures improves the effectiveness of compiler analysis, boosting eight-thread performance by up to 300%. Further, the new analysis allows for software support of strong atomicity with less than 1% overhead for two benchmarks and less than 20% for three others.The strategy also nearly matches the performance of programmer-specified fine-grained locks for the SPECjbb2000 benchmark, which has traditionally not been amenable to static analyses. Gautam Upadhyaya, Samuel P. Midkiff, Vijay S. Pai |
PPoPP | 2 |
| 2009 | Efficient high performance collective communication for the cell bladeabstractThis paper presents high-performance collective communication algorithms and implementations that exploit the unique architectural features of the Cell heterogeneous multicore processor. This paper specifically describes novel algorithms for the barrier, broadcast, reduce, all-reduce, and all-gather collective operations, and shows the efficiency of these by comparing them to the previous Qasim Ali 0001, Samuel P. Midkiff, Vijay S. Pai |
ICS | 2 |
| 2009 | A parallel levenberg-marquardt algorithmabstractThis paper describes a parallel Levenberg-Marquardt algorithm that has been implemented as part of a larger system to support the kinetic modeling of polymer chemistry. The Levenberg-Marquardt algorithm finds a local minimum of a function by varying parameters of the function. The modeling system uses the algorithm to optimize the values of constants that describe the rate at which reactions proceed in a model of the chemical reaction. We present a detailed description of the Levenberg-Marquardt algorithm, and describe three levels of parallelization enabled by our algorithm. The performance and precision of our algorithm is compared to that of the IMSL package's implementation of the algorithm, using two models developed by the polymer chemistry research group at Purdue. Our experimental results show increased precision of the final result relative to the IMSL implementation. We also show good scaling with increased numbers of processors, compared to both a sequential version of our algorithm and against the IMSL implementation. Krista A. Novstrup, Ayush Goyal, Samuel P. Midkiff, James M. Caruthers |
ICS | 4 |
| 2009 | BulkCompiler: high-performance sequential consistency through cooperative compiler and hardware supportabstractA platform that supported Sequential Consistency (SC) for all codes --- not only the well-synchronized ones --- would simplify the task of programmers. Recently, several hardware architectures that support high-performance SC by committing groups of instructions at a time have been proposed. However, for a platform to support SC, it is insufficient that the hardware does; the compiler has to support SC as well. Wonsun Ahn, Shanxiang Qi, M. Nicolaides, Josep Torrellas, Jae-Woo Lee, Samuel P. Midkiff, David C. Wong 0001 |
MICRO | 7 |
| 2008 | Advanced collective communication in aspenabstractAspen is a programming language that relies on high-level messaging to support communication among different program tasks executing in parallel. Unlike MPI, the computational logic of Aspen tasks is specified and developed independently of the global communication structure of the program. A root module specifies the communication structure of the program. The semantics and generality of these specifications enable novel forms of collective communication, including asynchronous and concurrent collective operations and reduction type operations with subsets of the participants being receivers of the reduced data, and with receivers that do not provide data to the reduction. This paper describes efficient implementations of these and other collective communication operations in Aspen. We demonstrate the ease-of-use of these features using several code examples and quantify their performance impact through both microbenchmarks and a quantum chemistry code used in rubber chemistry. Aspen's performance is competitive with, or slightly better than, the performance of MPI implementations for both the chemistry application and the microbenchmarks. Qasim Ali 0001, Vijay S. Pai, Samuel P. Midkiff |
ICS | 3 |
| 2007 | An Optimizing Compiler for Parallel Chemistry SimulationsabstractWell designed domain specific languages enable the easy expression of problems, the application of domain specific optimizations, and dramatic improvements in productivity for their users. In this paper we describe a compiler for polymer chemistry, and in particular rubber chemistry, that achieves all of these goals. The compiler allows the development of a system of ordinary differential equations describing a complex rubber reaction - a task that used to require months - to be done in days. The generated code, like much machine generated code, is more complex than human written code, and stresses commercial compilers to the point of failure. However, because of knowledge of the form of ODEs generated, the compiler can perform specialized common sub-expression and other algebraic optimizations that simplifies the code sufficiently to allow it to be compiled (eliminating all but 6.9% of the operations in our largest program) and to provide five times faster performance on our largest benchmark codes. Ayush Goyal, Samuel P. Midkiff, James M. Caruthers |
IPDPS | 3 |
| 2007 | Expressing and exploiting concurrency in networked applications with aspenabstractThis paper presents Aspen, a high-level programming language thattargets both high-productivity programming and runtime support formanaging resources needed by a computation. Programs in Aspen arerepresented as directed graphs, where the edges are well-definedunidirectional communication channels and the nodes are instances of computational modules that process the incoming data. The resulting representation of a program closely resembles a flow chart describing the flow of computation in a server application and exposing the communicationat a high level of abstraction. This strategy for program composition naturally allows parallelism and data sharing to be factored out of the core computational logic of a program, facilitating a division of labor between parallelism expertsand application experts and also easing code development and maintenance. Aspen automatically and transparently supports task-level parallelism among module instancesand data-level parallelism across different flows in an application or, in some cases, across different work items within a flow. Aspen automatically and adaptively allocates threads to modules according to the dynamic workload seen at those modules. Gautam Upadhyaya, Vijay S. Pai, Samuel P. Midkiff |
PPoPP | 3 |
| 2007 | Practical escape analyses: how good are they?abstractA key analysis developed for the compilation of parallel programs is thread escape analysis (hereafter referred to as escape analysis), which determines what objects are accessed in more than one thread, and which references within a program are references to such objects. Escape analysis has several important client optimizations: identifying objects on which races may exist, identifying locks that can be removed, identifying heap allocated objects referenced within a single thread, and compiling for strict memory models. While the effectiveness of individual escape analyses has been measured for different client optimizations, there has been no effort to compare the effectiveness of the different escape analyses over all the different clients. Nor has therebeen any attempt to develop a perfect escape analysis and measure how far from it the different escape analyses are. This paper presents a perfect escape analysis for specific runs of Java programs, which tracks all possibly escaping objects at runtime, and determines precisely which ones escape. It uses a caching technique to reduce the time and space needed for collecting access information by 8 times and 48 times, respectively, relative to not using the caching technique. We compare the perfect escape analysis results with the results from the practical escape analyses, using the four clients above or metrics that are significant for those clients. From this comparison we conclude that the relative precision of different escape analyses changes with different clients and that the most precise analysis for each client is "close enough" to the perfect analysis for three out of the four clients. Kyungwoo Lee, Samuel P. Midkiff |
VEE | 3 |
| 2006 | A two-phase escape analysis for parallel java programsabstractThread escape analysis conservatively determines which objects may be accessed in more than one thread. Thread escape analysis is useful for a variety of purposes—finding races in multi-threaded programs, removing useless synchronization, allocating data to thread-local heaps, and compiling to target more strict consistency models. Thread escape analyses are often interprocedural, and interprocedural analyses are generally either too slow to perform at runtime in dynamic systems, or trade-off significant amounts of precision for speed. This paper describes a two-phase offline/online interprocedural and inter thread escape analysis that is faster and more accurate, on average, than previously published analyses. By performing an offline pre-analysis followed by a dynamic online analysis that integrates offline results with dynamic information, significant improvements in performance and accuracy are achieved. For compiling Java programs under a sequentially consistent memory model, our approach enables application executions that are, on average, 1.5 times faster than those using the previous fastest online algorithm, with only 80% of the online compilation time. Kyungwoo Lee, Samuel P. Midkiff |
PACT | 2 |
| 2006 | Argus: Online Statistical Bug Detection
Long Fei, Kyungwoo Lee, Samuel P. Midkiff |
FASE | 4 |
| 2006 | Monitoring remotely executing shared memory programs in software DSMsabstractPeer-to-peer (P2P) cycle sharing over the Internet has become increasingly popular as a way to share idle cycles. A fundamental problem faced by P2P cycle sharing systems is how to incrementally monitor and verify, with low overhead, the execution of jobs submitted to a remote untrusted hosting machine, or cluster of machines. In this paper, we present the design and implementation of GripCop DSM, a novel incremental execution monitoring and verification scheme for software distributed shared memory (SDSM) programs running on remote clusters. Our scheme maximally leverages the shared memory abstraction provided by the SDSM system by extending the shared memory abstraction to the monitoring process by replicating one of the processes running on the host cluster to verify intermediate results at runtime. Our GripCop DSM employs two monitoring schemes: (i) a full-scale monitoring scheme that completely replicates the computation of a process running on the cluster; and (ii) a decoy monitoring scheme that deceives the host cluster into believing that full-scale monitoring is being performed without it ever actually being done, thereby incurring negligible overhead. Experiments show that the combined use of full-scale and decoy monitoring ensures faithful execution with low performance impact, even over a wide area network Long Fei, Y. Charlie Hu, Samuel P. Midkiff |
IPDPS | 4 |
| 2006 | Artemis: practical runtime monitoring of applications for execution anomaliesabstractA number of hardware and software techniques have been proposed to detect dynamic program behaviors that may indicate a bug in a program. Because these techniques suffer from high overheads they are useful in finding bugs in programs before they are released, but are significantly less useful in finding bugs in long-running programs on production systems -- the same bugs that are the most difficult to find using traditional techniques. In this paper we propose the Artemis1 is the Greek goddess of the hunt and wild animals. Our framework guides the hunt for wild bugs. compiler-based instrumentation framework that complements many pre-existing runtime monitoring techniques. The Artemis framework guides baseline monitoring techniques toward regions of the program where bugs are likely to occur, yielding a low asymptotic monitoring overhead. Artemis also facilitates system-load aware runtime monitoring that allows the monitoring coverage to be dynamically scaled up to take advantage of extra cycles when the system load is low, and dynamically scaled down to monitor only the most suspicious regions when the system load is high. Our experiments show that Artemis' asymptotic overhead can outperform the performance floor overhead of random sampling for many tools, and that Artemis can effectively guide a monitoring tool to the buggy regions of a program. Our experimental results show that Artemis applied to a hardware-based PC-invariance monitoring scheme and a value-based invariance detection and checking scheme significantly improves their runtime monitoring overhead (by up to 4.6 times) with moderate impact on their bug-detecting capabilities. Long Fei, Samuel P. Midkiff |
PLDI | 2 |
| 2006 | Grid resource management - CycleMeter: detecting fraudulent peers in internet cycle sharingabstractInternet cycle sharing systems that utilize idle computing resources dramatically increase the available resources for high performance computing. Fraudulent resource providers, however, can subvert these systems. While previous research has investigated protection against resource providers that return bad results, we consider a different fraudulent behavior -- cycle short-changing -- in which the resource provider faithfully executes the submitted job, but using a smaller percentage of the CPU resources than he/she promises. To detect this short-changing, we propose CycleMeter, a tool that allows a remotely executing application to accurately monitor the percentage of CPU resources it is utilizing throughout its execution period. CycleMeter employs a microbenchmark to measure the instantaneous CPU utilization of the application, and employs a simple and practical mechanism for embedding the microbenchmark into the application. Our experimental results on three operating systems and uniprocessor and multiprocessor machines show that CycleMeter is portable, incurs a low overhead, and is highly effective in detecting a spectrum of cycle shortchanging behavior. Zheng Zhang 0009, Y. Charlie Hu, Samuel P. Midkiff |
SC | 3 |
| 2006 | A Fair, Secure and Trustworthy Peer-to-Peer Based Cycle-Sharing System
Shuo Yang 0010, Ali Raza Butt, Y. Charlie Hu, Samuel P. Midkiff |
J. Grid Comput. | 5 |
| 2006 | Statistical Debugging: A Hypothesis Testing-Based ApproachabstractManual debugging is tedious, as well as costly. The high cost has motivated the development of fault localization techniques, which help developers search for fault locations. In this paper, we propose a new statistical method, called SOBER, which automatically localizes software faults without any prior knowledge of the program semantics. Unlike existing statistical approaches that select predicates correlated with program failures, SOBER models the predicate evaluation in both correct and incorrect executions and regards a predicate as fault-relevant if its evaluation pattern in incorrect executions significantly diverges from that in correct ones. Featuring a rationale similar to that of hypothesis testing, SOBER quantifies the fault relevance of each predicate in a principled way. We systematically evaluate SOBER under the same setting as previous studies. The result clearly demonstrates the effectiveness: SOBER could help developers locate 68 out of the 130 faults in the Siemens suite by examining no more than 10 percent of the code, whereas the cause transition approach proposed by Holger et al. [2005] and the statistical approach by Liblit et al. [2005] locate 34 and 52 faults, respectively. Moreover, the effectiveness of SOBER is also evaluated in an "imperfect world", where the test suite is either inadequate or only partially labeled. The experiments indicate that SOBER could achieve competitive quality under these harsh circumstances. Two case studies with grep 2.2 and bc 1.06 are reported, which shed light on the applicability of SOBER on reasonably large programs Chao Liu 0001, Long Fei, Xifeng Yan, Jiawei Han 0001, Samuel P. Midkiff |
IEEE Trans. Software Eng. | 5 |
| 2005 | Compiler techniques for high performance sequentially consistent java programsabstractThe rise of Java, C#, and other explicitly parallel languages has increased the importance of compiling for different software memory models. This paper describes co-operating escape, thread structure, and delay set analyses that enable high performance for sequentially consistent programs.We compare the performance of a set of Java programs compiled for sequential consistency (SC) with the performance of the same programs compiled for weak consistency. For SC, we observe a slowdown of 10% on average for an architecture based on the Intel Xeon processor, and 26% on average for an architecture based on the IBM Power3. Zehra Sura, David Chi-Leung Wong, Samuel P. Midkiff, Jaejin Lee, David A. Padua |
PPoPP | 4 |
| 2005 | Trust but verify: monitoring remotely executing programs for progress and correctnessabstractThe increased popularity of grid systems and cycle sharing across organizations requires scalable systems that provide facilities to locate resources, to be fair in the use of those resources, and to monitor jobs executing on remote systems. This paper describes the GridCop system which allows a computation on a remote, and potentially fraudulent, host system to be monitored for progress and execution correctness. A novel feature of our system is that it constructs cooperating submitter and host programs from the original program, and these programs allow both progress and execution correctness to be monitored with negligible overhead while providing protection against common fraudulent behaviors. Experimental results show that the overhead of this monitoring is low on both the submitting and host machines. We describe compiler algorithms that allow the required monitoring code to be automatically generated. Shuo Yang 0010, Ali Raza Butt, Y. Charlie Hu, Samuel P. Midkiff |
PPoPP | 4 |
| 2005 | SOBER: statistical model-based bug localizationabstractAutomated localization of software bugs is one of the essential issues in debugging aids. Previous studies indicated that the evaluation history of program predicates may disclose important clues about underlying bugs. In this paper, we propose a new statistical model-based approach, called SOBER, which localizes software bugs without any prior knowledge of program semantics. Unlike existing statistical debugging approaches that select predicates correlated with program failures, SOBER models evaluation patterns of predicates in both correct and incorrect runs respectively and regards a predicate as bug-relevant if its evaluation pattern in incorrect runs differs significantly from that in correct ones. SOBER features a principled quantification of the pattern difference that measures the bug-relevance of program predicates.We systematically evaluated our approach under the same setting as previous studies. The result demonstrated the power of our approach in bug localization: SOBER can help programmers locate 68 out of 130 bugs in the Siemens suite when programmers are expected to examine no more than 10% of the code, whereas the best previously reported is 52 out of 130. Moreover, with the assistance of SOBER, we found two bugs in bc 1.06 (an arbitrary precision calculator on UNIX/Linux), one of which has never been reported before. Chao Liu 0001, Xifeng Yan, Long Fei, Jiawei Han 0001, Samuel P. Midkiff |
ESEC/SIGSOFT FSE | 5 |
| 2004 | AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-Based InvariantsabstractThis 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, a given memory location is typically accessed by only a few instructions. Therefore, by capturing the invariant of the set of PCs that normally access a given variable, we can detect accesses by outlier instructions, which are often caused by memory corruption, buffer overflow, stack smashing or other memory-related bugs. Since this method is statistics-based, it can detect bugs that do not violate any programming rules and that, therefore, are likely to be missed by many existing tools. The second contribution is a novel architectural extension called the Check Look-aside Buffer (CLB). The CLB uses a Bloom filter to reduce monitoring overheads in the recently-proposed iWatcher architectural framework for software debugging. The CLB significantly reduces the overhead of PC-based invariant debugging. We demonstrate a PC-based invariant detection tool called AccMon that leverages architectural, run-time system and compiler support. Our experimental results with seven buggy applications and a total of ten bugs, show that AccMon can detect all ten bugs with few false alarms (0 for five applications and 2-8 for two applications) and with low overhead (0.24-2.88 times). Several existing tools evaluated, including Purify, CCured and value-based invariant detection tools, fail to detect some of the bugs. In addition, Purify's overhead is one order of magnitude higher than AccMon's. Finally, we show that the CLB is very effective at reducing overhead. Pin Zhou, Wei Liu 0014, Long Fei, Shan Lu 0001, Feng Qin 0003, Yuanyuan Zhou 0001, Samuel P. Midkiff, Josep Torrellas |
MICRO | 7 |
| 2004 | A compiler for multiple memory modelsabstractAbstract The design of consistency models for both hardware and software is a difficult task. For a programming language, it is particularly difficult because the target audience for a high‐level programming language is much wider than the target audience for a machine language, making usability a more important criterion. Exacerbating this problem is the reality that the programming language community has little experience designing programming language consistency models, and therefore each new attempt is very much a voyage into uncharted territory. A concrete example of the difficulties of the task is the current Java Memory Model. Although designed to be easy to use by Java programmers, it is poorly understood and at least one common idiom (the ‘double check idiom’) to exploit the model is unsafe. In this paper, we describe the design of an optimizing Java compiler that will accept either as input or as an interface implementation a consistency model for the code to be compiled. The compiler will use Shasha and Snir's delay set analysis, and our CSSA program representation to provide a canonical representation for the effects of different consistency models on optimizations and analysis. The compiler will serve as a testbed to prototype new memory models, and to measure the effects of different memory models on program performance. Copyright © 2004 John Wiley & Sons, Ltd. Samuel P. Midkiff, Jaejin Lee, David A. Padua |
Concurr. Comput. Pract. Exp. | 1 |
| 2003 | Automatic fence insertion for shared memory multiprocessingabstractIn general, the hardware memory consistency model in a multiprocessor system is not identical to the memory model at the programming language level. Consequently, the programming language memory model must be mapped onto the hardware memory model. Memory fence instructions can be inserted by the compiler where needed to accomplish this mapping. We have developed and implemented several fence insertion and optimization algorithms in our Pensieve compiler project. We present the different fence insertion optimization techniques that were used in this system to guarantee sequential consistency at the language level, and compare them using performance data. Our techniques target two hardware relaxed memory consistency models provided by SMPs based on IBM Power 3 and Intel Pentium 4. Our fence insertion optimization shows up to 17.2% and 32.7% performance improvement on average, with the IBM PowerPC and Intel Pentium 4 (Xeon) multiprocessors respectively. Jaejin Lee, Samuel P. Midkiff |
ICS | 3 |
| 2003 | Supporting multidimensional arrays in JavaabstractAbstract The lack of direct support for multidimensional arrays in JavaTM 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 © 2003 John Wiley & Sons, Ltd. José E. Moreira, Samuel P. Midkiff, Manish Gupta 0002 |
Concurr. Comput. Pract. Exp. | 2 |
| 2003 | Stack allocation and synchronization optimizations for Java using escape analysisabstractThis article presents an escape analysis framework for Java to determine (1) if an object is not reachable after its method of creation returns, allowing the object to be allocated on the stack, and (2) if an object is reachable only from a single thread during its lifetime, allowing unnecessary synchronization operations on that object to be removed. We introduce a new program abstraction for escape analysis, the connection graph , that is used to establish reachability relationships between objects and object references. We show that the connection graph can be succinctly summarized for each method such that the same summary information may be used in different calling contexts without introducing imprecision into the analysis. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the nonescaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in the user code in three out of the ten benchmarks (with a median of 19%); 11% to 92% of all mutex lock operations are eliminated in those 10 programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333-MHz PowerPC workstation with 512 MB memory. Jong-Deok Choi, Manish Gupta 0002, Mauricio J. Serrano, Vugranam C. Sreedhar, Samuel P. Midkiff |
ACM Trans. Program. Lang. Syst. | 5 |
| 2001 | A framework for efficient reuse of binary code in JavaabstractThis paper presents a compilation framework that enables efficient sharing of executable code across distinct Java Virtual Machine (JVM) instances. High-performance JVMs rely on run-time compilation, since static compilation cannot handle many dynamic features of Java. These JVMs suffer from large memory footprints and high startup costs, which are serious problems for embedded devices (such as hand held personal digital assistants and cellular phones) and scalable servers. A recently proposed approach called quasi-static compilation overcomes these difficulties by reusing precompiled binary images after performing validation checks and stitching on them (i.e., adapting them to a new execution context), falling back to interpretation or dynamic compilation whenever necessary. However, the requirement in our previous design to duplicate and modify the executable binary image for stitching is a major drawback when targeting embedded systems and scalable servers. In this paper, we describe a new approach that allows stitching to be done on an indirection table, leaving the executable code unmodified and therefore writable to readonly memory. On embedded devices, this saves precious space in writable memory. On scalable servers, this allows a single image of the executable to be shared among multiple JVMs, thus improving scalability. Furthermore, we describe a novel technique for dynamically linking classes that uses traps to detect when a class should be linked and initialized. Like back-patching, the technique allows all accesses after the first to proceed at full speed, but unlike back-patching, it avoids the modification of running code. We have implemented this approach in the Quicksilver quasi-static com- Pramod G. Joisha, Samuel P. Midkiff, Mauricio J. Serrano, Manish Gupta 0002 |
ICS | 2 |
| 2000 | Compilers for High Performance
Samuel P. Midkiff, Barbara M. Chapman, Jean-Francois Collard, Jens Knoop |
Euro-Par | 1 |
| 2000 | Automatic loop transformations and parallelization for JavaabstractFrom a software engineering perspective, the Java programming language provides an attractive platform for writing numerically intensive applications. A major drawback hampering its widespread adoption in this domain has been its poor performance on numerical codes. This paper describes a prototype Java compiler which demonstrates that it is possible to achieve performance levels approaching those of current state-of-the-art C, C++ and Fortran compilers on numerical codes. We describe a new transformation called alias versioning that takes advantage of the simplicity of pointers in Java. This transformation, combined with other techniques that we have developed, enables the compiler to perform high order loop transformations (for better data locality) and parallelization completely automatically. We believe that our compiler is the first to have such capabilities of optimizing numerical Java codes. We achieve, with Java, between 80 and 100% of the performance of highly optimized Fortran code in a variety of benchmarks. Furthermore, the automatic parallelization achieves speedups of up to 3.8 on four processors. Combining this compiler technology with packages containing the features expected by programmers of numerical applications would enable Java to become a serious contender for implementing new numerical applications. Pedro V. Artigas, Manish Gupta 0002, Samuel P. Midkiff, José E. Moreira |
ICS | 3 |
| 2000 | Quicksilver: a quasi-static compiler for JavaabstractThis paper presents the design and implementation of the Quicksilver1 quasi-static compiler for Java. Quasi-static compilation is a new approach that combines the benefits of static and dynamic compilation, while maintaining compliance with the Java standard, including support of its dynamic features. A quasi-static compiler relies on the generation and reuse of persistent code images to reduce the overhead of compilation during program execution, and to provide identical, testable and reliable binaries over different program executions. At runtime, the quasi-static compiler adapts pre-compiled binaries to the current JVM instance, and uses dynamic compilation of the code when necessary to support dynamic Java features. Our system allows interprocedural program optimizations to be performed while maintaining binary compatibility. Experimental data obtained using a preliminary implementation of a quasi-static compiler in the Jalapeño JVM clearly demonstrates the benefits of our approach: we achieve a runtime compilation cost comparable to that of baseline (fast, non-optimizing) compilation, and deliver the runtime program performance of the highest optimization level supported by the Jalapeño optimizing compiler. For the SPECjvm98 benchmark suite, we obtain a factor of 104 to 158 reduction in the runtime compilation overhead relative to the Jalapeño optimizing compiler. Relative to the better of the baseline and the optimizing Jalapeño compilers, the overall performance (taking into account both runtime compilation and execution costs) is increased by 9.2% to 91.4% for the SPECjvm98 benchmarks with size 100, and by 54% to 356% for the (shorter running) SPECjvm98 benchmarks with size 10. Mauricio J. Serrano, Rajesh Bordawekar, Samuel P. Midkiff, Manish Gupta 0002 |
OOPSLA | 3 |
| 2000 | From flop to megaflops: Java for technical computingabstractAlthough there has been some experimentation with Java as a language for numerically intensive computing, there is a perception by many that the language is unsuited for such work because of performance deficiencies. In this article we show how optimizing array bounds checks and null pointer checks creates loop nests on which aggressive optimizations can be used. Applying these optimizations by hand to a simple matrix-multiply test case leads to Java-compliant programs whose performance is in excess of 500 Mflops on a four-processor 332MHz RS/6000 model F50 computer. We also report in this article the effect that various optimizations have on the performance of six floating-point-intensive benchmarks. Through these optimizations we have been able to achieve with Java at least 80% of the peak Fortran performance on the same benchmarks. Since all of these optimizations can be automated, we conclude that Java will soon be a serious contender for numerically intensive computing. José E. Moreira, Samuel P. Midkiff, Manish Gupta 0002 |
ACM Trans. Program. Lang. Syst. | 2 |
| 1999 | Escape Analysis for JavaabstractThis 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) if an object is accessed only by a single thread during its lifetime, so that synchronization operations on that object can be removed. We introduce a new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references. We show that the connection graph can be summarized for each method such that the same summary information may be used effectively in different calling contexts. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the non-escaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in three out of the ten benchmarks (with a median of 19%), 11% to 92% of all lock operations are eliminated in those ten programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333 MHz PowerPC workstation with 128 MB memory. Jong-Deok Choi, Manish Gupta 0002, Mauricio J. Serrano, Vugranam C. Sreedhar, Samuel P. Midkiff |
OOPSLA | 5 |
| 1999 | Basic Compiler Algorithms for Parallel ProgramsabstractTraditional compiler techniques developed for sequential programs do not guarantee the correctness (sequential consistency) of compiler transformations when applied to parallel programs. This is because traditional compilers for sequential programs do not account for the updates to a shared variable by different threads. We present a concurrent static single assignment (CSSA) form for parallel programs containing cobegin/coend and parallel do constructs and post/wait synchronization primitives. Based on the CSSA form, we present copy propagation and dead code elimination techniques. Also, a global value numbering technique that detects equivalent variables in parallel programs is presented. By using global value numbering and the CSSA form, we extend classical common subexpression elimination, redundant load/store elimination, and loop invariant detection to parallel programs without violating sequential consistency. These optimization techniques are the most commonly used techniques for sequential programs. By extending these techniques to parallel programs, we can guarantee the correctness of the optimized program and maintain single processor performance in a multiprocessor environment. Jaejin Lee, David A. Padua, Samuel P. Midkiff |
PPoPP | 3 |
| 1999 | High Performance Computing with the Array Package for Java: A Case Study using Data MiningabstractThis paper discusses several techniques used in developing a parallel, production quality data mining application in Java.We started by developing three sequential versions of a product recommendation data mining application: (i) a Fortran 90 version used as a performance reference, (ii) a plain Java implementation that only uses the primitive array structures from the language, and (iii) a baseline Java implementation that uses our Array package for Java.This Array package provides parallelism at the level of individual Array and BLAS operations.Using this Array package, we also developed two parallel Java versions of the data mining application: one that relies entirely on the implicit parallelism provided by the Array package, and another that is explicitly parallel at the application level.We discuss the design of the Array package, as well as the design of the data mining application.We compare the trade-offs between performance and the abstraction level the different Java versions present to the application programmer.Our studies show that, although a plain Java implementation performs poorly, the Java implementation with the Array package is quite competitive in performance with Fortran.We achieve a single processor performance of 109 Mflops, or 91% of Fortran performance, on a 332 MHz PowerPC 604e processor.Both the implicitly and explicitly parallel forms of our Java implementations also parallelize well.On an SMP with four of those PowerPC processors, the implicitly parallel form achieves 290 Mflops with no effort from the application programmer, while the explicitly parallel form achieves 340 Mflops.1 José E. Moreira, Samuel P. Midkiff, Manish Gupta 0002, Rick Lawrence |
SC | 2 |
| 1998 | Dynamic Data Distribution and Processor Repartitioning for Irregularly Structured Computations
José E. Moreira, Vijay K. Naik, Samuel P. Midkiff |
J. Parallel Distributed Comput. | 3 |
| 1997 | A Checkpointing Strategy for Scalable Recovery on Distributed Parallel SystemsabstractIn this paper, we describe a new scheme for checkpointing parallel applications on message-passing scalable distributed memory systems. The novelty of our scheme is that a checkpointed application can be restored, from its checkpointed state, in a reconfigured form. Thus, a parallel application may be checkpointed while executing with t1 tasks on p1 processors, and then restarted from the checkpointed state with t2 tasks on p2 processors. As a result, applications can recover from partial failures in the underlying system. Also, the reconfigurable checkpointed states can be migrated from one parallel system to another even if they do not have the same number of processors. We describe a new programming model for implementing a reconfigurable checkpointing scheme for parallel programs. This new model is derived from the DRMS programming model, developed in the context of run-time reconfiguration of parallel applications. A key component of our implementation is the distribution-independent representation of application array data structures in persistent storage. For further optimizing the performance of checkpoint/restart operations, we provide parallel array section streaming operations for such distributed arrays. We present performance data for the reconfigurable checkpointing and restarting of parallel applications and compare that with the performance of conventional forms of checkpointing. Our results demonstrate the advantages of the new scheme we describe. Vijay K. Naik, Samuel P. Midkiff, José E. Moreira |
SC | 2 |
| 1995 | Local Iteration Set Computation for Block-Cyclic Distributions
Samuel P. Midkiff |
ICPP (2) | 1 |
| 1995 | An HPF Compiler for the IBM SP2abstractWe describe pHPF, an research prototype HPF compiler for the IBM SP series parallel machines. The compiler accepts as input Fortran 90 and Fortran 77 programs, augmented with HPF directives; sequential loops are automatically parallelized. The compiler supports symbolic analysis of expressions. This allows parameters such as the number of processors to be unknown at compile-time without significantly affecting performance. Communication schedules and computation guards are generated in a parameterized form at compile-time. Several novel optimizations and improved versions of well-known optimizations have been implemented in pHPF to exploit parallelism and reduce communication costs. These optimizations include elimination of redundant communication using data-availability analysis; using collective communication; new techniques for mapping scalar variables; coarse-grain wavefronting; and communication reduction in multi-dimensional shift communications. We present experimenta... Manish Gupta 0002, Samuel P. Midkiff, Edith Schonberg, Ven Seshadri, David Shields, Ko-Yang Wang, Wai-Mee Ching, Ton Anh Ngo |
SC | 2 |
| 1991 | A Comparison of Four Synchronization Optimization Techniques
Samuel P. Midkiff, David A. Padua |
ICPP (2) | 1 |
| 1990 | Issues in the Optimization of Parallel Programs
Samuel P. Midkiff, David A. Padua |
ICPP (2) | 1 |
| 1987 | Compiler Algorithms for SynchronizationabstractTranslating program loops into a parallel form is one of the most important transformations performed by concurrentizing compilers. This transformation often requires the insertion of synchronization instructions within the body of the concurrent loop. Several loop synchronization techniques are presented first. Compiler algorithms to generate synchronization instructions for singly-nested loops are then discussed. Finally, a technique for the elimination of redundant synchronization instructions is presented. Samuel P. Midkiff, David A. Padua |
IEEE Trans. Computers | 1 |
| 1986 | Compiler Generated Synchronization for Do Loops
Samuel P. Midkiff, David A. Padua |
ICPP | 1 |