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.

Michael Wolfe

dblp:02/124 · DBLP profile ↗
← Back
29ranked-venue papers
16as first author
1since 2021 · last 2022
0000-0002-6481-6792ORCID · corroborated

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

Systems, architecture and hardware · 21 · 14 first-authorSoftware engineering, systems software and programming languages · 8 · 2 first-author · 1 since 2021

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
9 papers
Compilers and program optimization · 56% Programming languages and type systems · 28% Program analysis · 15%
Computer architecture, parallel and distributed computing, and storage systems
5 papers
Processor architecture and microarchitecture · 66% High-performance computing · 20% Parallel and multicore computing · 13%

Topics — the 21 heaviest of 23, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › interoperability
binary compatibility
0.112006
Software tools I - AMD versus Intel: the compiler as referee · SC 2006
Program analysis
data dependence analysis
0.031995
Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA · ACM Trans. Program. Lang. Syst. 1995
The Power Test for Data Dependence · IEEE Trans. Parallel Distributed Syst. 1992
Beyond Induction Variables · PLDI 1992
Compilers and program optimization › intermediate representation
static single assignment form
0.021995
Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA · ACM Trans. Program. Lang. Syst. 1995
Static Single Assignment for Explicitely Parallel Programs · POPL 1993
High-performance computing
performance optimization at scale
0.012006
Software tools I - AMD versus Intel: the compiler as referee · SC 2006
Compilers and program optimization › compiler optimization › redundancy elimination
array bounds check elimination
0.011995
Elimination of Redundant Array Subscript Range Checks · PLDI 1995
Compilers and program optimization › compiler analysis
induction variable detection
0.011995
Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA · ACM Trans. Program. Lang. Syst. 1995
Compilers and program optimization
intermediate representation
0.011995
Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA · ACM Trans. Program. Lang. Syst. 1995
Compilers and program optimization › compiler optimization › redundancy elimination
partial redundancy elimination
0.011995
Elimination of Redundant Array Subscript Range Checks · PLDI 1995
Compilers and program optimization
dependence analysis
0.011994
The Definition of Dependence Distance · ACM Trans. Program. Lang. Syst. 1994
Compilers and program optimization
loop optimization
0.021995
More iteration space tiling · SC 1989
Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA · ACM Trans. Program. Lang. Syst. 1995
Compilers and program optimization › dependence analysis
dependence testing
0.011992
The Power Test for Data Dependence · IEEE Trans. Parallel Distributed Syst. 1992
Parallel and multicore computing
parallel scheduling
0.011989
More iteration space tiling · SC 1989
Program verification › dynamic verification › runtime verification
runtime safety analysis
0.011995
Elimination of Redundant Array Subscript Range Checks · PLDI 1995
Compilers and program optimization › loop optimization
strength reduction
0.011995
Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA · ACM Trans. Program. Lang. Syst. 1995
Parallel and multicore computing › loop transformation
loop parallelization
0.011994
The Definition of Dependence Distance · ACM Trans. Program. Lang. Syst. 1994
Parallel and multicore computing
parallel programming models
0.011993
Static Single Assignment for Explicitely Parallel Programs · POPL 1993
Compilers and program optimization
loop transformation
0.011992
The Power Test for Data Dependence · IEEE Trans. Parallel Distributed Syst. 1992
Compilers and program optimization › program transformation
compiler transformations
0.011981
Dependence Graphs and Compiler Optimizations · POPL 1981
Program analysis › program representation
dependence graphs
0.011981
Dependence Graphs and Compiler Optimizations · POPL 1981
Memory systems › data locality
cache locality
0.011989
More iteration space tiling · SC 1989
Processor architecture and microarchitecture
instruction-level parallelism
0.011981
Dependence Graphs and Compiler Optimizations · POPL 1981

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

