Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Brian R. Murphy

dblp:17/385 · DBLP profile ↗
← Back
10ranked-venue papers
2as first author
0since 2021 · last 2008
0000-0002-3771-5283ORCID · corroborated

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

Software engineering, systems software and programming languages · 7 · 2 first-authorSystems, architecture and hardware · 5 · 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.

Software engineering, system software, and programming languages
6 papers
Compilers and program optimization · 34% Concurrent programming · 26% Runtime systems and virtual machines · 12%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Parallel and multicore computing · 56% Processor architecture and microarchitecture · 44%

Topics — the 19 heaviest of 20, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Runtime systems and virtual machines
language runtime
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Processor architecture and microarchitecture
chip multiprocessor
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Parallel and multicore computing
parallel programming runtimes
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Program verification › security property verification
memory safety verification
0.112006
A verifiable SSA program representation for aggressive compiler optimization · POPL 2006
Concurrent programming › transactional memory
nested transactions
0.112006
Compiler and runtime support for efficient software transactional memory · PLDI 2006
Program analysis
program representation
0.112006
A verifiable SSA program representation for aggressive compiler optimization · POPL 2006
Concurrent programming › transactional memory
software transactional memory
0.112006
Compiler and runtime support for efficient software transactional memory · PLDI 2006
Compilers and program optimization › intermediate representation
static single assignment form
0.112006
A verifiable SSA program representation for aggressive compiler optimization · POPL 2006
Concurrent programming
transactional memory
0.112006
Compiler and runtime support for efficient software transactional memory · PLDI 2006
Programming languages and type systems › type systems
type soundness
0.112006
A verifiable SSA program representation for aggressive compiler optimization · POPL 2006
Compilers and program optimization › parallelization › automatic parallelization
array privatization
0.112005
Interprocedural parallelization analysis in SUIF · ACM Trans. Program. Lang. Syst. 2005
Compilers and program optimization
parallelizing compiler
0.112005
Interprocedural parallelization analysis in SUIF · ACM Trans. Program. Lang. Syst. 2005
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.012006
Compiler and runtime support for efficient software transactional memory · PLDI 2006
Parallel and multicore computing › parallel programming models
automatic parallelization
0.012005
Interprocedural parallelization analysis in SUIF · ACM Trans. Program. Lang. Syst. 2005
Compilers and program optimization › parallelization
automatic parallelization
0.011995
Detecting Coarse - Grain Parallelism Using an Interprocedural Parallelizing Compiler · SC 1995
Program analysis › static analysis
interprocedural analysis
0.011995
Detecting Coarse - Grain Parallelism Using an Interprocedural Parallelizing Compiler · SC 1995
Compilers and program optimization › compiler optimization
type-based optimization
0.011991
Static Type Inference in a Dynamically Typed Language · POPL 1991
Programming languages and type systems
type inference
0.011991
Static Type Inference in a Dynamically Typed Language · POPL 1991
Parallel and multicore computing
parallelizing compiler
0.011995
Detecting Coarse - Grain Parallelism Using an Interprocedural Parallelizing Compiler · SC 1995

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

