Andrew Lenharth

dblp:15/2621 · DBLP profile ↗
← Back
15ranked-venue papers
2as first author
0since 2021 · last 2018
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 11 · 2 first-authorSoftware engineering, systems software and programming languages · 7 · 1 first-author

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
7 papers
Parallel and multicore computing · 60% High-performance computing · 19% Emerging computing paradigms · 8%
Software engineering, system software, and programming languages
4 papers
Concurrent programming · 48% Program analysis · 28% Operating systems · 21%
Network and information security
1 paper
Systems and software security · 100%

Topics — the 27 heaviest of 31, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Parallel and multicore computing
parallel programming models
0.322014
Deterministic galois: on-demand, portable and parameterless · ASPLOS 2014
The tao of parallelism in algorithms · PLDI 2011
Emerging computing paradigms
approximate computing
0.212016
Proactive Control of Approximate Programs · ASPLOS 2016
Parallel and multicore computing
parallel graph algorithms
0.212016
DSMR: a shared and distributed memory algorithm for single-source shortest path problem · PPoPP 2016
Parallel and multicore computing › parallel algorithms › graph algorithms
single-source shortest path
0.212016
DSMR: a shared and distributed memory algorithm for single-source shortest path problem · PPoPP 2016
Concurrent programming
deterministic execution
0.212014
Deterministic galois: on-demand, portable and parameterless · ASPLOS 2014
Concurrent programming › concurrency models
nondeterminism
0.212014
Deterministic galois: on-demand, portable and parameterless · ASPLOS 2014
Parallel and multicore computing › deterministic execution
deterministic parallelism
0.212014
Deterministic galois: on-demand, portable and parameterless · ASPLOS 2014
High-performance computing › sparse linear algebra
matrix ordering
0.212014
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
Parallel and multicore computing
parallel algorithms
0.212014
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
High-performance computing › sparse linear algebra
sparse matrix computation
0.212014
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
High-performance computing › sparse linear algebra › sparse matrix computation
sparse matrix-vector multiplication
0.212014
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
Parallel and multicore computing › graph processing
parallel graph analytics
0.212013
A lightweight infrastructure for graph analytics · SOSP 2013
Processor architecture and microarchitecture
speculative execution
0.212013
A lightweight infrastructure for graph analytics · SOSP 2013
Parallel and multicore computing
task scheduling
0.212013
A lightweight infrastructure for graph analytics · SOSP 2013
Machine learning › Optimization for machine learning
constrained optimization
0.112016
Proactive Control of Approximate Programs · ASPLOS 2016
Energy-efficient computing › energy-quality tradeoff
energy-accuracy tradeoff
0.112016
Proactive Control of Approximate Programs · ASPLOS 2016
Systems and software security › memory safety
control-flow integrity
0.112007
Secure virtual architecture: a safe execution environment for commodity operating systems · SOSP 2007
Systems and software security
memory safety
0.112007
Secure virtual architecture: a safe execution environment for commodity operating systems · SOSP 2007
Program analysis › static analysis › pointer analysis
context-sensitive pointer analysis
0.112007
Making context-sensitive points-to analysis with heap cloning practical for the real world · PLDI 2007
Program analysis › heap analysis
heap cloning
0.112007
Making context-sensitive points-to analysis with heap cloning practical for the real world · PLDI 2007
Program analysis › static analysis
pointer analysis
0.112007
Making context-sensitive points-to analysis with heap cloning practical for the real world · PLDI 2007
Memory systems › data locality
cache locality optimization
0.112014
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
Electronic design automation › high-level synthesis
scheduling
0.112014
Deterministic galois: on-demand, portable and parameterless · ASPLOS 2014
Parallel and multicore computing
domain-specific language
0.012013
A lightweight infrastructure for graph analytics · SOSP 2013
Machine learning › Graph learning
graph algorithms
0.012011
The tao of parallelism in algorithms · PLDI 2011
Electronic design automation › hardware verification and test › fault diagnosis
fault isolation
0.012009
Recovery domains: an organizing principle for recoverable operating systems · ASPLOS 2009
Programming languages and type systems › type systems
type soundness
0.012007
Secure virtual architecture: a safe execution environment for commodity operating systems · SOSP 2007