dynamic code path selection · 0.1compiler optimization · 0.1use-def chains · 0.0partial redundancy elimination · 0.0demand-driven analysis · 0.0register allocation · 0.0static single assignment · 0.0pattern classification · 0.0fourier-motzkin elimination · 0.0extended GCD algorithm · 0.0vectorization · 0.0dependence analysis · 0.0
YearPublicationVenuePosition
2022 Performant portable OpenMP
abstract
Accelerated computing has increased the need to specialize how a program is parallelized depending on the target. Fully exploiting a highly parallel accelerator, such as a GPU, demands more parallelism and sometimes more levels of parallelism than a multicore CPU. OpenMP has a directive for each level of parallelism, but choosing directives for each target can incur a significant productivity cost. We argue that using the new OpenMP loop directive with an appropriate compiler decision process can achieve the same performance benefits of target-specific parallelization with the productivity advantage of a single directive for all targets. In this paper, we introduce a fully descriptive model and demonstrate its benefits with an implementation of the loop directive, comparing performance, productivity, and portability against other production compilers using the SPEC ACCEL benchmark suite. We provide an implementation of our proposal in NVIDIA's HPC compiler. It yields up to 56X speedup and an average of 1.91x-1.79x speedup compared to the baseline performance (depending on the host system) on GPUs, and preserves CPU performance. In addition, our proposal requires 60% fewer parallelism directives.
Guray Ozen, Michael Wolfe
CC2
2020 Optimizing supercompilers for supercomputers
abstract
Between a problem statement and its solution as a computer simulation are several steps, from choosing a method, writing a program, compiling to machine code, making runtime decisions, and hardware execution. Here we will look at the middle three decision points. What decisions should be and must be left to the programmer? What decisions should be and must be relegated to a compiler? What decisions should be and must be left until runtime? Given my background, I will focus a great deal on the importance of compilers in supercomputing, and compare and contrast the advantages and impacts of compiler solutions to the "Performance + Portability + Productivity" problem with language and runtime solutions.
Michael Wolfe
ICS1
2018 The OpenACC data model: Preliminary study on its major challenges and implementations
Michael Wolfe, Seyong Lee, Xiaonan Tian, Rengan Xu, Barbara M. Chapman, Sunita Chandrasekaran
Parallel Comput.1
2015 Open ACC Programs Examined: A Performance Analysis Approach
abstract
The Open ACC standard has been developed to simplify parallel programming of heterogeneous systems. Based on a set of high-level compiler directives it allows application developers to offload code regions from a host CPU to an accelerator without the need for low-level programming with CUDA or Open CL. Details are implicit in the programming model and managed by Open ACC API-enabled compilers and runtimes. However, it is still possible for the application developer to explicitly specify several performance-related details for the execution. To tune an Open ACC program and efficiently utilize available hardware resources, sophisticated performance analysis tools are required. In this paper we present a framework for detailed analysis of Open ACC applications. We describe new analysis capabilities introduced with an Open ACC tools interface and depict the integration of performance analysis for low-level programming models. As proof of concept we implemented the concept into the measurement infrastructure Score-P and the trace browser Vampir. This provides the program developer with a clearer understanding of the dynamic runtime behavior of the application and for systematic identification of potential bottlenecks.
Robert Dietrich, Guido Juckeland, Michael Wolfe
ICPP3
2006 Software tools I - AMD versus Intel: the compiler as referee
abstract
Intel Pentium 4 floating-point capability made x86 systems viable for technical computing. AMD Opteron introduced 64-bit addressing and extended register sets. Intel EM64T added SSE3. These features have all gradually been adopted by both Intel and AMD. This evolutionary process creates temporal binary incompatibilities between AMD and Intel processors. In addition, microarchitecture differences dictate that distinct instruction sequences be used for optimal performance on each processor type. Applications that have many users, or persist in binary form across generations of processors, must execute correctly and perform well on all x86 processors.PGI compilers provide a unique solution by generating multiple versions of time-critical routines. Low-overhead dynamic selection of optimal code paths is enabled in a single PGI Unified Binary. The PGI tools infrastructure supports this scheme seamlessly. This unique feature enables uniformly high performance on both AMD and Intel processors and simplifies builds, validation, distribution and support of x86 applications.
Michael Wolfe
SC1
2005 How compilers and tools differ for embedded systems
abstract
Compiler technology includes language design, parsing, analysis, optimization, resource allocation, scheduling, and code generation. Associated tools include assemblers, linkers, debuggers, profilers, 'make', IDEs, optimized libraries, and more. While much of the technology developed over the past 50 years applies directly to embedded programming, there are key differences. Some are due to the limits of the embedded system, in particular memory size and power. Some are due to specialized architectures, such as DSPs. Others arise because of the different programming community and programming style, which is partially due to the economics of the marketplace. Here we explore some of these differences at three levels: the market, the programming environment, and the compiler.The compilers and tools marketplace for high performance workstation and cluster (HPC) systems is split between programmers and groups developing applications for internal use, and ISVs developing applications for resale. The marketplace for embedded systems is almost entirely for OEM applications, and many (or most) of the actual programmers work for the compiler vendor. This affects the forces that drive compiler and tool development and improvement.The goal for an HPC compiler is faster performance; in an embedded application, speed is not the only criterion. Getting the right mix of performance and other characteristics in an embedded system is important enough that programmers are more willing to tune the application by adjusting compiler options, performing limited rewrites, and even coding essential parts in assembler. In some instances, the target system itself is variable, and can be tuned.Focusing on just the compiler, we find many of the compiler techniques for the most performance critical embedded systems bear remarkable similarity to those used 20 or 30 years ago for the highest performance supercomputers. We also look in detail at the effectiveness of whole program analysis in both HPC and embedded compilers.
Michael Wolfe
CASES1
2004 Supercompilers, the AMD Opteron, and Your Cell Phone
abstract
Summary form only given. As The Portland Group Compiler Technology and the Advanced Compilers Tools group within STMicroelectronics, we deliver compilers for both the high performance technical computing market, such as Summary form only given. AMD Opteron servers, and embedded DSP microcores, in particular, the ST100 from STMicroelectronics. This article explores the similarities and differences between compiler optimization strategies for these two markets. We demonstrate that many of the optimizations developed for high performance systems apply in the embedded market. For instance, compilers for both markets use vectorization for multimedia-type operations, loop unrolling, and interprocedural analysis. Software pipelining, first developed for the technical computing market, is now used for the ST100. There are also important differences; multiprocessing is quite mature in the technical computing industry, but is only beginning to be explored in the embedded market. On the other hand, optimizing for performance is not the only goal in the embedded industry; the total memory usage is also quite important. This article shows case-by-case performance improvements on the AMD Opteron and ST122 DSP for a selected set of common optimizations.
Michael Wolfe
IPDPS1
1999 Flexible Data Distribution in PGHPF
Mark Leair, Douglas Miles, Vincent Schuster, Michael Wolfe
Euro-Par4
1995 Elimination of Redundant Array Subscript Range Checks
abstract
This paper presents a compiler optimization algorithm to reduce the run time overhead of array subscript range checks in programs without compromising safety. The algorithm is based on partial redundancy elimination and it incorporates previously developed algorithms for range check optimization. We implemented the algorithm in our research compiler, Nascent, and conducted experiments on a suite of 10 benchmark programs to obtain four results: (1) the execution overhead of naive range checking is high enough to merit optimization, (2) there are substantial differences between various optimizations, (3) loop-based optimizations that hoist checks out of loops are effective in eliminating about 98% of the range checks, and (4) more sophisticated analysis and optimization algorithms produce very marginal benefits.
Priyadarshan Kolte, Michael Wolfe
PLDI2
1995 Optimization of Array Redistribution for Distributed Memory Multicomputers
Akiyoshi Wakatani, Michael Wolfe
Parallel Comput.2
1995 Beyond Induction Variables: Detecting and Classifying Sequences Using a Demand-Driven SSA
abstract
Linear induction variable detection is usually associated with the strength reduction optimization. For restructuring compilers, effective data dependence analysis requires that the compiler detect and accurately describe linear and nonlinear induction variables as well as more general sequences. In this article we present a practical technique for detecting a broader class of linear induction variables than is usually recognized, as well as several other sequence forms, including periodic, polynomial, geometric, monotonic, and wrap-around variables. Our method is based on Factored Use-Def (FUD) chains, a demand-driven representation of the popular Static Single Assignment (SSA) form. In this form, strongly connected components of the associated SSA graph correspond to sequences in the source program: we describe a simple yet efficient algorithm for detecting and classifying these sequences. We have implemented this algorithm in Nascent, our restructuring Fortran 90+ compiler, and we present some results showing the effectiveness of our approach.
Michael P. Gerlek, Eric Stoltz, Michael Wolfe
ACM Trans. Program. Lang. Syst.3
1994 The Definition of Dependence Distance
abstract
Several definitions of dependence distance can be found in the literature. A single coherent definition is the vector distance between the iteration vectors of two iterations involved in a dependence relation. Different ways to associate iteration vectors with iterations can give different dependence distances to the same program, and have different advantages.
Michael Wolfe
ACM Trans. Program. Lang. Syst.1
1993 Static Single Assignment for Explicitely Parallel Programs
abstract
We describe and prove algorithms to convert programs which use the Parallel Computing Forum Parallel Sections construct into Static Single Assignment (SSA) form. This proces allows compilers to apply classical scalar optimization algorithms to explicitly parallel programs. To do so, we must define what the concept of dominator and dominance frontier mean in parallel programs. We also describe how we extend SSA form to handle parallel updates and still preserve the SSA properties.
Harini Srinivasan, James Hook, Michael Wolfe
POPL3
1993 Engineering a data dependence test
abstract
Abstract Many papers have been written dealing with the science of data dependence tests, particularly for dependence of arrays in loops; the techniques typically reduce the dependence problem to an algebraic problem, then solve the algebraic problem by an algorithm which has some desired blend of efficiency, generality or precision. While a sound theoretical basis is necessary for dependence‐based tools, these papers often leave out many implementation details. This paper addresses the engineering aspects of data dependence testing, particularly focusing on details that are necessary in any competent implementation of a data dependence test.
Michael Wolfe
Concurr. Pract. Exp.1
1993 InterProcedural Alias Analiysis: Implementation and Empirical Results
abstract
Abstract We report our experiences with the implementation of InterProcedural Alias Analysis (IPA) for Fortran. Implicit aliasing caused by reference parameter passing can be uncovered in a program with multiple compilation units by interprocedural analysis. For scalar objects and for full arrays, the IPA processor described here finds all alias relations. For indexed array elements and partial arrays, conservative assumptions must still be made in the absence of precise knowledge about the subscripts. IPA has been integrated into nascent, the front‐end of a Fortran translator under development at the Oregon Graduate Institute (OGI). This report explains the goals and limitations of alias analysis for conventional procedural languages with reference parameters, shows in detail the actual design and implementation of IPA, and provides algorithmic and speed improvements over the best previously known aliasing algorithms. Empirical results gathered during the analysis of large Fortran programs are also listed and discussed.
Herbert G. Mayer, Michael Wolfe
Softw. Pract. Exp.2
1992 Beyond Induction Variables
abstract
Induction variable detection is usually closely tied to the strength reduction optimization. This paper studies induction variable analysis from a different perspective, that of finding induction variables for data dependence analysis. While classical induction variable analysis techniques have been used successfully up to now, we have found a simple algorithm based on the Static Single Assignment form of a program that finds all linear induction variables in a loop. Moreover, this algorithm is easily extended to find induction variables in multiple nested loops, to find nonlinear induction variables, and to classify other integer scalar assignments in loops, such as monotonic, periodic and wrap-around variables. Some of these other variables are now classified using ad hoc pattern recognition, while others are not analyzed by current compilers. Giving a unified approach improves the speed of compilers and allows a more general classification scheme. We also show how to use these variables in data dependence testing.
Michael Wolfe
PLDI1
1992 The Power Test for Data Dependence
abstract
A data dependence decision algorithm called the power test is introduced. The power test is a combination of the extended GCD algorithm and the Fourier-Motzkin method to eliminate variables in a system of inequalities. This is the first test that can generate the information needed for some advanced transformations, and that can handle complex simultaneous loop limits. Previous work in data dependence decision algorithms is reviewed. Some examples which motivated the development of this test are examined, including those which demonstrate the additional power of the power test. Although it may be too expensive for use as a general-purpose dependence test in a compiler, the power test has proved useful in an interactive program restructuring environment.>
Michael Wolfe, Chau-Wen Tseng
IEEE Trans. Parallel Distributed Syst.1
1991 The Tiny Loop Restructuring Research Tool
Michael Wolfe
ICPP (2)1
1991 Experiences with data dependence abstractions
abstract
Data dependence information,in some form, is used in compilers and environments for parallel computers to decide what transformations and optimizations can be applied to a program.Here we focus on loop optimiza-
Michael Wolfe
ICS1
1991 Data dependence and program restructuring
Michael Wolfe
J. Supercomput.1
1989 More iteration space tiling
abstract
Subdividing the iteration space of a loop into blocks or tiles with a fixed maximum size has several advantages. Tiles become a natural candidate as the unit of work for parallel task scheduling. Synchronization between processors can be done between tiles, reducing synchronization frequency (at some loss of potential parallelism). The shape and size of a tile can be optimized to take advantage of memory locality for memory hierarchy utilization. Vectorization and register locality naturally fits into the optimization within a tile, while parallelization and cache locality fits into optimization between tiles.
Michael Wolfe
SC1
1988 Vector Optimization vs Vectorization
Michael Wolfe
J. Parallel Distributed Comput.1
1987 Multiple Version Loops
Mark Byler, Michael Wolfe, James R. B. Davies, Christopher Huson, Bruce Leasure
ICPP2
1987 Vector Optimization vs. Vectorization
Michael Wolfe
ICS1
1986 The KAP/205 : An Advanced Source-to-Source Vectorizer for the Cyber 205 Supercomputer
Christopher Huson, Thomas Macke, Michael Wolfe, Bruce Leasure
ICPP4
1986 The KAP/S-1 : An Advanced Source-to-Source Vectorizer for the S-1 Mark IIa Supercomputer
Christopher Huson, Thomas Macke, Michael Wolfe, Bruce Leasure
ICPP4
1986 The KAP/ST-100 A Fortran Translator for the ST-100 Attached Processor
Thomas Macke, Christopher Huson, Michael Wolfe, Bruce Leasure
ICPP4
1986 Advanced Loop Interchanging
Michael Wolfe
ICPP1
1981 Dependence Graphs and Compiler Optimizations
abstract
Dependence graphs can be used as a vehicle for formulating and implementing compiler optimizations. This paper defines such graphs and discusses two kinds of transformations. The first are simple rewriting transformations that remove dependence arcs. The second are abstraction transformations that deal more globally with a dependence graph. These transformations have been implemented and applied to several different types of high-speed architectures.
David J. Kuck, Robert H. Kuhn, David A. Padua, Bruce Leasure, Michael Wolfe
POPL5