Stephen J. Fink

dblp:f/StephenFink · also Stephen Fink · DBLP profile ↗
← Back
34ranked-venue papers
6as first author
0since 2021 · last 2019
—ORCID · none

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

Software engineering, systems software and programming languages · 23 · 4 first-authorSystems, architecture and hardware · 9 · 3 first-authorHuman-computer interaction and ubiquitous computing · 1Applied, interdisciplinary, general and emerging computing · 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.

Software engineering, system software, and programming languages
18 papers
Program analysis · 72% Compilers and program optimization · 16% Runtime systems and virtual machines · 4%
Computer architecture, parallel and distributed computing, and storage systems
7 papers
Parallel and multicore computing · 46% GPUs and heterogeneous computing · 29% Performance modeling and evaluation · 11%
Network and information security
3 papers
Systems and software security · 39% Authentication and access control · 32% Web and mobile security · 22%

Topics — the 30 heaviest of 53, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.872019
From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019
TAJ: effective taint analysis of web applications · PLDI 2009
Static Specification Mining Using Automata-Based Abstractions · IEEE Trans. Software Eng. 2008
Program analysis › static analysis
pointer analysis
0.642019
From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019
Static Specification Mining Using Automata-Based Abstractions · IEEE Trans. Software Eng. 2008
Verifying dereference safety via expanding-scope analysis · ISSTA 2008
Program analysis › type-based analysis
typestate analysis
0.532019
From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019
Effective typestate verification in the presence of aliasing · ACM Trans. Softw. Eng. Methodol. 2008
Effective typestate verification in the presence of aliasing · ISSTA 2006
Program analysis
specification mining
0.232009
Snugglebug: a powerful approach to weakest preconditions · PLDI 2009
Static Specification Mining Using Automata-Based Abstractions · IEEE Trans. Software Eng. 2008
Static specification mining using automata-based abstractions · ISSTA 2007
Parallel and multicore computing
parallel programming models
0.222014
Translating imperative code to MapReduce · OOPSLA 2014
A Programming Methodology for Dual-Tier Multicomputers · IEEE Trans. Software Eng. 2000
Compilers and program optimization
program transformation
0.212014
Translating imperative code to MapReduce · OOPSLA 2014
Parallel and multicore computing › data-parallel programming
mapreduce
0.212014
Translating imperative code to MapReduce · OOPSLA 2014
Program analysis › static analysis
interprocedural analysis
0.222008
Verifying dereference safety via expanding-scope analysis · ISSTA 2008
Static specification mining using automata-based abstractions · ISSTA 2007
Compilers and program optimization › accelerator compilation
GPU compiler
0.112012
Compiling a high-level language for GPUs: (via language support for architectures and compilers) · PLDI 2012
Compilers and program optimization › accelerator compilation
heterogeneous compilation
0.112012
A compiler and runtime for heterogeneous computing · DAC 2012
GPUs and heterogeneous computing
GPU programming
0.112012
Compiling a high-level language for GPUs: (via language support for architectures and compilers) · PLDI 2012
GPUs and heterogeneous computing › GPU programming
high-level language compilation
0.112012
Compiling a high-level language for GPUs: (via language support for architectures and compilers) · PLDI 2012
Authentication and access control › access control
role-based access control
0.122007
When Role Models Have Flaws: Static Validation of Enterprise Security Policies · ICSE 2007
Role-Based access control consistency validation · ISSTA 2006
Program synthesis and code generation
code completion
0.112019
From typestate verification to interpretable deep models (invited talk abstract) · ISSTA 2019
Performance modeling and evaluation
bottleneck analysis
0.112010
Performance analysis of idle programs · OOPSLA 2010
Systems and software security › information flow tracking
taint analysis
0.112009
TAJ: effective taint analysis of web applications · PLDI 2009
Web and mobile security
web application security
0.112009
TAJ: effective taint analysis of web applications · PLDI 2009
Program analysis › static analysis
information flow analysis
0.112009
TAJ: effective taint analysis of web applications · PLDI 2009
Program analysis
symbolic execution
0.112009
Snugglebug: a powerful approach to weakest preconditions · PLDI 2009
Program analysis › static analysis
taint analysis
0.112009
TAJ: effective taint analysis of web applications · PLDI 2009
Program analysis › static analysis
abstract interpretation
0.112008
Verifying dereference safety via expanding-scope analysis · ISSTA 2008
Program analysis › data flow analysis
context-sensitive dataflow analysis
0.112008
Effective typestate verification in the presence of aliasing · ACM Trans. Softw. Eng. Methodol. 2008
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.122005
A Survey of Adaptive Optimization in Virtual Machines · Proc. IEEE 2005
Adaptive optimization in the Jalapeño JVM · OOPSLA 2000
Systems and software security › security engineering
security policy analysis
0.112007
When Role Models Have Flaws: Static Validation of Enterprise Security Policies · ICSE 2007
Program analysis › static analysis
program slicing
0.112007
Thin slicing · PLDI 2007
Program analysis › static analysis › pointer analysis
interprocedural pointer analysis
0.112006
Role-Based access control consistency validation · ISSTA 2006
Runtime systems and virtual machines
dynamic compilation
0.112005
A Survey of Adaptive Optimization in Virtual Machines · Proc. IEEE 2005
Runtime systems and virtual machines
garbage collection
0.012010
Performance analysis of idle programs · OOPSLA 2010
Programming languages and type systems
method dispatch
0.012001
Efficient Implementation of Java Interfaces: Invokeinterface Considered Harmless · OOPSLA 2001
Blockchain and cryptocurrency security › smart contract security
vulnerability detection
0.012009
TAJ: effective taint analysis of web applications · PLDI 2009

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

