EDBT 2026 Demo / reviewers in the wild / expert
Daniel J. Quinlan
dblp:13/2176
· DBLP profile ↗
25ranked-venue papers
3as first author
0since 2021 · last 2017
0000-0001-7467-9173ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 15 · 2 first-authorSoftware engineering, systems software and programming languages · 8 · 1 first-authorTheory of computation · 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
3 papers |
Program verification · 39% Software maintenance and evolution · 24% Program analysis · 20% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
High-performance computing · 67% Parallel and multicore computing · 33% |
Topics — the 14 heaviest of 14, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Concurrent programming › concurrency bug detection
data race detection |
0.1 | 1 | 2010 | A symbolic verifier for CUDA programs · PPoPP 2010 |
Program verification
functional correctness |
0.1 | 1 | 2010 | A symbolic verifier for CUDA programs · PPoPP 2010 |
Program verification › code-level verification
GPU kernel verification |
0.1 | 1 | 2010 | A symbolic verifier for CUDA programs · PPoPP 2010 |
Software maintenance and evolution
code clone detection |
0.1 | 1 | 2009 | Detecting code clones in binary executables · ISSTA 2009 |
Program analysis
static analysis |
0.1 | 1 | 2009 | Static Validation of C Preprocessor Macros · ASE 2009 |
Program verification › model checking
partial order reduction |
0.0 | 1 | 2010 | A symbolic verifier for CUDA programs · PPoPP 2010 |
Program analysis
symbolic execution |
0.0 | 1 | 2010 | A symbolic verifier for CUDA programs · PPoPP 2010 |
Software maintenance and evolution › program comprehension
code comprehension |
0.0 | 1 | 2009 | Static Validation of C Preprocessor Macros · ASE 2009 |
Software maintenance and evolution
reverse engineering |
0.0 | 1 | 2009 | Detecting code clones in binary executables · ISSTA 2009 |
Parallel and multicore computing › parallel programming models and runtimes
parallel programming frameworks |
0.0 | 1 | 1998 | OVERTURE: An Object-Oriented Framework for High Performance Scientific Computing · SC 1998 |
High-performance computing › scientific computing systems
partial differential equation solver |
0.0 | 1 | 1998 | OVERTURE: An Object-Oriented Framework for High Performance Scientific Computing · SC 1998 |
High-performance computing
scientific computing systems |
0.0 | 1 | 1998 | OVERTURE: An Object-Oriented Framework for High Performance Scientific Computing · SC 1998 |
Computational science and engineering › numerical analysis
finite difference methods |
0.0 | 1 | 1998 | OVERTURE: An Object-Oriented Framework for High Performance Scientific Computing · SC 1998 |
Computational science and engineering
numerical analysis |
0.0 | 1 | 1998 | OVERTURE: An Object-Oriented Framework for High Performance Scientific Computing · SC 1998 |
Methods — techniques the papers use, named apart from their topics
symbolic partial order reduction · 0.1decision procedures · 0.1syntactic similarity · 0.1AST normalization · 0.1finite volume · 0.0finite difference · 0.0composite overlapping grid · 0.0adaptive mesh refinement · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2017 | Automatic translation of MPI source into a latency-tolerant, data-driven form
Tan Nguyen 0001, Pietro Cicotti, Eric J. Bylaska, Daniel J. Quinlan, Scott B. Baden |
J. Parallel Distributed Comput. | 4 |
| 2016 | Automatic Generation of Reversible C++ Code and Its Performance in a Scalable Kinetic Monte-Carlo ApplicationabstractThe fully automatic generation of code that establishes the reversibility of arbitrary C/C++ code has been a target of research and engineering for more than a decade as reverse computation has become a central notion in large scale parallel discrete event simulation (PDES). The simulation models that are implemented for PDES are of increasing complexity and size and require various language features to support abstraction, encapsulation, and composition when building a simulation model. In this paper we focus on parallel simulation models that are written in C++ and present an approach and an evaluation for a fully automatically generated reversible code for a kinetic Monte-Carlo application implemented in C++. Although a significant runtime overhead is introduced with our technique, the assurance that the reverse code is generated automatically and correctly, is an enormous win that allows simulation model developers to write forward event code using the entire C++ language, and have that code automatically transformed into reversible code to enable parallel execution with the Rensselaer's Optimistic Simulation System (ROSS). Markus Schordan, Tomas Oppelstrup, David R. Jefferson, Peter D. Barnes Jr., Daniel J. Quinlan |
SIGSIM-PADS | 5 |
| 2016 | Lightweight runtime checking of C programs with RTC
Reed Milewicz, Rajeshwar Vanka, James Tuck 0001, Daniel J. Quinlan, Peter Pirkelbauer |
Comput. Lang. Syst. Struct. | 4 |
| 2015 | Reverse Code Generation for Parallel Discrete Event Simulation
Markus Schordan, David R. Jefferson, Peter D. Barnes Jr., Tomas Oppelstrup, Daniel J. Quinlan |
RC | 5 |
| 2014 | Verification of Polyhedral Optimizations with Constant Loop Bounds in Finite State Space Computations
Markus Schordan, Pei-Hung Lin, Daniel J. Quinlan, Louis-Noël Pouchet |
ISoLA (2) | 3 |
| 2013 | Symbolic Analysis of Concurrency Errors in OpenMP ProgramsabstractIn this paper we present the OpenMP Analysis Toolkit (OAT), which uses Satisfiability Modulo Theories (SMT) solver based symbolic analysis to detect data races and deadlocks in OpenMP codes. Our approach approximately simulates real executions of an OpenMP program through schedule permutation. We conducted experiments on real-world OpenMP benchmarks and student homework assignments by comparing our OAT tool with two commercial dynamic analysis tools: Intel Thread Checker and Sun Thread Analyzer, and one commercial static analysis tool: Viva64 PVS Studio. The experiments show that our symbolic analysis approach is more accurate than static analysis and more efficient and scalable than dynamic analysis tools with less false positives and negatives. Hongyi Ma, Steve Diersen, Chunhua Liao, Daniel J. Quinlan, Zijiang Yang 0006 |
ICPP | 5 |
| 2012 | A New Method for Program Inversion
Cong Hou, George Vulov, Daniel J. Quinlan, David R. Jefferson, Richard M. Fujimoto, Richard W. Vuduc |
CC | 3 |
| 2010 | Exploitation of Dynamic Communication Patterns through Static AnalysisabstractCollective operations can have a large impact on the performance of parallel applications. However, the ideal implementation of a particular collective communication often depends on both the application and the targeted machine structure. Our approach combines dynamic and static analysis techniques to identify common collective communication patterns expressed as point-to-point calls and transforms them into equivalent MPI collectives. We first detect potential collective communication patterns in runtime traces and associate them with the corresponding source code regions. If our static analysis verifies that the introduction of collectives is safe for any program flow, we then replace the original communication primitives with their collective counterpart. In this paper we introduce the necessary algorithms to determine the safety of these transformations and we demonstrate several use cases, including automatic use of new extensions to the MPI standard such as nonblocking collective operations. The use of dynamic analysis significantly reduces compile times, resulting in a speed-up of about 50 for source transformations of HPL due to more directed analysis capabilities and also dramatically decreases complexity of the underlying static analysis. Robert Preissl, Bronis R. de Supinski, Martin Schulz 0001, Daniel J. Quinlan, Dieter Kranzlmüller, Thomas Panas |
ICPP | 4 |
| 2010 | A symbolic verifier for CUDA programsabstractWe present a preliminary automated verifier based on mechanical decision procedures which is able to prove functional correctness of CUDA programs and guarantee to detect bugs such as race conditions. We also employ a symbolic partial order reduction (POR) technique to mitigate the interleaving explosion problem. Ganesh Gopalakrishnan, Robert M. Kirby, Daniel J. Quinlan |
PPoPP | 4 |
| 2010 | Transforming MPI source code based on communication patterns
Robert Preissl, Martin Schulz 0001, Dieter Kranzlmüller, Bronis R. de Supinski, Daniel J. Quinlan |
Future Gener. Comput. Syst. | 5 |
| 2009 | Reusable, generic program analyses and transformationsabstractThe optimizations in modern compilers are constructed for a predetermined set of primitive types. As a result, programmers are unable to exploit optimizations for user-defined types where these optimizations would be correct and beneficial. Moreover, because the set of optimizations is also fixed, programmers are unable to incorporate new optimizations into the compiler. To address these limitations, we apply the reuse methodologies from generic programming to compiler analyses and optimizations. To enable compilers to apply optimizations to classes of types rather than particular types, we define optimizations in terms of generic interface descriptions (similar to C++ concepts or Haskell type classes). By extending these interface descriptions to include associated program analysis and transformation fragments, we enable compilers to incorporate user-defined transformations and analyses. Since these transformations are explicitly associated with interface descriptions, they can be applied in generic fashion by the compiler. We demonstrate that classical compiler optimizations, when generalized using this framework, can apply to a broad range of types, both built-in and user-defined. Finally, we present an initial implementation, the principles of which are generalizable to other compilers. Jeremiah Willcock, Andrew Lumsdaine, Daniel J. Quinlan |
GPCE | 3 |
| 2009 | Detecting code clones in binary executablesabstractLarge software projects contain significant code duplication, mainly due to copying and pasting code. Many techniques have been developed to identify duplicated code to enable applications such as refactoring, detecting bugs, and protecting intellectual property. Because source code is often unavailable, especially for third-party software, finding duplicated code in binaries becomes particularly important. However, existing techniques operate primarily on source code, and no effective tool exists for binaries. Andreas Sæbjørnsen, Jeremiah Willcock, Thomas Panas, Daniel J. Quinlan, Zhendong Su 0001 |
ISSTA | 4 |
| 2009 | Static Validation of C Preprocessor MacrosabstractThe widely used C preprocessor (CPP) is generally considered a source of difficulty for understanding and maintaining C/C++ programs. The main reason for this difficulty is CPP's purely lexical semantics, i.e., its treatment of both input and output as token streams. This can easily lead to errors that are difficult to diagnose, and it has been estimated that up to 20% of all macros are erroneous. To reduce such errors, more restrictive, replacement languages for CPP have been proposed to limit expanded macros to be valid C syntactic units. However, there is no practical tool that can effectively validate CPP macros in legacy applications. In this paper, we introduce a novel, general characterization of inconsistent macro usage as a strong indicator of macro errors. Our key insight is that all applications of the same macro should behave similarly. In particular, we map each macro call c in a source file f to c's normalized syntactic constructs within the abstract syntax tree (AST) for f's preprocessed source, and use syntactic similarity as the basis for comparing macro calls of the same macro definition. Utilizing this characterization, we have developed an efficient algorithm to statically validate macro usage in C/C++ programs. We have implemented the algorithm; evaluation results show that our tool is effective in detecting common macro-related errors and reports few false positives, making it a practical tool for validating macro usage. Andreas Saebjoernsen, Lingxiao Jiang, Daniel J. Quinlan, Zhendong Su 0001 |
ASE | 3 |
| 2008 | Detecting Patterns in MPI Communication TracesabstractSince processor counts in supercomputers are increasing dramatically, efficient interprocessor communication is becoming even more important for the applications that run on them. A high level, abstract understanding of an application's communication behavior would not only simplify debugging of that communication but would also support more directed performance optimization. We explore automated identification of communication patterns to provide that high level abstraction. We introduce an algorithm to extract communication patterns from MPI traces automatically. Our algorithm first finds locally repeating sequences and then iteratively grows them into global patterns. We demonstrate our technique on three realistic codes using traces from up to 128 processors. Our results show that our approach detects the underlying communication pattern within reasonable time andmemory constraints, even for large trace sizes. Robert Preissl, Thomas Köckerbauer, Martin Schulz 0001, Dieter Kranzlmüller, Bronis R. de Supinski, Daniel J. Quinlan |
ICPP | 6 |
| 2008 | A projection-based optimization framework for abstractions with application to the unstructured mesh domainabstractComputational scientists often must choose between the greater programming productivity of high-level abstractions, such as matrices and mesh entities, and the greater execution efficiency of low-level constructs. Performance is degraded when abstraction indirection introduces overhead and hinders compiler analysis. This can be overcome by targeting the semantics, rather than the implementation, of abstractions. Raising operators specified by a domain expert project an application from an implementation space to an abstraction space, where optimizations leverage domain semantics to complement conservative analyses. Raising operators define a domain-specific intermediate representation, which optimizations target for improved portability. Following optimization, transformed code is reified as a concrete implementation via lowering operators. We have developed a framework to implement this optimization strategy, which we use to introduce two domain-specific unstructured mesh optimizations. The first uses an inspector/executor approach to avoid costly traversals over a static mesh by memoizing the relatively few references required for mathematical computations. The executor phase accesses stored entities without incurring the indirections. The second optimization lowers object-based mesh access and iteration to a low-level implementation, which uses integer-based access and iteration. Brian S. White, Sally A. McKee, Daniel J. Quinlan |
ICS | 3 |
| 2007 | Communicating Software Architecture using a Unified Single-View VisualizationabstractSoftware is among the most complex human artifacts, and visualization is widely acknowledged as important to understanding software. In this paper, we consider the problem of understanding a software system's architecture through visualization. Whereas traditional visualizations use multiple stakeholder-specific views to present different kinds of task- specific information, we propose an additional visualization technique that unifies the presentation of various kinds of architecture-level information, thereby allowing a variety of stakeholders to quickly see and communicate current development, quality, and costs of a software system. For future empirical evaluation of multi-aspect, single-view architectural visualizations, we have implemented our idea in an existing visualization tool, Vizz3D. Our implementation includes techniques, such as the use of a city metaphor, that reduce visual complexity in order to support single-view visualizations of large-scale programs. Thomas Panas, Thomas Epperly, Daniel J. Quinlan, Andreas Sæbjørnsen, Richard W. Vuduc |
ICECCS | 3 |
| 2007 | POET: Parameterized Optimizations for Empirical TuningabstractThe excessive complexity of both machine architectures and applications have made it difficult for compilers to statically model and predict application behavior. This observation motivates the recent interest in performance tuning using empirical techniques. We present a new embedded scripting language, POET (parameterized optimization for empirical tuning), for parameterizing complex code transformations so that they can be empirically tuned. The POET language aims to significantly improve the generality, flexibility, and efficiency of existing empirical tuning systems. We have used the language to parameterize and to empirically tune three loop optimizations - interchange, blocking, and unrolling - for two linear algebra kernels. We show experimentally that the time required to tune these optimizations using POET, which does not require any program analysis, is significantly shorter than that when using a full compiler-based source-code optimizer which performs sophisticated program analysis and optimizations. Qing Yi, Keith Seymour, Haihang You, Richard W. Vuduc, Daniel J. Quinlan |
IPDPS | 5 |
| 2006 | Topic 9: Parallel Programming: Models, Methods and Languages
José C. Cunha, Sergei Gorlatch, Daniel J. Quinlan, Peter H. Welch |
Euro-Par | 3 |
| 2006 | Annotating user-defined abstractions for optimizationabstractAlthough conventional compilers implement a wide range of optimization techniques, they frequently miss opportunities to optimize the use of abstractions, largely because they are not designed to recognize and use the relevant semantic information about such abstractions. In this position paper, we propose a set of annotations to help communicate high-level semantic information about abstractions to the compiler, thereby enabling the large body of traditional compiler optimizations to be applied to the use of those abstractions. Our annotations explicitly describe properties of abstractions that are needed to guarantee the applicability and profitability of a broad variety of such optimizations, including memoization, reordering, data layout transformations, and inlining and specialization Daniel J. Quinlan, Markus Schordan, Richard W. Vuduc, Qing Yi |
IPDPS | 1 |
| 2005 | Improving the computational intensity of unstructured mesh applicationsabstractAlthough unstructured mesh algorithms are a popular means of solving problems across a broad range of disciplines---from texture mapping to computational fluid dynamics---they are often dominated not by computation, but by mesh overhead. Our study of an object-oriented mesh-based benchmark reveals that 72% of its execution time is spent on mesh-related operations, such as iterating over faces or chasing pointers. We report a series of optimizations---some traditional, some novel---that dramatically improve the benchmark's computational intensity---the ratio of floating point operations to memory accesses. This improvement is attributable to an eight-fold reduction in memory operations and results in a 4.7x speedup in execution time.Our work demonstrates that common subexpression elimination and code motion are important optimizations for mesh-based codes. However, conservative analysis prevents their application. We discuss these barriers to analysis and argue that an understanding of mesh semantics complements more traditional analyses, such as pointer alias analysis, and certifies the correctness of these optimizations. Our identification of overheads in mesh-based codes, optimizations that address them, and limitations of current compiler analyses are required for our eventual goal of automating these optimizations in a semantics-aware compiler. Brian S. White, Sally A. McKee, Bronis R. de Supinski, Brian Miller 0001, Daniel J. Quinlan, Martin Schulz 0001 |
ICS | 5 |
| 2004 | Topic 10: Parallel Programming: Models, Methods and Programming Languages
Paul H. J. Kelly, Sergei Gorlatch, Christoph W. Kessler, Daniel J. Quinlan |
Euro-Par | 4 |
| 2004 | Classification and Utilization of Abstractions for Optimization
Daniel J. Quinlan, Markus Schordan, Qing Yi, Andreas Sæbjørnsen |
ISoLA | 1 |
| 2004 | Parallel object-oriented framework optimizationabstractAbstract Sophisticated parallel languages are difficult to develop; most parallel distributed memory scientific applications are developed using a serial language, expressing parallelism through third party libraries (e.g. MPI). As a result, frameworks and libraries are often used to encapsulate significant complexities. We define a novel approach to optimize the use of libraries within applications. The resulting tool, named ROSE, leverages the additional semantics provided by library‐defined abstractions enabling library specific optimization of application codes. It is a common perception that performance is inversely proportional to the level of abstraction. Our work shows that this is not the case if the additional semantics can be leveraged. We show how ROSE can be used to leverage the semantics within the compile‐time optimization. Copyright © 2004 John Wiley & Sons, Ltd. Daniel J. Quinlan, Markus Schordan, Brian Miller 0001, Markus Kowarschik |
Concurr. Comput. Pract. Exp. | 1 |
| 1998 | OVERTURE: An Object-Oriented Framework for High Performance Scientific ComputingabstractThe Overture Framework is an object-oriented environment for solving PDEs on serial and parallel architectures. It is a collection of C++ libraries that enables the use of finite difference and finite volume methods at a level that hides the details of the associated data structures, as well as the details of the parallel implementation. It is based on the A++/P++ array class library and is designed for solving problems on a structured grid or a collection of structured grids. In particular, it can use curvilinear grids, adaptive mesh refinement and the composite overlapping grid methods to represent problems with complex moving geometry. This paper introduces Overture, its motivation, and specifically the aspects of the design central to portability and high performance. In particular we focus on the mechanisms within Overture that permit a hierarchy of abstractions and those mechanisms which permit their efficiency on advanced serial and parallel architectures. We expect that these same mechanisms will become increasingly important within other object-oriented frameworks in the future. Federico Bassetti, David L. Brown, Kei Davis, William D. Henshaw, Daniel J. Quinlan |
SC | 5 |
| 1989 | Asynchronous multilevel adaptive methods for solving partial differential equations on multiprocessors: performance results
Stephen F. McCormick, Daniel J. Quinlan |
Parallel Comput. | 2 |