Methods — techniques the papers use, named apart from their topics

machine learning · 0.5constrained optimization · 0.5on-demand determinism · 0.4dependence graph analysis · 0.4dijkstra's algorithm · 0.2delta-stepping · 0.2compiler instrumentation · 0.2sloan algorithm · 0.2reverse cuthill-mckee · 0.2virtual machine · 0.1type system · 0.1safety checking compiler · 0.1unification-based analysis · 0.1flow-insensitive analysis · 0.1
YearPublicationVenuePosition
2018 Abelian: A Compiler for Graph Analytics on Distributed, Heterogeneous Platforms
Gurbinder Gill, Roshan Dathathri, Loc Hoang, Andrew Lenharth, Keshav Pingali
Euro-Par4
2018 A Lightweight Communication Runtime for Distributed Graph Analytics
abstract
Distributed-memory multi-core clusters enable in-memory processing of very large graphs with billions of nodes and edges. Recent distributed graph analytics systems have been built on top of MPI. However, communication in graph applications is very irregular, and each host exchanges different amounts of non-contiguous data with other hosts. MPI does not support such a communication pattern well, and it has limited ability to integrate communication with serialization, deserialization, and graph computation tasks. In this paper, we describe a lightweight communication runtime called LCI that supports a large number of threads on each host and avoids the semantic mismatches between the requirements of graph computations and the communication library in MPI. The implementation of LCI is informed by lessons learnt from two baseline MPI-based implementations. We have successfully integrated LCI with two state-of-the-art graph analytics systems - Gemini and Abelian. LCI improves the latency up to 3.5× for microbenchmarks compared to MPI solutions and improves the end-to-end performance of distributed graph algorithms by up to 2×.
Hoang-Vu Dang, Roshan Dathathri, Gurbinder Gill, Alex Brooks, Nikoli Dryden, Andrew Lenharth, Loc Hoang, Keshav Pingali, Marc Snir
IPDPS6
2016 Proactive Control of Approximate Programs
abstract
Approximate computing trades off accuracy of results for resources such as energy or computing time. There is a large and rapidly growing literature on approximate computing that has focused mostly on showing the benefits of approximate computing. However, we know relatively little about how to control approximation in a disciplined way. In this paper, we address the problem of controlling approximation for non-streaming programs that have a set of "knobs" that can be dialed up or down to control the level of approximation of different components in the program. We formulate this control problem as a constrained optimization problem, and describe a system called Capri that uses machine learning to learn cost and error models for the program, and uses these models to determine, for a desired level of approximation, knob settings that optimize metrics such as running time or energy usage. Experimental results with complex benchmarks from different problem domains demonstrate the effectiveness of this approach.
Andrew Lenharth, Donald S. Fussell, Keshav Pingali
ASPLOS2
2016 DSMR: A Parallel Algorithm for Single-Source Shortest Path Problem
abstract
The Single Source Shortest Path (SSSP) problem consists in finding the shortest paths from a vertex (the source vertex) to all other vertices in a graph. SSSP has numerous applications. For some algorithms and applications, it is useful to solve the SSSP problem in parallel. This is the case of Betweenness Centrality which solves the SSSP problem for multiple source vertices in large graphs. In this paper, we introduce the Dijkstra Strip Mined Relaxation (DSMR) algorithm, an efficient parallel SSSP algorithm for shared and distributed-memory systems. We also introduce a set of preprocessing optimization techniques that significantly reduce the communication overhead without increasing the total amount of work dramatically. Our results show that, DSMR is faster than the best previous algorithm, parallel Δ-Stepping, by up-to 7.38×.
Saeed Maleki, Donald Nguyen, Andrew Lenharth, María Jesús Garzarán, David A. Padua, Keshav Pingali
ICS3
2016 DSMR: a shared and distributed memory algorithm for single-source shortest path problem
abstract
The Single-Source Shortest Path (SSSP) problem is to find the shortest paths from a source vertex to all other vertices in a graph. In this paper, we introduce the Dijkstra Strip-Mined Relaxation (DSMR) algorithm, an efficient parallel SSSP algorithm for shared and distributed memory systems. Our results show that, DSMR is faster than parallel Δ-Stepping by a factor of up-to 1.66.
Saeed Maleki, Donald Nguyen, Andrew Lenharth, María Jesús Garzarán, David A. Padua, Keshav Pingali
PPoPP3
2015 Priority Queues Are Not Good Concurrent Priority Schedulers
Andrew Lenharth, Donald Nguyen, Keshav Pingali
Euro-Par1
2015 Scalable Data-Driven PageRank: Algorithms, System Issues, and Lessons Learned
Joyce Jiyoung Whang, Andrew Lenharth, Inderjit S. Dhillon, Keshav Pingali
Euro-Par2
2014 Deterministic galois: on-demand, portable and parameterless
abstract
Non-determinism in program execution can make program development and debugging difficult. In this paper, we argue that solutions to this problem should be on-demand, portable and parameterless. On-demand means that the programming model should permit the writing of non-deterministic programs since these programs often perform better than deterministic ones for the same problem. Portable means that the program should produce the same answer even if it is run on different machines. Parameterless means that if there are machine-dependent scheduling parameters that must be tuned for good performance, they must not affect the output.
Donald Nguyen, Andrew Lenharth, Keshav Pingali
ASPLOS2
2014 Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction
abstract
Many sparse matrix computations can be speeded up if the matrix is first reordered. Reordering was originally developed for direct methods but it has recently become popular for improving the cache locality of parallel iterative solvers since reordering the matrix to reduce bandwidth and wave front can improve the locality of reference of sparse matrix-vector multiplication (SpMV), the key kernel in iterative solvers. In this paper, we present the first parallel implementations of two widely used reordering algorithms: Reverse Cut hill-McKee (RCM) and Sloan. On 16 cores of the Stampede supercomputer, our parallel RCM is 5.56 times faster on the average than a state-of-the-art sequential implementation of RCM in the HSL library. Sloan is significantly more constrained than RCM, but our parallel implementation achieves a speedup of 2.88X on the average over sequential HSL-Sloan. Reordering the matrix using our parallel RCM and then performing 100 SpMV iterations is twice as fast as using HSL-RCM and then performing the SpMV iterations, it is also 1.5 times faster than performing the SpMV iterations without reordering the matrix.
Konstantinos I. Karantasis, Andrew Lenharth, Donald Nguyen, María Jesús Garzarán, Keshav Pingali
SC2
2013 A lightweight infrastructure for graph analytics
abstract
Several domain-specific languages (DSLs) for parallel graph analytics have been proposed recently. In this paper, we argue that existing DSLs can be implemented on top of a general-purpose infrastructure that (i) supports very fine-grain tasks, (ii) implements autonomous, speculative execution of these tasks, and (iii) allows application-specific control of task scheduling policies. To support this claim, we describe such an implementation called the Galois system.
Donald Nguyen, Andrew Lenharth, Keshav Pingali
SOSP2
2011 The tao of parallelism in algorithms
abstract
For more than thirty years, the parallel programming community has used the dependence graph as the main abstraction for reasoning about and exploiting parallelism in "regular" algorithms that use dense arrays, such as finite-differences and FFTs. In this paper, we argue that the dependence graph is not a suitable abstraction for algorithms in new application areas like machine learning and network analysis in which the key data structures are "irregular" data structures like graphs, trees, and sets.
Keshav Pingali, Donald Nguyen, Milind Kulkarni 0001, Martin Burtscher, Muhammad Amber Hassaan, Rashid Kaleem, Tsung-Hsien Lee, Andrew Lenharth, Roman Manevich, Mario Méndez-Lojo, Dimitrios Prountzos
PLDI8
2009 Recovery domains: an organizing principle for recoverable operating systems
abstract
We describe a strategy for enabling existing commodity operating systems to recover from unexpected run-time errors in nearly any part of the kernel, including core kernel components. Our approach is dynamic and request-oriented; it isolates the effects of a fault to the requests that caused the fault rather than to static kernel components. This approach is based on a notion of "recovery domains," an organizing principle to enable rollback of state affected by a request in a multithreaded system with minimal impact on other requests or threads. We have applied this approach on v2.4.22 and v2.6.27 of the Linux kernel and it required 132 lines of changed or new code: the other changes are all performed by a simple instrumentation pass of a compiler. Our experiments show that the approach is able to recover from otherwise fatal faults with minimal collateral impact during a recovery event.
Andrew Lenharth, Vikram S. Adve, Samuel T. King
ASPLOS1
2007 Making context-sensitive points-to analysis with heap cloning practical for the real world
abstract
Context-sensitive pointer analysis algorithms with full "heapcloning" are powerful but are widely considered to be too expensive to include in production compilers. This paper shows, for the first time, that a context-sensitive, field-sensitive algorithm with fullheap cloning (by acyclic call paths) can indeed be both scalable and extremely fast in practice. Overall, the algorithm is able to analyze programs in the range of 100K-200K lines of C code in 1-3 seconds,takes less than 5% of the time it takes for GCC to compile the code (which includes no whole-program analysis), and scales well across five orders of magnitude of code size. It is also able to analyze the Linux kernel (about 355K linesof code) in 3.1 seconds. The paper describes the major algorithmic and engineering design choices that are required to achieve these results, including (a) using flow-insensitive and unification-basedanalysis, which are essential to avoid exponential behavior in practice;(b) sacrificing context-sensitivity within strongly connected components of the call graph; and (c) carefully eliminating several kinds of O(N2) behaviors (largely without affecting precision). The techniques used for (b) and (c) eliminated several major bottlenecks to scalability, and both are generalizable to other context-sensitive algorithms. We show that the engineering choices collectively reduce analysis time by factors of up to 10x-15xin our larger programs, and have found that the savings grow strongly with program size. Finally, we briefly summarize results demonstrating the precision of the analysis.
Chris Lattner, Andrew Lenharth, Vikram S. Adve
PLDI2
2007 Secure virtual architecture: a safe execution environment for commodity operating systems
abstract
This paper describes an efficient and robust approach to provide a safe execution environment for an entire operating system, such as Linux, and all its applications. The approach, which we call Secure Virtual Architecture (SVA), defines a virtual, low-level, typed instruction set suitable for executing all code on a system, including kernel and application code. SVA code is translated for execution by a virtual machine transparently, offline or online. SVA aims to enforce fine-grained (object level) memory safety, control-flow integrity, type safety for a subset of objects, and sound analysis. A virtual machine implementing SVA achieves these goals by using a novel approach that exploits properties of existing memory pools in the kernel and by preserving the kernel's explicit control over memory, including custom allocators and explicit deallocation. Furthermore, the safety properties can be encoded compactly as extensions to the SVA type system, allowing the (complex) safety checking compiler to be outside the trusted computing base. SVA also defines a set of OS interface operations that abstract all privileged hardware instructions, allowing the virtual machine to monitor all privileged operations and control the physical resources on a given hardware platform. We have ported the Linux kernel to SVA, treating it as a new architecture, and made only minimal code changes (less than 300 lines of code) to the machine-independent parts of the kernel and device drivers. SVA is able to prevent 4 out of 5 memory safety exploits previously reported for the Linux 2.4.22 kernel for which exploit code is available, and would prevent the fifth one simply by compiling an additional kernel library.
John Criswell, Andrew Lenharth, Dinakar Dhurjati, Vikram S. Adve
SOSP2
2004 Quality-Based Adaptive Resource Management Architecture (QARMA): A CORBA Resource Management Service
abstract
Summary form only given. We describe the quality-based adaptive resource management architecture, QARMA, a framework for resource management within CORBA. QARMA consists of three major components: the system repository service, the resource management service, and the enactor service. QARMA serves as a basis for integration of existing CORBA services and management mechanisms into a single, coherent framework for resource management. QARMA supports the management of a wide variety of applications developed using various development paradigms, easily integrates with other management and infrastructure components that already exist as CORBA services, and is easily extended to allow the use of new resource management mechanisms as they become available.
David Fleeman, Matthew Gillen, Andrew Lenharth, M. Delaney, Lonnie R. Welch, David W. Juedes
IPDPS3