aliasing information · 0.4access paths · 0.4abstract domain · 0.4rewrite rules · 0.4group-by operations · 0.4fold operations · 0.4runtime orchestration · 0.3high-level language compilation · 0.3static analysis · 0.2staged verification · 0.1sampling · 0.1expert system · 0.1declarative rules · 0.1static taint analysis · 0.1formal modeling · 0.1automata clustering · 0.1abstract interpretation · 0.1pointer analysis · 0.1
YearPublicationVenuePosition
2019 From typestate verification to interpretable deep models (invited talk abstract)
abstract
The paper ``Effective Typestate Verification in the Presence of Aliasing'' was published in the International Symposium on Software Testing and Analysis (ISSTA) 2006 Proceedings, and has now been selected to receive the ISSTA 2019 Retrospective Impact Paper Award. The paper described a scalable framework for verification of typestate properties in real-world Java programs. The paper introduced several techniques that have been used widely in the static analysis of real-world programs. Specifically, it introduced an abstract domain combining access-paths, aliasing information, and typestate that turned out to be simple, powerful, and useful. We review the original paper and show the evolution of the ideas over the years. We show how some of these ideas have evolved into work on machine learning for code completion, and discuss recent general results in machine learning for programming.
Eran Yahav, Stephen J. Fink, Nurit Dor, G. Ramalingam, Emmanuel Geay
ISSTA2
2017 Visualizing serverless cloud application logs for program understanding
abstract
A cloud platform records a wealth of information regarding program execution. Most cloud service providers offer dashboard monitoring tools that visualize resource usage and billing information, and support debugging. In this paper, we present a tool that visualizes cloud execution logs for a different goal - to facilitate program understanding and generate documentations for an application using runtime data. Our tool introduces a new timeline visualization, a new method and user interface to summarize multiple JSON objects and present the result, and interaction techniques that facilitate navigating among functions. Together, these features explain a serverless cloud application's composition, performance, dataflow and data schema. We report some initial user feedback from several expert developers that were involved in the tool's design and development process.
Kerry Shih-Ping Chang, Stephen J. Fink
VL/HCC2
2014 Translating imperative code to MapReduce
abstract
We present an approach for automatic translation of sequential, imperative code into a parallel MapReduce framework. Automating such a translation is challenging: imperative updates must be translated into a functional MapReduce form in a manner that both preserves semantics and enables parallelism. Our approach works by first translating the input code into a functional representation, with loops succinctly represented by fold operations. Then, guided by rewrite rules, our system searches a space of equivalent programs for an effective MapReduce implementation. The rules include a novel technique for handling irregular loop-carried dependencies using group-by operations to enable greater parallelism. We have implemented our technique in a tool called Mold. It translates sequential Java code into code targeting the Apache Spark runtime. We evaluated Mold on several real-world kernels and found that in most cases Mold generated the desired MapReduce program, even for codes with complex indirect updates.
Cosmin Radoi, Stephen J. Fink, Rodric M. Rabbah, Manu Sridharan
OOPSLA2
2014 Predicting GPU Performance from CPU Runs Using Machine Learning
abstract
Graphics processing units (GPUs) can deliver considerable performance gains over general purpose processors. However, GPU performance improvement vary considerably across applications. Porting applications to GPUs by rewriting code with GPU-specific languages requires significant effort. In consequence, it is desirable to predict which applications would benefit most before porting to the GPU. This paper shows that machine learning techniques can build accurate predictive models for GPU acceleration. This study presents an approach which applies supervised learning algorithms to infer predictive models, based on dynamic profile data collected via instrumented runs on general purpose processors. For a set of 18 parallel benchmarks, the results show that a small set of easily-obtainable features can predict the magnitude of GPU speedups on two different high-end GPUs, with accuracies varying between 77% and 90%, depending on the prediction mechanism and scenario. For already-ported applications, similar models can predict the best device to run an application with an effective accuracy of 91%.
Ioana Baldini, Stephen J. Fink, Erik R. Altman
SBAC-PAD2
2013 The Liquid Metal IP bridge
abstract
Programmers are increasingly turning to heterogeneous systems to achieve performance. Examples include FPGA-based systems that integrate reconfigurable architectures with conventional processors. However, the burden of managing the coding complexity that is intrinsic to these systems falls entirely on the programmer. This limits the proliferation of these systems as only highly-skilled programmers and FPGA developers can unlock their potential. The goal of the Liquid Metal project at IBM Research is to address the programming complexity attributed to heterogeneous FPGA-based systems. A feature of this work is a vertically integrated development lifecycle that appeals to skilled software developers. A primary enabler for this work is a canonical IP bridge, designed to offer a uniform communication methodology between software and hardware, and that is applicable across a wide range of platforms available off-the-shelf.
Perry Cheng, Stephen J. Fink, Rodric M. Rabbah, Sunil Shukla
ASP-DAC2
2013 The Liquid Metal Blokus Duo Design
abstract
This paper describes the Liquid Metal entry in the 2013 ICFPT Design Competition. The Liquid Metal system provides a high-level language called Lime and a toolchain targeting FPGAs. Lime allowed us to use standard software development processes for programming, debugging, and performance tuning our FPGA design. We believe such iteration and refinement are far more challenging with low-level languages and design tools commonly used for FPGA development.
Erik R. Altman, Joshua S. Auerbach, David F. Bacon, Ioana Baldini, Perry Cheng, Stephen J. Fink, Rodric M. Rabbah
FPT6
2012 A compiler and runtime for heterogeneous computing
abstract
Heterogeneous systems show a lot of promise for extracting high-performance by combining the benefits of conventional architectures with specialized accelerators in the form of graphics processors (GPUs) and reconfigurable hardware (FPGAs). Extracting this performance often entails programming in disparate languages and models, making it hard for a programmer to work equally well on all aspects of an application. Further, relatively little attention is paid to co-execution---the problem of orchestrating program execution using multiple distinct computational elements that work seamlessly together.
Joshua S. Auerbach, David F. Bacon, Ioana Burcea, Perry Cheng, Stephen J. Fink, Rodric M. Rabbah, Sunil Shukla
DAC5
2012 Compiling a high-level language for GPUs: (via language support for architectures and compilers)
abstract
Languages such as OpenCL and CUDA offer a standard interface for general-purpose programming of GPUs. However, with these languages, programmers must explicitly manage numerous low-level details involving communication and synchronization. This burden makes programming GPUs difficult and error-prone, rendering these powerful devices inaccessible to most programmers.
Christophe Dubach, Perry Cheng, Rodric M. Rabbah, David F. Bacon, Stephen J. Fink
PLDI5
2010 Performance analysis of idle programs
abstract
This paper presents an approach for performance analysis of modern enterprise-class server applications. In our experience, performance bottlenecks in these applications differ qualitatively from bottlenecks in smaller, stand-alone systems. Small applications and benchmarks often suffer from CPU-intensive hot spots. In contrast, enterprise-class multi-tier applications often suffer from problems that manifest not as hot spots, but as idle time, indicating a lack of forward motion. Many factors can contribute to undesirable idle time, including locking problems, excessive system-level activities like garbage collection, various resource constraints, and problems driving load.We present the design and methodology for WAIT, a tool to diagnosis the root cause of idle time in server applications. Given lightweight samples of Java activity on a single tier, the tool can often pinpoint the primary bottleneck on a multi-tier system. The methodology centers on an informative abstraction of the states of idleness observed in a running program. This abstraction allows the tool to distinguish, for example, between hold-ups on a database machine, insufficient load, lock contention in application code, and a conventional bottleneck due to a hot method. To compute the abstraction, we present a simple expert system based on an extensible set of declarative rules.WAIT can be deployed on the fly, without modifying or even restarting the application. Many groups in IBM have applied the tool to diagnosis performance problems in commercial systems, and we present a number of examples as case studies.
Erik R. Altman, Matthew Arnold, Stephen J. Fink, Nick Mitchell
OOPSLA3
2009 Snugglebug: a powerful approach to weakest preconditions
abstract
Symbolic analysis shows promise as a foundation for bug-finding, specification inference, verification, and test generation. This paper addresses demand-driven symbolic analysis for object-oriented programs and frameworks. Many such codes comprise large, partial programs with highly dynamic behaviors--polymorphism, reflection, and so on--posing significant scalability challenges for any static analysis.
Satish Chandra 0001, Stephen J. Fink, Manu Sridharan
PLDI2
2009 TAJ: effective taint analysis of web applications
abstract
Taint analysis, a form of information-flow analysis, establishes whether values from untrusted methods and parameters may flow into security-sensitive operations. Taint analysis can detect many common vulnerabilities in Web applications, and so has attracted much attention from both the research community and industry. However, most static taint-analysis tools do not address critical requirements for an industrial-strength tool. Specifically, an industrial-strength tool must scale to large industrial Web applications, model essential Web-application code artifacts, and generate consumable reports for a wide range of attack vectors.
Omer Tripp, Marco Pistoia, Stephen J. Fink, Manu Sridharan, Omri Weisman
PLDI3
2009 The Complexity of Andersen's Analysis in Practice
Manu Sridharan, Stephen J. Fink
SAS2
2008 Verifying dereference safety via expanding-scope analysis
abstract
This paper addresses the challenging problem of verifying the safety of pointer dereferences in real Java programs. We provide an automatic approach to this problem based on a sound interprocedural analysis. We present a staged expanding-scope algorithm for interprocedural abstract interpretation, which invokes sound analysis with partial programs of increasing scope. This algorithm achieves many benefits typical of whole-program interprocedural analysis, but scales to large programs by limiting analysis to small program fragments. To address cases where the static analysis of program fragments fails to prove safety, the analysis also suggests possible annotations which, if a user accepts, ensure the desired properties. Experimental evaluation on a number of Java programs shows that we are able to verify 90% of all dereferences soundly and automatically, and further reduce the number of remaining dereferences using non-nullness annotations.
Alexey Loginov, Eran Yahav, Satish Chandra 0001, Stephen J. Fink, Noam Rinetzky, Mangala Gowri Nanda
ISSTA4
2008 Effective typestate verification in the presence of aliasing
abstract
This article addresses the challenge of sound typestate verification, with acceptable precision, for real-world Java programs. We present a novel framework for verification of typestate properties, including several new techniques to precisely treat aliases without undue performance costs. In particular, we present a flow-sensitive, context-sensitive, integrated verifier that utilizes a parametric abstract domain combining typestate and aliasing information. To scale to real programs without compromising precision, we present a staged verification system in which faster verifiers run as early stages which reduce the workload for later, more precise, stages. We have evaluated our framework on a number of real Java programs, checking correct API usage for various Java standard libraries. The results show that our approach scales to hundreds of thousands of lines of code, and verifies correctness for 93% of the potential points of failure.
Stephen J. Fink, Eran Yahav, Nurit Dor, G. Ramalingam, Emmanuel Geay
ACM Trans. Softw. Eng. Methodol.1
2008 Static Specification Mining Using Automata-Based Abstractions
abstract
We present a novel approach to client-side mining of temporal API specifications based on static analysis. Specifically, we present an interprocedural analysis over a combined domain that abstracts both aliasing and event sequences for individual objects. The analysis uses a new family of automata-based abstractions to represent unbounded event sequences, designed to disambiguate distinct usage patterns and merge similar usage patterns. Additionally, our approach includes an algorithm that summarizes abstract traces based on automata clusters, and effectively rules out spurious behaviors. We show experimental results mining specifications from a number of Java clients and APIs. The results indicate that effective static analysis for client-side mining requires fairly precise treatment of aliasing and abstract event sequences. Based on the results, we conclude that static client-side specification mining shows promise as a complement or alternative to dynamic approaches.
Sharon Shoham, Eran Yahav, Stephen J. Fink, Marco Pistoia
IEEE Trans. Software Eng.3
2007 Declarative Object Identity Using Relation Types
Mandana Vaziri, Frank Tip, Stephen J. Fink, Julian Dolby
ECOOP3
2007 When Role Models Have Flaws: Static Validation of Enterprise Security Policies
abstract
Modern multiuser software systems have adopted role-based access control (RBAC) for authorization management. This paper presents a formal model for RBAC policy validation and a static-analysis model for RBAC systems that can be used to (i) identify the roles required by users to execute an enterprise application, (ii) detect potential inconsistencies caused by principal-delegation policies, which are used to override a user's role assignment, (Hi) report if the roles assigned to a user by a given policy are redundant or insufficient, and (iv) report vulnerabilities that can result from unchecked intra-component accesses. The algorithms described in this paper have been implemented as part of IBM's enterprise security policy evaluator (ESPE) tool. Experimental results show that the tool found numerous policy flaws, including ten previously unknown flaws from two production-level applications, with no false-positive reports.
Marco Pistoia, Stephen J. Fink, Robert J. Flynn, Eran Yahav
ICSE2
2007 Static specification mining using automata-based abstractions
abstract
We present a novel approach to client-side mining of temporal API specifications based on static analysis. Specifically, we present an interprocedural analysis over a combined domain that abstracts both aliasing and event sequences for individual objects. The analysis uses a new family of automata-based abstractions to represent unbounded event sequences, designed to disambiguate distinct usage patterns and merge similar usage patterns. Additionally, our approach includes an algorithm that summarizes abstract traces based on automata clusters, and effectively rules out spurious behaviors.
Sharon Shoham, Eran Yahav, Stephen J. Fink, Marco Pistoia
ISSTA3
2007 Thin slicing
abstract
Program slicing systematically identifies parts of a program relevant to a seed statement. Unfortunately, slices of modern programs often grow too large for human consumption. We argue that unwieldy slices arise primarily from an overly broad definition of relevance, rather than from analysis imprecision. While a traditional slice includes all statements that may affect a point of interest, not all such statements appear equally relevant to a human.
Manu Sridharan, Stephen J. Fink, Rastislav Bodík
PLDI2
2006 Role-Based access control consistency validation
abstract
Modern enterprise systems support Role-Based Access Control (RBAC). Although RBAC allows restricting access to privileged operations, a deployer may actually intend to restrict access to privileged data. This paper presents a theoretical foundation for correlating an operation-based RBAC policy with a data-based RBAC policy. Relying on a location consistency property, this paper shows how to infer whether an operation-based RBAC policy is equivalent to any databased RBAC policy. We have built a static analysis tool for Java Platform, Enterprise Edition (Java EE) called Static Analysis for Validation of Enterprise Security (SAVES). Relying on interprocedural pointer analysis and dataflow analysis, SAVES analyzes Java EE bytecode to determine if the associated RBAC policy is location consistent, and reports potential security flaws where location consistency does not hold. The experimental results obtained by using SAVES on a number of production-level Java EE codes have identified several security flaws with no false positive reports.
Paolina Centonze, Gleb Naumovich, Stephen J. Fink, Marco Pistoia
ISSTA3
2006 Effective typestate verification in the presence of aliasing
abstract
This paper addresses the challenge of sound typestate verification, with acceptable precision, for real-world Java programs. We present a novel framework for verification of typestate properties, including several new techniques to precisely treat aliases without undue performance costs. In particular, we present a flowsensitive, context-sensitive, integrated verifier that utilizes a parametric abstract domain combining typestate and aliasing information.To scale to real programs without compromising precision, we present a staged verification system in which faster verifiers run as early stages which reduce the workload for later, more precise, stages.We have evaluated our framework on a number of real Java programs, checking correct API usage for various Java standard libraries. The results show that our approach scales to hundreds of thousands of lines of code, and verifies correctness for 93% of the potential points of failure.
Stephen J. Fink, Eran Yahav, Nurit Dor, G. Ramalingam, Emmanuel Geay
ISSTA1
2006 Continuous code-quality assurance with SAFE
abstract
This paper presents the design of SAFE (Scalable and Flexible Error Detection), a static analysis tool targeting lightweight program verification and bug finding for Java. The tool utilizes two types of analysis: a simple "structural" checker based on pattern-matching, and an interprocedural flow-sensitive dataflow solver which integrates typestate checking and alias analysis. We describe how the tool integrates into a team development platform for analysis of batch builds, and user interface support built on the Eclipse platform.
Emmanuel Geay, Eran Yahav, Stephen J. Fink
PEPM3
2005 A Survey of Adaptive Optimization in Virtual Machines
abstract
Virtual machines face significant performance challenges beyond those confronted by traditional static optimizers. First, portable program representations and dynamic language features, such as dynamic class loading, force the deferral of most optimizations until runtime, inducing runtime optimization overhead. Second, modular program representations preclude many forms of whole-program interprocedural optimization. Third, virtual machines incur additional costs for runtime services such as security guarantees and automatic memory management. To address these challenges, vendors have invested considerable resources into adaptive optimization systems in production virtual machines. Today, mainstream virtual machine implementations include substantial infrastructure for online monitoring and profiling, runtime compilation, and feedback-directed optimization. As a result, adaptive optimization has begun to mature as a widespread production-level technology. This paper surveys the evolution and current state of adaptive optimization technology in virtual machines.
Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, Peter F. Sweeney
Proc. IEEE2
2003 Design, Implementation and Evaluation of Adaptive Recompilation with On-Stack Replacement
abstract
Modern virtual machines often maintain multiple compiled versions of a method. An on-stack replacement (OSR) mechanism enables a virtual machine to transfer execution between compiled versions, even while a method runs. Relying on this mechanism, the system can exploit powerful techniques to reduce compile time and code space, dynamically de-optimize code, and invalidate speculative optimizations. The paper presents a new, simple, mostly compiler-independent mechanism to transfer execution into compiled code. Additionally, we present enhancements to an analytic model for recompilation to exploit OSR for more aggressive optimization. We have implemented these techniques in Jikes RVM and present a comprehensive evaluation, including a study of fully automatic, online, profile-driven deferred compilation.
Stephen J. Fink
CGO1
2002 Space- and Time-Efficient Implementation of the Java Object Model
David F. Bacon, Stephen J. Fink, David Grove
ECOOP2
2001 Efficient Dependence Analysis for Java Arrays
Vivek Sarkar, Stephen J. Fink
Euro-Par2
2001 Efficient Implementation of Java Interfaces: Invokeinterface Considered Harmless
abstract
Single superclass inheritance enables simple and efficient table-driven virtual method dispathc. However, virtual method table dispatch does not handle multiple inheritance and interfaces. This complication has led to a widespread misimpression that interface method dispatch is inherently inefficient. This paper argues that with proper implementation techniques, Java interfaces need not be a source of significant performance degradation.
Bowen Alpern, Anthony Cocchi, Stephen J. Fink, David Grove, Derek Lieber
OOPSLA3
2000 Adaptive optimization in the Jalapeño JVM
abstract
Future high-performance virtual machines will improve performance through sophisticated online feedback-directed optimizations. this paper presents the architecture of the Jalapeño Adaptive Optimization System, a system to support leading-edge virtual machine technology and enable ongoing research on online feedback-directed optimizations. We describe the extensible system architecture, based on a federation of threads with asynchronous communication. We present an implementation of the general architecture that supports adaptive multi-level optimization based purely on statistical sampling. We empirically demonstrate that this profiling technique has low overhead and can improve startup and steady-state performance, even without the presence of online feedback-directed optimizations. The paper also describes and evaluates an online feedback-directed inlining optimization based on statistical edge sampling. The system is written completely in Java, applying the described techniques not only to application code and standard libraries, but also to the virtual machine itself.
Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, Peter F. Sweeney
OOPSLA2
2000 Unified Analysis of Array and Object References in Strongly Typed Languages
Stephen J. Fink, Kathleen Knobe, Vivek Sarkar
SAS1
2000 A Programming Methodology for Dual-Tier Multicomputers
abstract
Hierarchically organized ensembles of shared memory multiprocessors possess a richer and more complex model of locality than previous generation multicomputers with single processor nodes. These dual-tier computers introduce many new factors into the programmer's performance model. We present a methodology for implementing block-structured numerical applications on dual-tier computers and a run-time infrastructure, called KeLP2, that implements the methodology. KeLP2 supports two levels of locality and parallelism via hierarchical SPMD control flow, run-time geometric meta-data, and asynchronous collective communication. KeLP applications can effectively overlap communication with computation under conditions where nonblocking point-to-point message passing fails to do so. KeLP's abstractions hide considerable detail without sacrificing performance and dual-tier applications written in KeLP consistently outperform equivalent single-tier implementations written in MPI. We describe the KeLP2 model and show how it facilitates the implementation of five block-structured applications specially formulated to hide communication latency on dual-tiered architectures. We support our arguments with empirical data from applications running on various single- and dual-tier multicomputers. KeLP2 supports a migration path from single-tier to dual-tier platforms and we illustrate this capability with a detailed programming example.
Scott B. Baden, Stephen J. Fink
IEEE Trans. Software Eng.2
1999 Multiple data parallelism with HPF and KeLP
John H. Merlin, Scott B. Baden, Stephen J. Fink, Barbara M. Chapman
Future Gener. Comput. Syst.3
1998 Communication overlap in multi-tier parallel algorithms
abstract
Hierarchically organized multicomputers such as SMP clusters offer new opportunities and new challenges for high-performance computation, but realizing their full potential remains a formidable task. We present a hierarchical model of communication targeted to block- structured, bulk-synchronous applications running on dedicated clusters of symmetric multiprocessors. Our model supports node-level rather processor-level communication as the fundamental operation, and is optimized for aggregate patterns of regular section moves rather than point-to-point messages. These two capabilities work synergistically. They provide flexibility in overlapping communication and overcome deficiencies in the underlying communication layer on systems where inter-node communication bandwidth is at a premium. We have implemented our communication model in the KeLP2.0 run time library. We present empirical results for five applications running on a cluster of Digital AlphaServer 2100's. Four of the applications were able to overlap communication on a system which does not support overlap via non-blocking message passing using MPI. Overall performance improvements due to our overlap strategy ranged from 12% to 28%.
Scott B. Baden, Stephen J. Fink
SC2
1998 Efficient Run-Time Support for Irregular Block-Structured Applications
Stephen J. Fink, Scott B. Baden, Scott R. Kohn
J. Parallel Distributed Comput.1
1997 Parallel Cluster Identification for Multidimensional Lattices
abstract
The cluster identification problem is a variant of connected component labeling that arises in cluster algorithms for spin models in statistical physics. We present a multidimensional version of K.P. Belkhale and P. Banerjee's quad algorithm (1992) for connected component labeling on distributed memory parallel computers. Our extension abstracts away extraneous spatial connectivity information in more than two dimensions, simplifying implementation for higher dimensionality. We identify two types of locality present in cluster configurations, and present optimizations to exploit locality for better performance. Performance results from 2D, 3D, and 4D Ising model simulations with Swendson-Wang dynamics show that the optimizations improve performance by 20-80 percent.
Stephen J. Fink, Craig Huston, Scott B. Baden, Karl Jansen
IEEE Trans. Parallel Distributed Syst.1