EDBT 2026 Demo / reviewers in the wild / expert
David A. Padua
dblp:p/DavidAPadua
· DBLP profile ↗
97ranked-venue papers
5as first author
0since 2021 · last 2019
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 70 · 4 first-authorSoftware engineering, systems software and programming languages · 25 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 7 · 1 first-authorArtificial intelligence and machine learning · 1Databases, data management, data science and information retrieval · 1Human-computer interaction and ubiquitous 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
33 papers |
Compilers and program optimization · 82% Runtime systems and virtual machines · 9% Concurrent programming · 4% | |
| Computer architecture, parallel and distributed computing, and storage systems
31 papers |
Parallel and multicore computing · 54% High-performance computing · 19% Performance modeling and evaluation · 15% | |
| Databases, data mining, and information retrieval
2 papers |
Data mining · 100% |
Topics — the 30 heaviest of 91, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Performance modeling and evaluation
benchmarking |
0.4 | 3 | 2018 | An empirical study of the effect of source-level loop transformations on compiler stability · Proc. ACM Program. Lang. 2018 Is Search Really Necessary to Generate High-Performance BLAS? · Proc. IEEE 2005 The Cedar System and an Initial Performance Study · ISCA 1993 |
Compilers and program optimization › program transformation
source-to-source transformation |
0.4 | 2 | 2018 | From High-Level Specification to High-Performance Code · Proc. IEEE 2018 Techniques for the Translation of MATLAB Programs into Fortran 90 · ACM Trans. Program. Lang. Syst. 1999 |
Compilers and program optimization
vectorization |
0.3 | 2 | 2018 | Vectorization of apply to reduce interpretation overhead of R · OOPSLA 2015 An empirical study of the effect of source-level loop transformations on compiler stability · Proc. ACM Program. Lang. 2018 |
Parallel and multicore computing
parallel graph algorithms |
0.2 | 1 | 2016 | DSMR: a shared and distributed memory algorithm for single-source shortest path problem · PPoPP 2016 |
Parallel and multicore computing › parallel algorithms › graph algorithms
single-source shortest path |
0.2 | 1 | 2016 | DSMR: a shared and distributed memory algorithm for single-source shortest path problem · PPoPP 2016 |
Runtime systems and virtual machines › interpreter
interpreter optimization |
0.2 | 1 | 2015 | Vectorization of apply to reduce interpretation overhead of R · OOPSLA 2015 |
Parallel and multicore computing
parallel programming models |
0.2 | 7 | 2008 | Programming with tiles · PPoPP 2008 Programming the FlexRAM parallel intelligent memory system · PPoPP 2003 The LRPD Test: Speculative Run-Time Parallelization of Loops with Privatization and Reduction Parallelization · IEEE Trans. Parallel Distributed Syst. 1999 |
Compilers and program optimization › loop optimization
loop tiling |
0.2 | 1 | 2014 | Optimal Parallelogram Selection for Hierarchical Tiling · ACM Trans. Archit. Code Optim. 2014 |
High-performance computing
performance optimization at scale |
0.2 | 2 | 2018 | From High-Level Specification to High-Performance Code · Proc. IEEE 2018 Is Search Really Necessary to Generate High-Performance BLAS? · Proc. IEEE 2005 |
Compilers and program optimization › loop transformation
tiling |
0.1 | 2 | 2008 | Programming with tiles · PPoPP 2008 Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006 |
Data mining
pattern mining |
0.1 | 2 | 2005 | A sampling-based framework for parallel data mining · PPoPP 2005 Parallel mining of closed sequential patterns · KDD 2005 |
Data mining › pattern mining
sequential pattern mining |
0.1 | 2 | 2005 | A sampling-based framework for parallel data mining · PPoPP 2005 Parallel mining of closed sequential patterns · KDD 2005 |
Parallel and multicore computing › parallel scheduling
list scheduling |
0.1 | 1 | 2009 | Communication contention in APN list scheduling algorithm · Sci. China Ser. F Inf. Sci. 2009 |
Electronic design automation › high-level synthesis
scheduling |
0.1 | 1 | 2009 | Communication contention in APN list scheduling algorithm · Sci. China Ser. F Inf. Sci. 2009 |
Compilers and program optimization
code generation |
0.1 | 2 | 2005 | SPIRAL: Code Generation for DSP Transforms · Proc. IEEE 2005 SPL: A Language and Compiler for DSP Algorithms · PLDI 2001 |
Compilers and program optimization › memory optimization
data layout transformation |
0.1 | 1 | 2008 | Programming with tiles · PPoPP 2008 |
Compilers and program optimization › parallelization
automatic parallelization |
0.1 | 5 | 2002 | An Advanced Compiler Framework for Non-Cache-Coherent Multiprocessors · IEEE Trans. Parallel Distributed Syst. 2002 On the Automatic Parallelization of the Perfect Benchmarks · IEEE Trans. Parallel Distributed Syst. 1998 The LRPD Test: Speculative Run-Time Parallelization of Loops with Privatization and Reduction Parallelization · PLDI 1995 |
Programming languages and type systems
dynamic languages |
0.1 | 1 | 2015 | Vectorization of apply to reduce interpretation overhead of R · OOPSLA 2015 |
Compilers and program optimization › memory optimization
data locality optimization |
0.1 | 1 | 2006 | Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006 |
Compilers and program optimization › vectorization
SIMD vectorization |
0.1 | 1 | 2006 | Optimizing data permutations for SIMD devices · PLDI 2006 |
Parallel and multicore computing
data-parallel programming |
0.1 | 1 | 2006 | Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006 |
Parallel and multicore computing
parallelism exploitation |
0.1 | 1 | 2014 | Optimal Parallelogram Selection for Hierarchical Tiling · ACM Trans. Archit. Code Optim. 2014 |
Compilers and program optimization › dependence analysis
array access analysis |
0.1 | 2 | 2002 | Efficient and precise array access analysis · ACM Trans. Program. Lang. Syst. 2002 Simplification of Array Access Patterns for Compiler Optimizations · PLDI 1998 |
Compilers and program optimization
loop optimization |
0.1 | 2 | 2002 | Efficient and precise array access analysis · ACM Trans. Program. Lang. Syst. 2002 Simplification of Array Access Patterns for Compiler Optimizations · PLDI 1998 |
Data mining › pattern mining › sequential pattern mining
closed sequential pattern mining |
0.1 | 1 | 2005 | Parallel mining of closed sequential patterns · KDD 2005 |
Data mining › pattern mining › itemset mining
frequent itemset mining |
0.1 | 1 | 2005 | A sampling-based framework for parallel data mining · PPoPP 2005 |
Data mining › big data analytics › large-scale data mining
parallel data mining |
0.1 | 1 | 2005 | A sampling-based framework for parallel data mining · PPoPP 2005 |
Compilers and program optimization
autotuning |
0.1 | 1 | 2005 | SPIRAL: Code Generation for DSP Transforms · Proc. IEEE 2005 |
High-performance computing › performance optimization
auto-tuning |
0.1 | 1 | 2005 | Is Search Really Necessary to Generate High-Performance BLAS? · Proc. IEEE 2005 |
Parallel and multicore computing
parallel data mining |
0.1 | 1 | 2005 | Parallel mining of closed sequential patterns · KDD 2005 |
Methods — techniques the papers use, named apart from their topics
source-to-source transformation · 0.7empirical benchmarking · 0.7automatic code generation · 0.7execution time model · 0.4automatic tile shape selection · 0.4dijkstra's algorithm · 0.2delta-stepping · 0.2selective sampling · 0.2function vectorization · 0.2data transformation · 0.2array operation overloading · 0.1divide-and-conquer · 0.1load balancing · 0.1escape analysis · 0.1dynamic scheduling · 0.1delay set analysis · 0.1search strategies · 0.0formula transformation · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Locus: A System and a Language for Program OptimizationabstractWe discuss the design and the implementation of Locus, a system and a language to orchestrate the optimization of applications. The increasing complexity of machines and the large space of program variants, produced by the many transformations available, conspire to make compilers deliver unsatisfactory performance. As a result, optimization experts must intervene to manually explore the space of program variants seeking the best version for each target machine. This intervention is unproductive, and maintaining and managing sequences of transformations as new architectures are adopted and new application features are incorporated is challenging.Locus allows collections of program transformation sequences to be specified separately from the application code. The language is able to represent in a clear notation complex collections of transformations that are applied to code regions selected by the programmer. The system integrates multiple optimization modules as well as search modules that facilitate the efficient traversal of the space of program variants. Locus is intended to help experts in the optimization process, specially for complex, long-lived applications that are to be executed on different environments. Four examples are presented to illustrate the power and simplicity of the language. Although not the primary focus of this paper, the examples also show that exploring the space of variants typically leads to better performing codes than those produced by conventional compiler optimizations that are based on heuristics. Thiago S. F. X. Teixeira, Corinne Ancourt, David A. Padua, William Gropp |
CGO | 3 |
| 2019 | Dataflow Execution of Hierarchically Tiled Arrays
Chih-Chieh Yang, Juan Carlos Pichel, David A. Padua |
Euro-Par | 3 |
| 2018 | An empirical study of the effect of source-level loop transformations on compiler stabilityabstractModern compiler optimization is a complex process that offers no guarantees to deliver the fastest, most efficient target code. For this reason, compilers struggle to produce a stable performance from versions of code that carry out the same computation and only differ in the order of operations. This instability makes compilers much less effective program optimization tools and often forces programmers to carry out a brute force search when tuning for performance. In this paper, we analyze the stability of the compilation process and the performance headroom of three widely used general purpose compilers: GCC, ICC, and Clang. For the study, we extracted over 1,000 for loop nests from well-known benchmarks, libraries, and real applications; then, we applied sequences of source-level loop transformations to these loop nests to create numerous semantically equivalent mutations ; finally, we analyzed the impact of transformations on code quality in terms of locality, dynamic instruction count, and vectorization. Our results show that, by applying source-to-source transformations and searching for the best vectorization setting, the percentage of loops sped up by at least 1.15x is 46.7% for GCC, 35.7% for ICC, and 46.5% for Clang, and on average the potential for performance improvement is estimated to be at least 23.7% for GCC, 18.1% for ICC, and 26.4% for Clang. Our stability analysis shows that, under our experimental setup, the average coefficient of variation of the execution time across all mutations is 18.2% for GCC, 19.5% for ICC, and 16.9% for Clang, and the highest coefficient of variation for a single loop nest reaches 118.9% for GCC, 124.3% for ICC, and 110.5% for Clang. We conclude that the evaluated compilers need further improvements to claim they have stable behavior. Zhangxiaowen Gong, Zhi Chen 0001, Justin Josef Szaday, David C. Wong 0001, Zehra Sura, Neftali Watkinson Medina, Saeed Maleki, David A. Padua, Alexander V. Veidenbaum, Alexandru Nicolau, Josep Torrellas |
Proc. ACM Program. Lang. | 8 |
| 2018 | From High-Level Specification to High-Performance CodeabstractComputer architectures and systems are becoming ever more powerful but increasingly more complex. With the end of frequency scaling (about 2004) and the era of multicores/manycores/accelerators, it is exceedingly hard to extract the promised performance, in particular, at a reasonable energy budget. Only highly trained and educated experts can hope to conquer this barrier that, if not appropriately dealt with, can translate into multiple orders of magnitude of underutilization of computer systems when programmed by less specialized programmers or domain scientists. To overcome this challenge, the last ten years have seen a flurry of activity to automate the design and generation of highly efficient implementations for these multicore/ manycore architectures, and to translate high level descriptions of programs into high performance and power efficiency Franz Franchetti, José M. F. Moura, David A. Padua, Jack J. Dongarra |
Proc. IEEE | 3 |
| 2017 | A DSL for Performance OrchestrationabstractThe complexity and diversity of today's computer architectures are requiring more attention from the software developers in order to harness all the computing power available. Furthermore, each different modern architecture requires a potentially non-overlapping set of optimizations to attain a higher fraction of its nominal peak speed. This leads to challenges about performance portability and code maintainability, in particular, how to manage different optimized versions of the same code tailored to different architectures and how to keep them up to date as new algorithmic features are added. This increasing complexity of the architectures and the extension of the optimization space tends to make compilers deliver unsatisfactory performance, and the gap between the performance of hand-tuned and compiler-generated code has grown dramatically. Even the use of advanced optimization flags is not enough to narrow this gap. On the other hand, optimizing applications manually is very time-consuming, and the developer needs to understand and interact with many different hardware features for each architecture. Successful research has been developed to assist the programmer in this painful and error-prone process of implementing, optimizing and porting applications to different architectures. Nonetheless, the adoption of these works has been mostly restricted to specific domains, such as dense linear algebra, Fourier transforms, and signal processing. We have developed the framework ICE that decouples the performance expert role from the application expert role (separation of concerns). It allows the use of architecture-specific optimizations while keeping the code maintainable on the long term. It is responsible to orchestrate the use of multiple optimization tools to application's baseline version and perform an empirical search to find the best sequence of optimizations and their parameters. The baseline version is regarded as not having any architecture- or compiler-specific optimizations. The optimizations and the empirical search are directed by a domain-specific language (DSL) in an external file. Application's code are often dramatically altered by adding multiple optimization cases for each architecture used. This DSL allows the performance expert to apply optimizations without disarrange the original code. The DSL has constructs to expose the options of the optimizations and generates a search space that can be traversed by different search tools. For instance, it has conditional statements that can be used to specify which optimizations should be carried out for each compiler. The DSL is not only the input of the empirical search, but also the output. It can be used so save the best sequence of transformations found in previous searches. The application's code is annotated with unique identifiers that are referenced in the DSL. Currently, source-to-source loop optimizations, algorithm and pragmas selection are accepted. The framework interface is flexible to integrate new optimization and search tools. And in case of any failure it falls back to the baseline version. We have applied the framework to linear algebra problems, stencil computations and to a production code for the simulation of plasma-coupled combustion~xpacc achieving up to 3x speedup. Other works have tried to solve the problem of facilitating optimizing applications, but they lack of important features comprised by ICE. CHiLL, Orio, and X Language simplifies the generation of optimized code. CHiLL is the only one among these that the instructions to carry out the optimizations are given using an external file, but it references loops by their position on the source and modifications in the source require modifications in the external file, restricting its use in large production codes. Only Orio empirically evaluates variants of the annotated code. Summarizing, the contributions of the framework are: the separation of concerns, incremental adoption, a DSL to specify the optimization space, interface to plug-in and compare different optimization and search tools, combination of empirical search with expert knowledge. Thiago S. F. X. Teixeira, David A. Padua, William Gropp |
PACT | 2 |
| 2016 | DSMR: A Parallel Algorithm for Single-Source Shortest Path ProblemabstractThe Single Source Shortest Path (SSSP) problem consists in finding the shortest paths from a vertex (the source vertex) to all other vertices in a graph. SSSP has numerous applications. For some algorithms and applications, it is useful to solve the SSSP problem in parallel. This is the case of Betweenness Centrality which solves the SSSP problem for multiple source vertices in large graphs. In this paper, we introduce the Dijkstra Strip Mined Relaxation (DSMR) algorithm, an efficient parallel SSSP algorithm for shared and distributed-memory systems. We also introduce a set of preprocessing optimization techniques that significantly reduce the communication overhead without increasing the total amount of work dramatically. Our results show that, DSMR is faster than the best previous algorithm, parallel Δ-Stepping, by up-to 7.38×. Saeed Maleki, Donald Nguyen, Andrew Lenharth, María Jesús Garzarán, David A. Padua, Keshav Pingali |
ICS | 5 |
| 2016 | DSMR: a shared and distributed memory algorithm for single-source shortest path problemabstractThe Single-Source Shortest Path (SSSP) problem is to find the shortest paths from a source vertex to all other vertices in a graph. In this paper, we introduce the Dijkstra Strip-Mined Relaxation (DSMR) algorithm, an efficient parallel SSSP algorithm for shared and distributed memory systems. Our results show that, DSMR is faster than parallel Δ-Stepping by a factor of up-to 1.66. Saeed Maleki, Donald Nguyen, Andrew Lenharth, María Jesús Garzarán, David A. Padua, Keshav Pingali |
PPoPP | 5 |
| 2015 | Compilers and the Furture of High Performance ComputingabstractCompiler technology has enabled the software advances of the last sixty years. It has given us machine-independent programming and improved productivity by automatically handling a number of issues, such as instruction selection and register allocation. However, in the parallel world of high performance computing, the impact of compiler technology has been small. Part of the reason is that the ambitious research projects of the last few decades, such as automatic parallelization and automatic generation of distributed memory programs à la High Performance Fortran, are yet to produce useful results. The absence of effective compiler technology has resulted in lack of portability and low productivity in the programming of parallel machines. With these problems growing more serious, due to the popularization of parallelism and the complexity increase expected in future high-end machines, advances in compiler technology are now more important than ever. In this presentation, I will discuss the state of the long standing problem of automatic parallelization and describe new important lines of research such as the identification of levels of abstractions that help both productivity and compilation, the development of a solid understanding of the automatic optimization process, the creation of a research methodology to enable the quantification of progress, and the development of an effective methodology for the interaction of programmers with compilers. David A. Padua |
HiPC | 1 |
| 2015 | Vectorization of apply to reduce interpretation overhead of RabstractR is a popular dynamic language designed for statistical computing. Despite R's huge user base, the inefficiency in R's language implementation becomes a major pain-point in everyday use as well as an obstacle to apply R to solve large scale analytics problems. The two most common approaches to improve the performance of dynamic languages are: implementing more efficient interpretation strategies and extending the interpreter with Just-In-Time (JIT) compiler. However, both approaches require significant changes to the interpreter, and complicate the adoption by development teams as a result. This paper presents a new approach to improve execution efficiency of R programs by vectorizing the widely used Apply class of operations. Apply accepts two parameters: a function and a collection of input data elements. The standard implementation of Apply iteratively invokes the input function with each element in the data collection. Our approach combines data transformation and function vectorization to convert the looping-over-data execution of the standard Apply into a single invocation of a vectorized function that contains a sequence of vector operations over the input data. This conversion can significantly speed-up the execution of Apply operations in R by reducing the number of interpretation steps. We implemented the vectorization transformation as an R package. To enable the optimization, all that is needed is to invoke the package, and the user can use a normal R interpreter without any changes. The evaluation shows that the proposed method delivers significant performance improvements for a collection of data analysis algorithm benchmarks. This is achieved without any native code generation and using only a single-thread of execution. Haichuan Wang, David A. Padua, Peng Wu 0001 |
OOPSLA | 2 |
| 2014 | Optimizing R VM: Allocation Removal and Path Length Reduction via Interpreter-level Specialization
Haichuan Wang, Peng Wu 0001, David A. Padua |
CGO | 3 |
| 2014 | Optimal Parallelogram Selection for Hierarchical TilingabstractLoop tiling is an effective optimization to improve performance of multiply nested loops, which are the most time-consuming parts in many programs. Most massively parallel systems today are organized hierarchically, and different levels of the hierarchy differ in the organization of parallelism and the memory models they adopt. To make better use of these machines, it is clear that loop nests should be tiled hierarchically to fit the hierarchical organization of the machine; however, it is not so clear what should be the exact form of these hierarchical tiles. In particular, tile shape selection is of critical importance to expose parallelism of the tiled loop nests. Although loop tiling is a well-known optimization, not much is known about tile shape selection. In this article, we study tile shape selection when the shapes are any type of parallelograms and introduce a model to relate the tile shape of the hierarchy to the execution time. Using this model, we implement a system that automatically finds the tile shapes that minimize the execution time in a hierarchical system. Our experimental results show that in several cases, the tiles automatically selected by our system outperform the most intuitive tiling schemes usually adopted by programmers because of their simplicity. Xing Zhou 0002, María Jesús Garzarán, David A. Padua |
ACM Trans. Archit. Code Optim. | 3 |
| 2013 | Hydra: Automatic algorithm exploration from linear algebra equationsabstractHydra accepts an equation written in terms of operations on matrices and automatically produces highly efficient code to solve these equations. Processing of the equation starts by tiling the matrices. This transforms the equation into either a single new equation containing terms involving tiles or into multiple equations some of which can be solved in parallel with each other. Hydra continues transforming the equations using tiling and seeking terms that Hydra knows how to compute or equations it knows how to solve. The end result is that by transforming the equations Hydra can produce multiple solvers with different locality behavior and/or different parallel execution profiles. Next, Hydra applies empirical search over this space of possible solvers to identify the most efficient version. In this way, Hydra enables the automatic production of efficient solvers requiring very little or no coding at all and delivering performance approximating that of the highly tuned library routines such as Intel's MKL. Alexandre Duchateau, David A. Padua, Denis Barthou |
CGO | 2 |
| 2012 | Hierarchical overlapped tilingabstractThis paper introduces hierarchical overlapped tiling, a transformation that applies loop tiling and fusion to conventional loops. Overlapped tiling is a useful transformation to reduce communication overhead, but it may also generate a significant amount of redundant computation. Hierarchical overlapped tiling performs overlapped tiling hierarchically to balance communication overhead and redundant computation, and thus has the potential to provide better performance. Xing Zhou 0002, Jean-Pierre Giacalone, María Jesús Garzarán, Robert H. Kuhn, David A. Padua |
CGO | 6 |
| 2012 | Performance Portability with the Chapel LanguageabstractIt has been widely shown that high-throughput computing architectures such as GPUs offer large performance gains compared with their traditional low-latency counterparts for many applications. The downside to these architectures is that the current programming models present numerous challenges to the programmer: lower-level languages, loss of portability across different architectures, explicit data movement, and challenges in performance optimization. This paper presents novel methods and compiler transformations that increase programmer productivity by enabling users of the language Chapel to provide a single code implementation that the compiler can then use to target not only conventional multiprocessors, but also high-throughput and hybrid machines. Rather than resorting to different parallel libraries or annotations for a given parallel platform, this work leverages a language that has been designed from first principles to address the challenge of programming for parallelism and locality. This also has the advantage of providing portability across different parallel architectures. Finally, this work presents experimental results from the Parboil benchmark suite which demonstrate that codes written in Chapel achieve performance comparable to the original versions implemented in CUDA on both GPUs and multicore platforms. Albert Sidelnik, Saeed Maleki, Bradford L. Chamberlain, María Jesús Garzarán, David A. Padua |
IPDPS | 5 |
| 2012 | Optimization techniques for efficient HTA programs
Basilio B. Fraguela, Ganesh Bikshandi, María Jesús Garzarán, David A. Padua, Christoph von Praun |
Parallel Comput. | 5 |
| 2011 | An Evaluation of Vectorizing CompilersabstractMost of today's processors include vector units that have been designed to speedup single threaded programs. Although vector instructions can deliver high performance, writing vector code in assembly language or using intrinsics in high level languages is a time consuming and error-prone task. The alternative is to automate the process of vectorization by using vectorizing compilers. This paper evaluates how well compilers vectorize a synthetic benchmark consisting of 151 loops, two application from Petascale Application Collaboration Teams (PACT), and eight applications from Media Bench II. We evaluated three compilers: GCC (version 4.7.0), ICC (version 12.0) and XLC (version 11.01). Our results show that despite all the work done in vectorization in the last 40 years 45-71% of the loops in the synthetic benchmark and only a few loops from the real applications are vectorized by the compilers we evaluated. Saeed Maleki, Yaoqing Gao, María Jesús Garzarán, Tommy Wong, David A. Padua |
PACT | 5 |
| 2011 | Panel StatementabstractSummary form only given, as follows. Parallel computing has become ubiquitous and relates to challenging computational problems in science via business-driven computing to mobile computing. The scope has widened dramatically over the last decade. This panel will debate and speculate on how the parallel computing landscape is expected to change in the years to come. Areas of focus will include: (1) Computing platforms: How will we be able to maintain the performance growth of the past and what will be the major challenges in the next 10 years and beyond that? What technical barriers are anticipated and what disruptive technologies are behind the corner? (2) Software: How will software infrastructures evolve to meet performance requirements in the next 10 years and beyond? How will we ever be able to hide parallelism obstacles for the masses and what is the road forward towards that? (3) Algorithms: What will be the major computational problems to tackle in the next 10 years and beyond? What are the most challenging algorithmic problems to solve? (4) Applications: What will be the next wave of grand challenge problems to focus on in the next 10 years and beyond? What will be the major performance driving applications in the general and mobile computing domains? A record of the panel discussion was not made available for publication as part of the conference proceedings. Per Stenström, Doug Burger, Wen-Mei W. Hwu, Kunle Olukotun, David A. Padua, Burton Smith |
IPDPS | 6 |
| 2011 | Scheduling of stream-based real-time applications for heterogeneous systemsabstractDesigners of mobile devices face the challenge of providing the user with more processing power while increasing battery life. Heterogeneous systems offer some opportunities to solve this challenge. In an heterogeneous system, multiple classes of processors with dynamic voltage and frequency scaling functionality are embedded in the mobile device. With such a system it is possible to maximize performance while minimizing power consumption if tasks are mapped to the class of processors where they execute the most efficiently. Bruno Virlet, Xing Zhou 0002, Jean-Pierre Giacalone, Bob Kuhn, María Jesús Garzarán, David A. Padua |
LCTES | 6 |
| 2011 | NSF/IEEE-TCPP curriculum initiative on parallel and distributed computing: core topics for undergraduatesabstractNo abstract available. Sushil K. Prasad, Almadena Yu. Chtchelkanova, Sajal K. Das 0001, Frank Dehne, Mohamed G. Gouda, Joseph F. JáJá, Krishna Kant 0001, Anita La Salle, Richard LeBlanc, Manish Lumsdaine, David A. Padua, Manish Parashar, Viktor Prasanna 0001, Yves Robert, Arnold L. Rosenberg, Sartaj Sahni, Behrooz A. Shirazi, Alan Sussman, Charles C. Weems, Jie Wu 0001 |
SIGCSE | 12 |
| 2009 | Task-Parallel versus Data-Parallel Library-Based Programming in Multicore SystemsabstractMulticore machines are becoming common. There are many languages, language extensions and libraries devoted to improve the programmability and performance of these machines. In this paper we compare two libraries, that face the problem of programming multi-cores from two different perspectives, task parallelism and data parallelism. The Intel threading building blocks (TBB) library separates logical task patterns, which are easy to understand, from physical threads, and delegates the scheduling of the tasks to the system. On the other hand, hierarchically tiled arrays (HTAs) are data structures that facilitate locality and parallelism of array intensive computations with a block-recursive nature following a data-parallel paradigm. Our comparison considers both ease of programming and the performance obtained using both approaches. In our experience, HTA programs tend to be smaller or as long as TBB programs, while performance of both approaches is very similar. Diego Andrade, Basilio B. Fraguela, James C. Brodman, David A. Padua |
PDP | 4 |
| 2009 | Communication contention in APN list scheduling algorithm
Xiaoyong Tang, Kenli Li 0001, David A. Padua |
Sci. China Ser. F Inf. Sci. | 3 |
| 2009 | Writing productive stencil codes with overlapped tilingabstractAbstract Stencil computations constitute the kernel of many scientific applications. Tiling is often used to improve the performance of stencil codes for data locality and parallelism. However, tiled stencil codes typically require shadow regions, whose management becomes a burden to programmers. In fact, it is often the case that the code required to manage these regions, and in particular their updates, is much longer than the computational kernel of the stencil. As a result, shadow regions usually impact programmers' productivity negatively. In this paper, we describeoverlapped tiling, a construct that supports shadow regions in a convenient, flexible and efficient manner in the context of the hierarchically tiled array (HTA) data type. The HTA is a class designed to express algorithms with a high degree of parallelism and/or locality as naturally as possible in terms of tiles. We discuss the syntax and implementation of overlapped HTAs as well as our experience in rewriting parallel and sequential codes using them. The results have been satisfactory in terms of both productivity and performance. For example, overlapped HTAs reduced the number of communication statements in non‐trivial codes by 78% on average while speeding them up. We also examine different implementation options and compare overlapped HTAs with previous approaches. Copyright © 2008 John Wiley & Sons, Ltd. Ganesh Bikshandi, Basilio B. Fraguela, David A. Padua |
Concurr. Comput. Pract. Exp. | 4 |
| 2008 | Automatic generation of a parallel sorting algorithmabstractIn this paper, we discuss a library generator for parallel sorting routines that examines the input characteristics (and the parameters they affect) to select the best performing algorithm. Our preliminary experimental results show that the automatic generation of a distributed memory parallel sorting routine provides up to a four fold improvement over standard parallel algorithms with typical parameters. With the recent importance of multicore processors, we are extending this work to shared memory. This provides new challenges specific to multicore systems. However, with their increasing popularity, this extension becomes very valuable. Brian A. Garber, Daniel Hoeflinger, Xiaoming Li 0004, María Jesús Garzarán, David A. Padua |
IPDPS | 5 |
| 2008 | Programming with tilesabstractThe importance of tiles or blocks in scientific computing cannot be overstated. Many algorithms, both iterative and recursive, can be expressed naturally if tiles are represented explicitly. From the point of view of performance, tiling, either as a code or a data layout transformation, is one of the most effective ways to exploit locality, which is a must to achieve good performance in current computers because of the significant difference in speed between processor and memory. Furthermore, tiles are also useful to express data distribution in parallel computations. However, despite the importance of tiles, most languages do not support them directly. This gives place to bloated programs populated with numerous subscript expressions which make the code difficult to read and coding mistakes more likely. Ganesh Bikshandi, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua |
PPoPP | 5 |
| 2007 | Optimizing Sorting with Machine Learning AlgorithmsabstractThe growing complexity of modern processors has made the development of highly efficient code increasingly difficult. A promising automatic code generation strategy is implemented by library generators. This approach has mainly been applied to scientific codes which can be optimized by identifying code characteristics that depend only on the target machine. In this paper, we study the generation of sorting routines whose performance also depends on the characteristics of the input data. We present two approaches to generate efficient sorting routines. First, we consider the problem of selecting the best "pure" sorting algorithm as a function of the characteristics of the input data. We used machine learning algorithms to compute a function for each target machine that, at runtime, is used to select the best algorithm. Our second approach generalizes the first approach and can build new sorting algorithms from a few primitive operations. We use genetic algorithms and a classifier system to build hierarchically-organized hybrid sorting algorithms. Our results show that the algorithms generated using this second approach are quite effective and perform significantly better than the many conventional sorting implementations we tested. In particular, the routines generated using the second approach performs better than the most popular libraries available today: IBM ESSL, INTEL MKL and the C+ + STL. Xiaoming Li 0004, María Jesús Garzarán, David A. Padua |
IPDPS | 3 |
| 2006 | Hierarchically tiled arrays for parallelism and localityabstractParallel programming is facilitated by constructs which, unlike the widely used SPMD paradigm, provide programmers with a global view of the code and data structures. These constructs could be compiler directives containing information about data and task distribution, language extensions specifically designed for parallel computation, or classes that encapsulate parallelism. In this paper, we describe a class developed at Illinois and its Matlab implementation. This class can be used to conveniently express both parallelism and locality. A C++ implementation is now underway. Its characteristics will be reported in a future paper. We have implemented most of the NAS benchmarks using our HTA Matlab extensions and found during that HTAs enable the fast prototyping of parallel algorithms and produce programs that are easy to understand and maintain. Ganesh Bikshandi, Daniel Hoeflinger, Gheorghe Almási 0001, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua, Christoph von Praun |
IPDPS | 7 |
| 2006 | Optimizing data permutations for SIMD devices
Gang Ren 0002, Peng Wu 0001, David A. Padua |
PLDI | 3 |
| 2006 | Programming for parallelism and locality with hierarchically tiled arraysabstractTiling has proven to be an effective mechanism to develop high performance implementations of algorithms. Tiling can be used to organize computations so that communication costs in parallel programs are reduced and locality in sequential codes or sequential components of parallel programs is enhanced.In this paper, a data type - Hierarchically Tiled Arrays or HTAs - that facilitates the direct manipulation of tiles is introduced. HTA operations are overloaded array operations. We argue that the implementation of HTAs in sequential OO languages transforms these languages into powerful tools for the development of high-performance parallel codes and codes with high degree of locality. To support this claim, we discuss our experiences with the implementation of HTAs for MATLAB and C++ and the rewriting of the NAS benchmarks and a few other programs into HTA-based parallel form. Ganesh Bikshandi, Daniel Hoeflinger, Gheorghe Almási 0001, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua, Christoph von Praun |
PPoPP | 7 |
| 2006 | In search of a program generator to implement generic transformations for high-performance computing
Albert Cohen 0001, Sébastien Donadio, María Jesús Garzarán, Christoph Armin Herrmann, Oleg Kiselyov, David A. Padua |
Sci. Comput. Program. | 6 |
| 2005 | Optimizing Sorting with Genetic AlgorithmsabstractThe growing complexity of modern processors has made the generation of highly efficient code increasingly difficult. Manual code generation is very time consuming, but it is often the only choice since the code generated by today's compiler technology often has much lower performance than the best hand-tuned codes. A promising code generation strategy, implemented by systems like ATLAS, FFTW, and SPIRAL, uses empirical search to find the parameter values of the implementation, such as the tile size and instruction schedules, that deliver near-optimal performance for a particular machine. However, this approach has only proven successful on scientific codes whose performance does not depend on the input data. In this paper we study machine learning techniques to extend empirical search to the generation of sorting routines, whose performance depends on the input characteristics and the architecture of the target machine. We build on a previous study that selects a "pure" sorting algorithm at the outset of the computation as a function of the standard deviation. The approach discussed in this paper uses genetic algorithms and a classifier system to build hierarchically-organized hybrid sorting algorithms capable of adapting to the input data. Our results show that such algorithms generated using the approach presented in this paper are quite effective at taking into account the complex interactions between architectural and input data characteristics and that the resulting code performs significantly better than conventional sorting implementations and the code generated by our earlier study. In particular, the routines generated using our approach perform better than all the commercial libraries that we tried including IBM ESSL, INTEL MKL and the C++ STL The best algorithm we have been able to generate is on the average 26% and 62% faster than the IBM ESSL in an IBM Power 3 and IBM Power 4, respectively. Xiaoming Li 0004, María Jesús Garzarán, David A. Padua |
CGO | 3 |
| 2005 | Parallel mining of closed sequential patternsabstractDiscovery of sequential patterns is an essential data mining task with broad applications. Among several variations of sequential patterns, closed sequential pattern is the most useful one since it retains all the information of the complete pattern set but is often much more compact than it. Unfortunately, there is no parallel closed sequential pattern mining method proposed yet. In this paper we develop an algorithm, called Par-CSP (Parallel Closed Sequential Pattern mining), to conduct parallel mining of closed sequential patterns on a distributed memory system. Par-CSP partitions the work among the processors by exploiting the divide-and-conquer property so that the overhead of interprocessor communication is minimized. Par-CSP applies dynamic scheduling to avoid processor idling. Moreover, it employs a technique, called selective sampling to address the load imbalance problem. We implement Par-CSP using MPI on a 64-node Linux cluster. Our experimental results show that Par-CSP attains good parallelization efficiencies on various input datasets. Shengnan Cong, Jiawei Han 0001, David A. Padua |
KDD | 3 |
| 2005 | A sampling-based framework for parallel data miningabstractThe goal of data mining algorithm is to discover useful information embedded in large databases. Frequent itemset mining and sequential pattern mining are two important data mining problems with broad applications. Perhaps the most efficient way to solve these problems sequentially is to apply a pattern-growth algorithm, which is a divide-and-conquer algorithm [9, 10]. In this paper, we present a framework for parallel mining frequent itemsets and sequential patterns based on the divide-and-conquer strategy of pattern growth. Then, we discuss the load balancing problem and introduce a sampling technique, called selective sampling, to address this problem. We implemented parallel versions of both frequent itemsets and sequential pattern mining algorithms following our framework. The experimental results show that our parallel algorithms usually achieve excellent speedups. Shengnan Cong, Jiawei Han 0001, Jay P. Hoeflinger, David A. Padua |
PPoPP | 4 |
| 2005 | Compiler techniques for high performance sequentially consistent java programsabstractThe rise of Java, C#, and other explicitly parallel languages has increased the importance of compiling for different software memory models. This paper describes co-operating escape, thread structure, and delay set analyses that enable high performance for sequentially consistent programs.We compare the performance of a set of Java programs compiled for sequential consistency (SC) with the performance of the same programs compiled for weak consistency. For SC, we observe a slowdown of 10% on average for an architecture based on the Intel Xeon processor, and 26% on average for an architecture based on the IBM Power3. Zehra Sura, David Chi-Leung Wong, Samuel P. Midkiff, Jaejin Lee, David A. Padua |
PPoPP | 6 |
| 2005 | Special Issue on Program Generation, Optimization, and Platform Adaptation
José M. F. Moura, Markus Püschel, David A. Padua, Jack J. Dongarra |
Proc. IEEE | 3 |
| 2005 | SPIRAL: Code Generation for DSP TransformsabstractFast changing, increasingly complex, and diverse computing platforms pose central problems in scientific computing: How to achieve, with reasonable effort, portable optimal performance? We present SPIRAL, which considers this problem for the performance-critical domain of linear digital signal processing (DSP) transforms. For a specified transform, SPIRAL automatically generates high-performance code that is tuned to the given platform. SPIRAL formulates the tuning as an optimization problem and exploits the domain-specific mathematical structure of transform algorithms to implement a feedback-driven optimizer. Similar to a human expert, for a specified transform, SPIRAL "intelligently" generates and explores algorithmic and implementation choices to find the best match to the computer's microarchitecture. The "intelligence" is provided by search and learning techniques that exploit the structure of the algorithm and implementation space to guide the exploration and optimization. SPIRAL generates high-performance code for a broad set of DSP transforms, including the discrete Fourier transform, other trigonometric transforms, filter transforms, and discrete wavelet transforms. Experimental results show that the code generated by SPIRAL competes with, and sometimes outperforms, the best available human tuned transform library code. Markus Püschel, José M. F. Moura, Jeremy Johnson 0001, David A. Padua, Manuela M. Veloso, Bryan Singer, Jianxin Xiong, Franz Franchetti, Aca Gacic, Yevgen Voronenko, Robert W. Johnson, Nick Rizzolo |
Proc. IEEE | 4 |
| 2005 | Is Search Really Necessary to Generate High-Performance BLAS?abstractA key step in program optimization is the estimation of optimal values for parameters such as tile sizes and loop unrolling factors. Traditional compilers use simple analytical models to compute these values. In contrast, library generators like ATLAS use global search over the space of parameter values by generating programs with many different combinations of parameter values, and running them on the actual hardware to determine which values give the best performance. It is widely believed that traditional model-driven optimization cannot compete with search-based empirical optimization because tractable analytical models cannot capture all the complexities of modern high-performance architectures, but few quantitative comparisons have been done to date. To make such a comparison, we replaced the global search engine in ATLAS with a model-driven optimization engine and measured the relative performance of the code produced by the two systems on a variety of architectures. Since both systems use the same code generator, any differences in the performance of the code produced by the two systems can come only from differences in optimization parameter values. Our experiments show that model-driven optimization can be surprisingly effective and can generate code with performance comparable to that of code generated by ATLAS using global search. Kamen Yotov, Xiaoming Li 0004, Gang Ren 0002, María Jesús Garzarán, David A. Padua, Keshav Pingali, Paul Stodghill |
Proc. IEEE | 5 |
| 2004 | A Dynamically Tuned Sorting LibraryabstractEmpirical search is a strategy used during the installation of library generators such as ATLAS, FFTW, and SPIRAL to identify the algorithm or the version of an algorithm that delivers the best performance. In the past, empirical search has been applied almost exclusively to scientific problems. In this paper, we discuss the application of empirical search to sorting, which is one of the best understood symbolic computing problems. When contrasted with the dense numerical computations of ATLAS, FFTW, and SPIRAL, sorting presents a new challenge, namely that the relative performance of the algorithms depend not only on the characteristics of the target machine and the size of the input data but also on the distribution of values in the input data set. Empirical search is applied in the study reported here as part of a sorting library generator. The resulting routines dynamically adapt to the characteristics of the input data by selecting the best sorting algorithm from a small set of alternatives. To generate the run time selection mechanism our generator makes use of machine learning to predict the best algorithm as a function of the characteristics of the input data set and the performance of the different algorithms on the target machine. This prediction is based on the data obtained through empirical search at installation time. Our results show that our approach is quite effective. When sorting data inputs of 12M keys with various standard deviations, our adaptive approach selected the best algorithm for all the input data sets and all platforms that we tried in our experiments. The wrong decision could have introduced a performance degradation of up to 133%, with an average value of 44%. Xiaoming Li 0004, María Jesús Garzarán, David A. Padua |
CGO | 3 |
| 2004 | A compiler for multiple memory modelsabstractAbstract The design of consistency models for both hardware and software is a difficult task. For a programming language, it is particularly difficult because the target audience for a high‐level programming language is much wider than the target audience for a machine language, making usability a more important criterion. Exacerbating this problem is the reality that the programming language community has little experience designing programming language consistency models, and therefore each new attempt is very much a voyage into uncharted territory. A concrete example of the difficulties of the task is the current Java Memory Model. Although designed to be easy to use by Java programmers, it is poorly understood and at least one common idiom (the ‘double check idiom’) to exploit the model is unsafe. In this paper, we describe the design of an optimizing Java compiler that will accept either as input or as an interface implementation a consistency model for the code to be compiled. The compiler will use Shasha and Snir's delay set analysis, and our CSSA program representation to provide a canonical representation for the effects of different consistency models on optimizations and analysis. The compiler will serve as a testbed to prototype new memory models, and to measure the effects of different memory models on program performance. Copyright © 2004 John Wiley & Sons, Ltd. Samuel P. Midkiff, Jaejin Lee, David A. Padua |
Concurr. Comput. Pract. Exp. | 3 |
| 2003 | Estimating cache misses and locality using stack distancesabstractCache behavior modeling is an important part of modern optimizing compilers. In this paper we present a method to estimate the number of cache misses, at compile time, using a machine independent model based on stack algorithms. Our algorithm computes the stack histograms symbolically, using data dependence distance vectors and is totally accurate when dependence distances are uniformly generated. The stack histogram models accurately fully associative caches with LRU replacement policy, and provides a very good approximation for set-associative caches and programs with non-constant dependence distances.The stack histogram is an accurate, machine-independent metric of locality. Compilers using this metric can evaluate optimizations with respect to memory behavior. We illustrate this use of the stack histogram by comparing three locality enhancing transformations: tiling, data shackling and the product-space transformation. Additionally, the stack histogram model can be used to compute optimal parameters for data locality transformations, such as the tile size for loop tiling. Calin Cascaval, David A. Padua |
ICS | 2 |
| 2003 | A comparison of empirical and model-driven optimizationabstractEmpirical program optimizers estimate the values of key optimization parameters by generating different program versions and running them on the actual hardware to determine which values give the best performance. In contrast, conventional compilers use models of programs and machines to choose these parameters. It is widely believed that model-driven optimization does not compete with empirical optimization, but few quantitative comparisons have been done to date. To make such a comparison, we replaced the empirical optimization engine in ATLAS (a system for generating a dense numerical linear algebra library called the BLAS) with a model-driven optimization engine that used detailed models to estimate values for optimization parameters, and then measured the relative performance of the two systems on three different hardware platforms. Our experiments show that model-driven optimization can be surprisingly effective, and can generate code whose performance is comparable to that of code generated by empirical optimizers for the BLAS. Kamen Yotov, Xiaoming Li 0004, Gang Ren 0002, Michael Cibulskis, Gerald DeJong, María Jesús Garzarán, David A. Padua, Keshav Pingali, Paul Stodghill, Peng Wu 0001 |
PLDI | 7 |
| 2003 | Programming the FlexRAM parallel intelligent memory systemabstractIn an intelligent memory architecture, the main memory of a computer is enhanced with many simple processors. The result is a highly-parallel, heterogeneous machine that is able to exploit computation in the main memory. While several instantiations of this architecture have been proposed, the question of how to effectively program them with little effort has remained a major challenge.In this paper, we show how to effectively hand-program an intelligent memory architecture at a high level and with very modest effort. We use FlexRAM as a prototype architecture. To program it, we propose a family of high-level compiler directives inspired by OpenMP called CFlex. Such directives enable the processors in memory to execute the program in cooperation with the main processor. In addition, we propose libraries of highly-optimized functions called Intelligent Memory Operations (IMOs). These functions program the processors in memory through CFlex, but make them completely transparent to the programmer. Simulation results show that, with CFlex and IMOs, a server with 64 simple processors in memory runs on average 10 times faster than a conventional server. Moreover, a set of conventional programs with 240 lines on average are transformed into CFlex parallel form with only 7 CFlex directives and 2 additional statements on average. Basilio B. Fraguela, Jose Renau, Paul Feautrier, David A. Padua, Josep Torrellas |
PPoPP | 4 |
| 2003 | Compiler Techniques for the Distribution of Data and ComputationabstractThis paper presents a new method that can be applied by a parallelizing compiler to find, without user intervention, the iteration and data decompositions that minimize communication and load imbalance overheads in parallel programs targeted at NUMA architectures. One of the key ingredients in our approach is the representation of locality as a locality-communication graph (ICG) and the formulation of the compiler technique as a mixed integer nonlinear programming (MINLP) optimization problem on this graph. The objective function and constraints of the optimization problem model communication costs and load imbalance. The solution to this optimization problem is a decomposition that minimizes the parallel execution overhead. This paper summarizes the process of how the compiler extracts the locality information from a nonannotated code and focuses on how this compiler can derive the optimization problem, solve it, and generate the parallel code with the automatically selected iteration and data distributions. In addition, we include a discussion about our model and the solutions - the decompositions - that it provides. The approach presented in the paper is evaluated using several benchmarks. The experimental results demonstrate that the MINLP formulation does not increase compilation time significantly and that our framework generates very efficient iteration/data distributions for a variety of NUMA machines. Angeles G. Navarro, Emilio L. Zapata, David A. Padua |
IEEE Trans. Parallel Distributed Syst. | 3 |
| 2002 | Instance-wise points-to analysis for loop-based dependence testingabstractWe present a points-to analysis that aims at enabling loop-based dependence analysis in the presence of Java references. The analysis is based on an abstraction called element-wise points-to (ewpt) mapping. An ewpt mapping summarizes, in a compact representation, the relation between a pointer and the heap object it points to, for every instance of the pointer inside a loop and for every array element directly accessible through this pointer. Such instance-wise and element-wise information is especially important for loop-based dependence analyses and for a language where multi-dimensional arrays are implemented as arrays of pointers. We describe an iterative algorithm to compute ewpt mappings. We also present techniques to remove objects from ewpt mappings for destructive updates.The points-to algorithm was implemented and evaluated on a set of benchmark programs. We demonstrate that ewpt information can significantly improve the precision of dependence analysis. In many cases, the dependence analysis reports no false dependences due to array accesses. Peng Wu 0001, Paul Feautrier, David A. Padua, Zehra Sura |
ICS | 3 |
| 2002 | MaJIC: Compiling MATLAB for Speed and ResponsivenessabstractThis paper presents and evaluates techniques to improve the execution performance of MATLAB. Previous efforts concentrated on source to source translation and batch compilation; MaJIC provides an interactive frontend that looks like MATLAB and compiles/optimizes code behind the scenes in real time, employing a combination of just-in-time and speculative ahead-of-time compilation. Performance results show that the proper mixture of these two techniques can yield near-zero response time as well as performance gains previously achieved only by batch compilers. Gheorghe Almási 0001, David A. Padua |
PLDI | 2 |
| 2002 | Efficient and precise array access analysisabstractA number of existing compiler techniques hinge on the analysis of array accesses in a program. The most important task in array access analysis is to collect the information about array accesses of interest and summarize it in some standard form. Traditional forms used in array access analysis are sensitive to the complexity of array subscripts; that is, they are usually quite accurate and efficient for simple array subscripting expressions, but lose accuracy or require potentially expensive algorithms for complex subscripts. Our study has revealed that in many programs, particularly numerical applications, many access patterns are simple in nature even when the subscripting expressions are complex. Based on this analysis, we have developed a new, general array region representational form, called the linear memory access descriptor (LMAD). The key idea of the LMAD is to relate all memory accesses to the linear machine memory rather than to the shape of the logical data structures of a programming language. This form helps us expose the simplicity of the actual patterns of array accesses in memory, which may be hidden by complex array subscript expressions. Our recent experimental studies show that our new representation simplifies array access analysis and, thus, enables efficient and accurate compiler analysis. Yunheung Paek, Jay P. Hoeflinger, David A. Padua |
ACM Trans. Program. Lang. Syst. | 3 |
| 2002 | An Advanced Compiler Framework for Non-Cache-Coherent MultiprocessorsabstractThe Cray T3D and T3E are non-cache-coherent (NCC) computers with a NUMA structure. They have been shown to exhibit a very stable and scalable performance for a variety of application programs. Considerable evidence suggests that they are more stable and scalable than many other shared-memory multiprocessors. However, the principal drawback of these machines is a lack of programmability, caused by the absence of the global cache coherence that is necessary to provide a convenient shared view of memory in hardware. This forces the programmer to keep careful track of where each piece of data is stored, a complication that is unnecessary when a pure shared-memory view is presented to the user. We believe that a remedy for this problem is advanced compiler technology. In this paper, we present our experience with a compiler framework for automatic parallelization and communication generation that has the potential to reduce the time-consuming hand-tuning that would otherwise be necessary to achieve good performance with this type of machine. From our experiments, we learned that our compiler performs well for a variety of applications on the T3D and T3E and we found a few sophisticated techniques that could improve performance even more once they are fully implemented in the compiler. Yunheung Paek, Angeles G. Navarro, Emilio L. Zapata, Jay P. Hoeflinger, David A. Padua |
IEEE Trans. Parallel Distributed Syst. | 5 |
| 2001 | Monotonic evolution: an alternative to induction variable substitution for dependence analysisabstractWe present a new approach to dependence testing in the presence of induction variables. Instead of looking for closed form expressions, our method computes monotonic evolution which captures the direction in which the value of a variable changes. This information is then used in the dependence test to help determine whether array references are dependence-free. Under this scheme, closed form computation and induction variable substitution can be delayed until after the dependence test and be performed on-demand. To improve computative efficiency, we also propose an optimized (non-iterative) data-flow algorithm to compute evolution. Experimental results show that dependence tests based on evolution information matches the accuracy of that based on closed-form computation (implemented in Polaris), and when no closed form expressions can be calculated, our method is more accurate than that of Polaris. Peng Wu 0001, Albert Cohen 0001, Jay P. Hoeflinger, David A. Padua |
ICS | 4 |
| 2001 | A synthesis of memory mechanisms for distributed architecturesabstractProducing efficient parallel programs for distributed memory multiprocessors is a difficult task. Hand-coding efficient parallel programs for these systems can be extremely difficult, time consuming and error-prone, so people have turned to the shared memory abstraction and automatic parallelizing compilers to ease the task. The two main approaches to this are using compilers that 1) generate message passing code, or 2) generate code for a distributed shared memory software layer. Neither has been completely successful for all types of programs. In this paper, we discuss the use of a combination of these mechanisms to produce a compiler code generation paradigm that can be successful for many user programs. The experimental results indicate that our new paradigm would be able to support both regular and irregular code efficiently. Jiajing Zhu, Jay P. Hoeflinger, David A. Padua |
ICS | 3 |
| 2001 | SPL: A Language and Compiler for DSP AlgorithmsabstractWe discuss the design and implementation of a compiler that translates formulas representing signal processing transforms into efficient C or Fortran programs. The formulas are represented in a language that we call SPL, an acronym from Signal Processing Language. The compiler is a component of the SPIRAL system which makes use of formula transformations and intelligent search strategies to automatically generate optimized digital signal processing (DSP) libraries. After a discussion of the translation and optimization techniques implemented in the compiler, we use SPL formulations of the fast Fourier transform (FFT) to evaluate the compiler. Our results show that SPIRAL, which can be used to implement many classes of algorithms, produces programs that perform as well as “hard-wired” systems like FFTW. Jianxin Xiong, Jeremy Johnson 0001, Robert W. Johnson, David A. Padua |
PLDI | 4 |
| 2001 | Hiding Relaxed Memory Consistency with a Compiler
Jaejin Lee, David A. Padua |
IEEE Trans. Computers | 2 |
| 2000 | Analysis of Irregular Single-Indexed Array Accesses and Its Applications in Compiler Optimizations
David A. Padua |
CC | 2 |
| 2000 | Compiler analysis of irregular memory accessesabstractIrregular array accesses are array accesses whose array subscripts do not have closed-form expressions in terms of loop indices. Traditional array analysis and loop transformation techniques cannot handle irregular array accesses. In this paper, we study two kinds of simple and common cases of irregular array accesses: single-indexed access and indirect array access. We present techniques to analyze these two cases at compile-time, and we provide experimental results showing the effectiveness of these techniques in finding more implicit loop parallelism at compile-time and improved speedups. David A. Padua |
PLDI | 2 |
| 2000 | A Simple Framework to Calculate the Reaching Definition of Array References and Its Use in Subscript Array AnalysisabstractThe property analysis of subscript arrays can be used to facilitate the automatic detection of parallelism in sparse/irregular programs that use indirectly accessed arrays. In order for property analysis to work, array reaching definition information is needed. In this paper, we present a framework to efficiently calculate the array reaching definition. This method is designed to handle the common program patterns in real programs. We use some available techniques as the building components, such as data dependence tests and array summary set representations and operations. Our method is more efficient as well as more flexible than the existing techniques. Copyright © 2000 John Wiley & Sons, Ltd. David A. Padua |
Concurr. Pract. Exp. | 2 |
| 1999 | MATmarks: A Shared Memory Environment for MATLAB ProgrammingabstractMATmarks is an extension of the MATLAB tool that enables shared memory programming on a network of workstations by adding a small set of commands. The authors present a high level overview of the MATmarks system, the commands we added to MATLAB, and the performance gains we achieved as a result. Gheorghe Almási 0001, Calin Cascaval, David A. Padua |
HPDC | 3 |
| 1999 | Access Descriptor Based Locality Analysis for Distributed-Shared Memory MultiprocessorsabstractMost of today's multiprocessors have a Distributed-Shared Memory (DSM) organization, which enables scalability while retaining the convenience of the shared-memory programming paradigm. Data locality is crucial for performance in DSM machines, due to the difference in access times between local and remote memories. In this paper, we present a compile-time representation that captures the memory locality exhibited by a program in the form of a graph known as Locality-Communication Graph (LCG). In the LCG, each node represents a DO loop nest which can have at most one level of parallelism. Not all loops need to be represented within a node and, therefore, the LCG may contain cycles. Our representation works whether the loops represented by the nodes are perfectly nested or not, and the subscript expressions and loop limits can be affine or non-affine expressions of the loop indices. The LCG provides essential information that a parallelizing compiler can use to automatically choose a good iteration/data distribution and to schedule the communication operations required during program execution. Angeles G. Navarro, Rafael Asenjo, Emilio L. Zapata, David A. Padua |
ICPP | 4 |
| 1999 | Basic Compiler Algorithms for Parallel ProgramsabstractTraditional compiler techniques developed for sequential programs do not guarantee the correctness (sequential consistency) of compiler transformations when applied to parallel programs. This is because traditional compilers for sequential programs do not account for the updates to a shared variable by different threads. We present a concurrent static single assignment (CSSA) form for parallel programs containing cobegin/coend and parallel do constructs and post/wait synchronization primitives. Based on the CSSA form, we present copy propagation and dead code elimination techniques. Also, a global value numbering technique that detects equivalent variables in parallel programs is presented. By using global value numbering and the CSSA form, we extend classical common subexpression elimination, redundant load/store elimination, and loop invariant detection to parallel programs without violating sequential consistency. These optimization techniques are the most commonly used techniques for sequential programs. By extending these techniques to parallel programs, we can guarantee the correctness of the optimized program and maintain single processor performance in a multiprocessor environment. Jaejin Lee, David A. Padua, Samuel P. Midkiff |
PPoPP | 2 |
| 1999 | Techniques for the Translation of MATLAB Programs into Fortran 90abstractThis article describes the main techiques developed for FALCON's MATLAB-to-Fortran 90 compiler. FALCON is a programming environment for the development of high-performance scientific programs. It combines static and dynamic inference methods to translate MATLAB programs into Fortran 90. The static inference is supported with advanced value propagation techniques and symbolic algorithms for subscript analysis. Experiments show that FALCON's MATLAB translator can generate code that performs more than 1000 times faster than the interpreted version of MATLAB and substantially faster than commercially available MATLAB compilers on one processor of an SGI Power Challenge. Futhermore, in most cases we have tested, the compiler-generated code is as fast as corresponding hand-written programs. Luiz De Rose, David A. Padua |
ACM Trans. Program. Lang. Syst. | 2 |
| 1999 | The LRPD Test: Speculative Run-Time Parallelization of Loops with Privatization and Reduction ParallelizationabstractCurrent parallelizing compilers cannot identify a significant fraction of parallelizable loops because they have complex or statically insufficiently defined access patterns. As parallelizable loops arise frequently in practice, we advocate a novel framework for their identification: speculatively execute the loop as a doall and apply a fully parallel data dependence test to determine if it had any cross-iteration dependences; if the test fails, then the loop is reexecuted serially. Since, from our experience, a significant amount of the available parallelism in Fortran programs can be exploited by loops transformed through privatization and reduction parallelization, our methods can speculatively apply these transformations and then check their validity at run-time. Another important contribution of this paper is a novel method for reduction recognition which goes beyond syntactic pattern matching: it detects at run-time if the values stored in an array participate in a reduction operation, even if they are transferred through private variables and/or are affected by statically unpredictable control flow. We present experimental results on loops from the PERFECT Benchmarks, which substantiate our claim that these techniques can yield significant speedups which are often superior to those obtainable by inspector/executor methods. Lawrence Rauchwerger, David A. Padua |
IEEE Trans. Parallel Distributed Syst. | 2 |
| 1998 | Simplification of Array Access Patterns for Compiler OptimizationsabstractExisting array region representation techniques are sensitive to the complexity of array subscripts. In general, these techniques are very accurate and efficient for simple subscript expressions, but lose accuracy or require potentially expensive algorithms for complex subscripts. We found that in scientific applications, many access patterns are simple even when the subscript expressions are complex. In this work, we present a new, general array access representation and define operations for it. This allows us to aggregate and simplify the representation enough that precise region operations may be applied to enable compiler optimizations. Our experiments show that these techniques hold promise for speeding up applications. Yunheung Paek, Jay P. Hoeflinger, David A. Padua |
PLDI | 3 |
| 1998 | On the Automatic Parallelization of the Perfect BenchmarksabstractThis paper presents the results of the Cedar Hand-Parallelization Experiment conducted from 1989 through 1992, within the Center for Supercomputing Research and Development (CSRD) at the University of Illinois. In this experiment, we manually transformed the Perfect Benchmarks(R) into parallel program versions. In doing so, we used techniques that may be automated in an optimizing compiler. We then ran these programs on the Cedar multiprocessor (built at CSRD during the 1980s) and measured the speed improvement due to each technique. The results presented here extend the findings previously reported. The techniques credited most for the performance gains include array privatization, parallelization of reduction operations, and the substitution of generalized induction variables. All these techniques can be considered extensions of transformations that were available in vectorizers and commercial restructuring compilers of the late 1980s. We applied these transformations by hand to the given programs, in a mechanical manner, similar to that of a parallelizing compiler. Because of our success with these transformations, we believed that it would be possible to implement many of these techniques in a new parallelizing compiler. Such a compiler has been completed in the meantime and we show preliminary results. Rudolf Eigenmann, Jay P. Hoeflinger, David A. Padua |
IEEE Trans. Parallel Distributed Syst. | 3 |
| 1997 | Compiler Techniques for Effective Communication on Distributed-Memory MultiprocessorsabstractThe Polaris restructurer transforms conventional Fortran programs into parallel form for various types of multiprocessor systems. This paper presents the results of a study on strategies to improve the effectiveness of Polaris' techniques for distributed-memory multiprocessors. Our study, which is based on the hand analysis of MDG and TRFD from the Perfect Benchmarks and TOYCATV and SWIM from SPEC benchmarks, identified three techniques that are important for improving communication optimization. Their application produces almost perfect speedups for the four programs on the Cray T3D. Angeles G. Navarro, Emilio L. Zapata, Yunheung Paek, David A. Padua |
ICPP | 4 |
| 1996 | A MATLAB to Fortran 90 Translator and Its EffectivenessabstractIn this paper, we describe the inference mechanism used by the FALCON system to translate MATLAB programs to Fortran 90. FALCON is a programming environment for the development of scientific libraries and applications. The objective of the MATLAB compiler is to allow program development to take place in a userfriendly, interactive environment without sacrificing performance. FALCON's inference mechanism combines static and dynamic inference methods for intrinsic type, rank, and shape inference, and is supported by a sophisticated symbolic value propagation algorithm. Experimental results show that FALCON's MATLAB compiler can generate code that is over 1000 times faster than MATLAB on a uniprocessor SGI Power Challenge, and is often as fast as handwritten Fortran programs. Luiz De Rose, David A. Padua |
International Conference on Supercomputing | 2 |
| 1996 | Static and Dynamic Evaluation of Data Dependence Analysis TechniquesabstractData dependence analysis techniques are the main component of today's trategies for automatic detection of parallelism. Parallelism detection strategies are being incorporated in commercial compilers with increasing frequency because of the widespread use of processors capable of exploiting instruction-level parallelism and the growing importance of multiprocessors. An assessment of the accuracy of data dependence tests is therefore of great importance for compiler writers and researchers. The tests evaluated in this study include the generalized greatest common divisor test, three variants of Banerjee's test, and the Omega test. Their effectiveness was measured with respect to the Perfect Benchmarks and the linear algebra libraries, EISPACK and LAPACK. Two methods were applied, one using only compile-time information for the analysis, and the second using information gathered during program execution. The results indicate that Banerjee's test is for all practical purposes as accurate as the more complex Omega test in detecting parallelism. However, the Omega test is quite effective in proving the existence of dependences, in contrast with Banerjee's test, which can only disprove, or break dependences. The capability of the Omega test of proving dependences could have a significant impact on several compiler algorithms not considered in this study. Paul Petersen, David A. Padua |
IEEE Trans. Parallel Distributed Syst. | 2 |
| 1995 | Run-Time Methods for Parallelizing Partially Parallel LoopsabstractIn this paper we give a new run-time technique for finding an optimal parallel execution schedule for a partially parallel loop, i.e., a loop whose parallelization requires synchronization to ensure that the iterations are executed in the correct order.Given the original loop, the compiler generates inspector code that performs run-time preprocessing of the loop's access pattern, and scheduler code that schedules (and executes) the loop iterations.The inspector is fully parallel, uses no synchronization, and can be applied to any loop.In addition, it can implement at run-time the two most effective transformations for increasing the amount of parallelism in a loop: array privatization and reduction parallelizatiort (element-wise).We also describe a new scheme for constructing an optimal parallel execution schedule for the iterations of the loop.Method sched portions synch loop reduct New Lawrence Rauchwerger, Nancy M. Amato, David A. Padua |
International Conference on Supercomputing | 3 |
| 1995 | Gated SSA-based Demand-Driven Symbolic Analysis for Parallelizing CompilersabstractIn this paper, we present a GSA-based technique that performs more efficient and more precise symbolic analysis of predicated assignments, recurrences and index arrays.The efficiency is improved by using a backward substitution scheme that performs resolution of assertions on-demand and uses heuristics to limit the number of substitution.The precision is increased by utilizing the gating predicate information embedded in the GSA and the control dependence information in the program flow graph.Examples from array privatization are used to illustrate how the technique aids loop parallelization. 1 Peng Tu, David A. Padua |
International Conference on Supercomputing | 2 |
| 1995 | The LRPD Test: Speculative Run-Time Parallelization of Loops with Privatization and Reduction ParallelizationabstractCurrent parallelizing compilers cannot identify a significant fraction of parallelizable loops because they have complex or statically insufficiently defined access patterns. As parallelizable loops arise frequently in practice, we advocate a novel framework for their identification: speculatively execute the loop as a doall, and apply a fully parallel data dependence test to determine if it had any cross-iteration dependences; if the test fails, then the loop is re-executed serially. Since, from our experience, a significant amount of the available parallelism in Fortran programs can be exploited by loops transformed through privatization and reduction parallelization, our methods can speculatively apply these transformations and then check their validity at run-time. Another important contribution of this paper is a novel method for reduction recognition which goes beyond syntactic pattern matching; it detects at run-time if the values stored in an array participate in a reduction operation, even if they are transferred through private variables and/or are affected by statically unpredictable control flow. We present experimental results on loops from the PERFECT Benchmarks which substantiate our claim that these techniques can yield significant speedups which are often superior to those obtainable by inspector/executor methods. Lawrence Rauchwerger, David A. Padua |
PLDI | 2 |
| 1995 | Efficient Building and Placing of Gating Functionsabstractthis paper, we present an almost linear time algorithm to construct the GSA. The new algorithm is more efficient and simpler than the existing algorithms for GSA construction [BMO90, Hav93]. Since SSA is a special case of GSA, it can also be used as an efficient alternative algorithm for SSA construction. The existing algorithms for building the GSA follow two steps. The first step is the same Peng Tu, David A. Padua |
PLDI | 2 |
| 1994 | Comparing the Performance of the DASH and CEDAR MultiprocessorsabstractScalable shared-memory multiprocessors are attractive because they achieve large-scale parallel processing without surrendering much programmability. Several such machines have been built or are currently being built, for instance RP3, Cedar, KSR1, DASH, DDM1, Alewife, Cray T3D, or the Tera computer system. While all these machines support the shared-memory paradigm, they differ significantly. For example, some of them use hardware to support cache coherence, while others rely on the compiler or the programmer to do so. Furthermore, a subset of the machines are hierarchical, and some have the processors grouped in clusters. In addition to these and other hardware issues, machines also differ in software issues. For instance, the most natural model of parallelism supported by compilers and the operating system can be task- or loop-based. Josep Torrellas, David A. Koufaty, David A. Padua |
ICPP (2) | 3 |
| 1994 | The privatizing DOALL test: a run-time technique for DOALL loop identification and array privatizationabstractCurrent parallelizing compilers cannot identify a significant fraction of fully parallel loops because they have complex or statically insufficiently defined access patterns. For this reason, we have developed the Privatizing DOALL test—a technique for identifying fully parallel loops at run-time, and dynamically privatizing scalars and arrays. The test itself is fully parallel, and can be applied to any loop, regardless of the structure of its data and/or control flow. The technique can be utilized in two modes: (i) the test is performed before executing the loop and indicates whether the loop can be executed as a DOALL; (ii) speculatively—the loop and the test are executed simultaneously, and it is determined later if the loop was in fact parallel. The test can also be used for debugging parallel programs. We discuss how the test can be inserted automatically by the compiler and outline a cost/performance analysis that can be performed to decide when to use the test. Our conclusion is that the test should almost always be applied—because, as we show, the expected speedup for fully parallel loops is significant, and the cost of a failed test (a not fully parallel loop), is minimal. We present some experimental results on loops from the PERFECT Benchmarks which confirm our conclusion that this test can lead to significant speedups. Lawrence Rauchwerger, David A. Padua |
International Conference on Supercomputing | 2 |
| 1993 | Static and Dynamic Evaluation of Data Dependence AnalysisabstractThis paper discusses the effectiveness of several dependence tests in Perfect Benchmarks. The tests analyzed include the generalized greatest common divisor test, Banerjee's test and the Omega test. Two methods are applied. One uses only compile-time information for the analysis. The other uses information gathered during program execution. It is shown that, for the codes considered, the Omega test improved the accuracy of the analysis by only 1% when codes are analyzed statically. Furthermore, the dynamic analysis shows that the Omega test does not improve the detected inherent parallelism. Paul Petersen, David A. Padua |
International Conference on Supercomputing | 2 |
| 1993 | The Cedar System and an Initial Performance StudyabstractIn this paper, we give an overview of the Cedar multiprocessor and present recent performance results. These include the performance of some computational kernels and the Perfect Benchmarks. We also present a methodology for judging parallel system performance and apply this methodology to Cedar, Cray YMP-8, and Thinking Machines CM-5. David J. Kuck, Edward S. Davidson, Duncan H. Lawrie, Ahmed H. Sameh, Chuanqi Zhu, Alexander V. Veidenbaum, Jeff Konicek, Pen-Chung Yew, Kyle A. Gallivan, William Jalby, Harry A. G. Wijshoff, Randall Bramley, Ulrike Meier Yang, Perry A. Emrath, David A. Padua, Rudolf Eigenmann, Jay P. Hoeflinger, Greg P. Jaxon, Zhiyuan Li 0001, T. Murphy, John T. Andrews, Stephen W. Turner |
ISCA | 15 |
| 1993 | Common runtime support for high-performance parallel languagesabstractNo abstract available. Geoffrey C. Fox, Sanjay Ranka, Michael L. Scott, Allen D. Malony, James C. Browne, Marina C. Chen, Alok N. Choudhary, Thomas E. Cheatham, Janice E. Cuny, Rudolf Eigenmann, Amr F. Fahmy, Ian T. Foster, Dennis Gannon, Tomasz Haupt, Carl Kesselman, Charles Koelbel, Wei Li 0015, Monica S. Lam, Thomas J. LeBlanc, Jim Openshaw, David A. Padua, Constantine D. Polychronopoulos, Joel H. Saltz, Alan Sussman, Gil Weigand, Katherine A. Yelick |
SC | 21 |
| 1993 | Restructuring Fortran programs for CedarabstractAbstract The paper reports on the status of the Fortran translator for the Cedar computer at the end of March 1991. A brief description of the Cedar Fortran language is followed by a discussion of the Fortran‐77 to Cedar Fortran parallelizer that describes the techniques currently being implemented. A collection of experiments illustrate the effectiveness of the current implementation, and point toward new approaches to be incorporated into the system in the near future. Rudolf Eigenmann, Jay P. Hoeflinger, Greg P. Jaxon, Zhiyuan Li 0001, David A. Padua |
Concurr. Pract. Exp. | 5 |
| 1993 | Automatic program parallelizationabstractAn overview of automatic program parallelization techniques is presented. It covers dependence analysis techniques, followed by a discussion of program transformations, including straight-line code parallelization, do-loop transformations, and parallelization of recursive routines. Several experimental studies on the effectiveness of parallelizing compilers are surveyed.> Utpal Banerjee, Rudolf Eigenmann, Alexandru Nicolau, David A. Padua |
Proc. IEEE | 4 |
| 1992 | Problem-solving environments for parallel computers
David A. Padua |
Future Gener. Comput. Syst. | 1 |
| 1991 | Restructuring Fortran Programs for Cedar
Rudolf Eigenmann, Jay P. Hoeflinger, Greg P. Jaxon, Zhiyuan Li 0001, David A. Padua |
ICPP (1) | 5 |
| 1991 | Effects of Program Parallelization and Stripmining Transformation on Cache Performance in a Multiprocessor
Manish Gupta 0002, David A. Padua |
ICPP (1) | 2 |
| 1991 | A Comparison of Four Synchronization Optimization Techniques
Samuel P. Midkiff, David A. Padua |
ICPP (2) | 2 |
| 1991 | Fortran-Style Transformations for Functional Programs
David C. Sehr, Laxmikant V. Kalé, David A. Padua |
ICPP (2) | 3 |
| 1991 | Guest Editor's Introduction
David A. Padua, Benjamin W. Wah, Pen-Chung Yew |
IEEE Trans. Parallel Distributed Syst. | 1 |
| 1990 | Issues in the Optimization of Parallel Programs
Samuel P. Midkiff, David A. Padua |
ICPP (2) | 2 |
| 1990 | Cedar Fortran and other vector and parallel Fortran dialects
Mark D. Guzzi, David A. Padua, Jay P. Hoeflinger, Duncan H. Lawrie |
J. Supercomput. | 2 |
| 1989 | Problem solving environmentsabstractThe author discusses a few issues regarding programming tools and their interaction. In parallel programming environments the target machine is parallel, and at least some of the tools deal with parallelism by making possible its expression (e.g. a computer for a parallel programming language or a parallelizing compiler). The author discusses the more general concept of problem-solving environments because he believes that in the future, and at least for some applications, the users of these environments will not be programmers or at least will not have to write any programs. Therefore, much of the interaction with the system will be a description of the problem to be solved and not a description of the solution method.> David A. Padua |
COMPSAC | 1 |
| 1989 | Event synchronization analysis for debugging parallel programsabstractOne of the major difficulties of explicit parallel programming for a shared memory machine model is detecting the potential for nondeterminacy and identifying its causes. There will often be shared variables in a parallel program, and the tasks comprising the program may need to be synchronized when accessing these variables. Perry A. Emrath, Sanjoy Ghosh, David A. Padua |
SC | 3 |
| 1989 | Utilizing Multidimensional Loop Parallelism on Large-Scale Parallel Processor SystemsabstractProgram parallelism and processor allocation issues for parallel processor systems are discussed. Optimal processor assignment algorithms are presented for simple and complex nested parallel loops. These processor assignment schemes can be used by the compiler to perform static processor allocation to multiply nested parallel loops. Speedup measurements for EISPACK and IEEE DSP subroutines that result from the optimal assignment of processors to parallel loops are also presented. These measurements indicate that optimal processor assignments result in almost linear speedups on parallel processor machines with a few tens of processes and significantly high speedups for machines with hundreds or thousands of processors.> Constantine D. Polychronopoulos, David J. Kuck, David A. Padua |
IEEE Trans. Computers | 3 |
| 1988 | Automatic Compound Function Definition for Multiprocessors
Harlan E. Husmann, David J. Kuck, David A. Padua |
ICPP (2) | 3 |
| 1988 | Parcel: project for the automatic restructuring and concurrent evaluation of LISPabstractParcel (Project for the Automatic Restructuring and Concurrent Evaluation of Lisp) is an investigation of the problem of compiling Lisp for evaluation on a shared memory multiprocessor. In this paper, we present an overview of the process of compilation in Parcel. This process consists, broadly, of an interprocedural analysis, followed by a function-level restructuring of the lambda expressions that constitute a program. We discuss both of these phases, and illustrate the steps of restructuring with a few examples. A novel representation for s-expressions is employed in Parcel, to facilitate the parallel creation and access of lists; we review this representation, and discuss its implications for the compilation process. We conclude with some preliminary performance measurements of the prototypes of the Parcel compiler and run-time system. Luddy Harrison, David A. Padua |
ICS | 2 |
| 1988 | Cedar Fortran and other Vector and parallel Fortran dialectsabstractThe development of vector and multiprocessor language constructs in Fortran is outlined. The significant architectures, their languages, and optimizers are described. A description is given of Cedar Fortran, the language for the Cedar multiprocessor, a hierarchical, shared-memory, vector multiprocessor currently under development.> Mark D. Guzzi, Jay P. Hoeflinger, David A. Padua, Duncan H. Lawrie |
SC | 3 |
| 1988 | OR parallel execution of Prolog programs with side effects
Laxmikant V. Kalé, David A. Padua, David C. Sehr |
J. Supercomput. | 2 |
| 1987 | Debugging Parallel Fortran on a Shared Memory Machine
Todd R. Allen, David A. Padua |
ICPP | 2 |
| 1987 | Compiler Algorithms for SynchronizationabstractTranslating program loops into a parallel form is one of the most important transformations performed by concurrentizing compilers. This transformation often requires the insertion of synchronization instructions within the body of the concurrent loop. Several loop synchronization techniques are presented first. Compiler algorithms to generate synchronization instructions for singly-nested loops are then discussed. Finally, a technique for the elimination of redundant synchronization instructions is presented. Samuel P. Midkiff, David A. Padua |
IEEE Trans. Computers | 2 |
| 1986 | Representing S-Expressions for the Efficient Evaluation of LISP on Parallel Processors
Williams Ludwell Harrison III, David A. Padua |
ICPP | 2 |
| 1986 | Compiler Generated Synchronization for Do Loops
Samuel P. Midkiff, David A. Padua |
ICPP | 2 |
| 1986 | Execution of Parallel Loops on Parallel Processor Systems
Constantine D. Polychronopoulos, David J. Kuck, David A. Padua |
ICPP | 3 |
| 1982 | Some Results on the Working Set Anomalies in Numerical ProgramsabstractThis paper shows that the working set parameter-real memory and real memory-fault rate anomalies mentioned by Franklin, Graham, and Gupta in [13] do occur in traces generated by real programs. The results of the detailed investigation of this anomalous behavior in four Fortran programs are presented. In some cases a drop of a factor of two in the average real-time memory allotment is observed when the window size is increased. In some instances a bigger real-time memory allotment means an order of magnitude increase in page faults. Walid A. Abu-Sufah, David A. Padua |
IEEE Trans. Software Eng. | 2 |
| 1981 | Dependence Graphs and Compiler OptimizationsabstractDependence 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 |
POPL | 3 |
| 1980 | High-Speed Multiprocessors and Compilation TechniquesabstractThe purpose of this paper is to present some ideas on multiprocessor design and on automatic translation of sequential programs into parallel programs for multiprocessors. With respect to machine design, two subjects are discussed. First, a multiprocessor allowing parallelism at a very low level is sketched and then, a brief discussion on the interconnection network is presented. David A. Padua, David J. Kuck, Duncan H. Lawrie |
IEEE Trans. Computers | 1 |