experimental evaluation · 0.1symbolic analysis · 0.1scalar dataflow analysis · 0.1type system · 0.1runtime optimization · 0.1just-in-time compilation · 0.1SSA · 0.1symbolic array subscript analysis · 0.0interprocedural analysis · 0.0abstract interpretation · 0.0
YearPublicationVenuePosition
2008 Fault-safe code motion for type-safe languages
abstract
Compilers for Java and other type-safe languages have historically worked to overcome overheads and constraints imposed by runtime safety checks and precise exception semantics. We instead exploit these safety properties to perform code motion optimizations that are even more aggressive than those possible in unsafe languages such as C++.
Brian R. Murphy, Vijay Menon 0002, Florian T. Schneider, Tatiana Shpeisman, Ali-Reza Adl-Tabatabai
CGO1
2007 Enabling scalability and performance in a large scale CMP environment
abstract
Hardware trends suggest that large-scale CMP architectures, with tens to hundreds of processing cores on a single piece of silicon, are iminent within the next decade. While existing CMP machines have traditionally been handled in the same way as SMPs, this magnitude of parallelism introduces several fundamental challenges at the architectural level and this, in turn, translates to novel challenges in the design of the software stack for these platforms. This paper presents the "Many Core Run Time" (McRT), a software prototype of an integrated language runtime that was designed to explore configurations of the software stack for enabling performance and scalability on large scale CMP platforms. This paper presents the architecture of McRT and discusses our experiences with the system, including experimental evaluation that lead to several interesting, non-intuitive findings, providing key insights about the structure of the system stack at this scale. A key contribution of this paper is to demonstrate how McRT enables near linear improvements in performance and scalability for desktop workloads such as the popular XviD encoder and a set of RMS (recognition, mining, and synthesis) applications. Another key contribution of this work is its use of McRT to explore non-traditional system configurations such as a light-weight executive in which McRT runs on "bare metal" and replaces the traditional OS. Such configurations are becoming an increasingly attractive alternative to leverage heterogeneous computing uints as seen in today's CPU-GPU configurations.
Bratin Saha, Ali-Reza Adl-Tabatabai, Anwar M. Ghuloum, Mohan Rajagopalan, Richard L. Hudson, Leaf Petersen, Vijay Menon 0002, Brian R. Murphy, Tatiana Shpeisman, Eric Sprangle, Anwar Rohillah, Doug Carmean, Jesse Fang
EuroSys8
2006 Compiler and runtime support for efficient software transactional memory
abstract
Programmers have traditionally used locks to synchronize concurrent access to shared data. Lock-based synchronization, however, has well-known pitfalls: using locks for fine-grain synchronization and composing code that already uses locks are both difficult and prone to deadlock. Transactional memory provides an alternate concurrency control mechanism that avoids these pitfalls and significantly eases concurrent programming. Transactional memory language constructs have recently been proposed as extensions to existing languages or included in new concurrent language specifications, opening the door for new compiler optimizations that target the overheads of transactional memory.This paper presents compiler and runtime optimizations for transactional memory language constructs. We present a high-performance software transactional memory system (STM) integrated into a managed runtime environment. Our system efficiently implements nested transactions that support both composition of transactions and partial roll back. Our JIT compiler is the first to optimize the overheads of STM, and we show novel techniques for enabling JIT optimizations on STM operations. We measure the performance of our optimizations on a 16-way SMP running multi-threaded transactional workloads. Our results show that these techniques enable transactional memory's performance to compete with that of well-tuned synchronization.
Ali-Reza Adl-Tabatabai, Brian T. Lewis, Vijay Menon 0002, Brian R. Murphy, Bratin Saha, Tatiana Shpeisman
PLDI4
2006 A verifiable SSA program representation for aggressive compiler optimization
abstract
We present a verifiable low-level program representation to embed, propagate, and preserve safety information in high perfor-mance compilers for safe languages such as Java and C#. Our representation precisely encodes safety information via static single-assignment (SSA) [11, 3] proof variables that are first-class constructs in the program.We argue that our representation allows a compiler to both (1) express aggressively optimized machine-independent code and (2) leverage existing compiler infrastructure to preserve safety information during optimization. We demonstrate that this approach supports standard compiler optimizations, requires minimal changes to the implementation of those optimizations, and does not artificially impede those optimizations to preserve safety. We also describe a simple type system that formalizes type safety in an SSA-style control-flow graph program representation. Through the types of proof variables, our system enables compositional verification of memory safety in optimized code. Finally, we discuss experiences integrating this representation into the machine-independent global optimizer of STARJIT, a high-performance just-in-time compiler that performs aggressive control-flow, data-flow, and algebraic optimizations and is competitive with top production systems.
Vijay Menon 0002, Neal Glew, Brian R. Murphy, Andrew McCreight, Tatiana Shpeisman, Ali-Reza Adl-Tabatabai, Leaf Petersen
POPL3
2005 Interprocedural parallelization analysis in SUIF
abstract
As shared-memory multiprocessor systems become widely available, there is an increasing need for tools to simplify the task of developing parallel programs. This paper describes one such tool, the automatic parallelization system in the Stanford SUIF compiler. This article represents a culmination of a several-year research effort aimed at making parallelizing compilers significantly more effective. We have developed a system that performs full interprocedural parallelization analyses, including array privatization analysis, array reduction recognition, and a suite of scalar data-flow analyses including symbolic analysis. These analyses collaborate in an integrated fashion to exploit coarse-grain parallel loops, computationally intensive loops that can execute on multiple processors independently with no cross-processor synchronization or communication. The system has successfully parallelized large interprocedural loops over a thousand lines of code completely automatically from sequential applications.This article provides a comprehensive description of the analyses in the SUIF system. We also present extensive empirical results on four benchmark suites, showing the contribution of individual analysis techniques both in executing more of the computation in parallel, and in increasing the granularity of the parallel computations. These results demonstrate the importance of interprocedural array data-flow analysis, array privatization and array reduction recognition; a third of the programs spend more than 50% of their execution time in computations that are parallelized with these techniques. Overall, these results indicate that automatic parallelization can be effective on sequential scientific computations, but only if the compiler incorporates all of these analyses.
Mary W. Hall, Saman P. Amarasinghe, Brian R. Murphy, Shih-Wei Liao, Monica S. Lam
ACM Trans. Program. Lang. Syst.3
2004 Improving 64-Bit Java IPF Performance by Compressing Heap References
abstract
64-bit processor architectures like the Intel/spl reg/ Itanium/spl reg/ processor family are designed for large applications that need large memory addresses. When running applications that fit within a 32-bit address space, 64-bit CPUs are at a disadvantage compared to 32-bit CPUs because of the larger memory footprints for their data. This results in worse cache and TLB utilization, and consequently lower performance because of increased miss ratios. This paper considers software techniques for virtual machines that allow 32-bit pointers to be used on 64-bit CPUs for managed runtime applications that do not need the full 64-bit address space. We describe our pointer compression techniques and discuss our experience implementing these for Java applications. In addition, we give performance results with our techniques for both the SPEC JVM98 and SPEC JBB2000 benchmarks. We demonstrate a 12% performance improvement on SPEC JBB2000 and a reduction in the number of garbage collections required for a given heap size.
Ali-Reza Adl-Tabatabai, Jay Bharadwaj, Michal Cierniak, Marsha Eng, Jesse Fang, Brian T. Lewis, Brian R. Murphy, James M. Stichnoth
CGO7
2000 Program Analysis with Partial Transfer Functions
abstract
Program analyses used in compilers commonly use a transfer function (TF) to summarize the input/output behavior of a procedure or region, speeding convergence of analysis of the surrounding region or program. A partial transfer function (PTF) summarizes input/output behavior for only a subset of the possible inputs. In many cases, an exact characterization of input/output behavior is possible for the contexts occurring in a given program, even when a concise and exact total summary would not be feasible. In other cases, an approximate PTF can be used which, while not exact, is more precise than would be possible with a total approximation.
Brian R. Murphy, Monica S. Lam
PEPM1
1998 Predicated Array Data-flow Analysis for Run-time Parallelization
abstract
This paper presents a new analysis for parallelizing compilers called predicated array data-flow analysis, whereby array dataflow analysis for parallelization and privatization is extended to associate predicates with data-flow values.These predicates can be used to derive conditions under which dependences can be eliminated or privatization is possible.These conditions, which can consist of arbitrary program statements, can be used both to enhance compile-time analysis and to introduce run-time tests that guard safe execution of a parallelized version of a computation.We have implemented predicated array data-llow analysis in the Stanford SUIF compiler.We describe features of the implementation and present experimental results that demonstrate this analysis improves the performance of three programs from the SPECgSFP benchmark suite.
Sungdo Moon, Mary W. Hall, Brian R. Murphy
International Conference on Supercomputing3
1995 Detecting Coarse - Grain Parallelism Using an Interprocedural Parallelizing Compiler
abstract
This paper presents an extensive empirical evaluation of an interprocedural parallelizing compiler, developed as part of the Stanford SUIF compiler system. The system incorporates a comprehensive and integrated collection of analyses, including privatization and reduction recognition for both array and scalar variables, and symbolic analysis of array subscripts. The interprocedural analysis framework is designed to provide analysis results nearly as precise as full inlining but without its associated costs. Experimentation with this system shows that it is capable of detecting coarser granularity of parallelism than previously possible. Specifically, it can parallelize loops that span numerous procedures and hundreds of lines of codes, frequently requiring modifications to array data structures such as privatization and reduction transformations. Measurements from several standard benchmark suites demonstrate that an integrated combination of interprocedural analyses can substantially advance the capability of automatic parallelization technology.
Mary W. Hall, Saman P. Amarasinghe, Brian R. Murphy, Shih-Wei Liao, Monica S. Lam
SC3
1991 Static Type Inference in a Dynamically Typed Language
abstract
We present a type inference system for FL based on an operational, rather than a denotational, formulation of types. The essential elements of the system are a type language based on regular trees and a type inference logic that implements an abstract interpretation of the operational semantics of FL. We use a non-standard approach to type inference because our requirements---using type information in the optimization of functional programs---differ substantially from those of other type systems. 1 Introduction Compilers derive at least two benefits from static type inference: the ability to detect and report potential run-time errors at compile-time, and the use of type information in program optimization. Traditionally, type systems have emphasized the detection of type errors. Statically typed functional languages such as Haskell [HWA*88] and ML [HMT89] include type constraints as part of the language definition, making some type inference necessary to ensure that type constraints ...
Alex Aiken, Brian R. Murphy
POPL2