Pedro C. Diniz

dblp:d/PedroCDiniz · DBLP profile ↗
← Back
58ranked-venue papers
16as first author
1since 2021 · last 2025
0000-0003-3131-9367ORCID · verified

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

Systems, architecture and hardware · 45 · 13 first-authorSoftware engineering, systems software and programming languages · 9 · 3 first-authorHuman-computer interaction and ubiquitous computing · 2Artificial intelligence and machine learning · 1 · 1 since 2021Theory of computation · 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.

Computer architecture, parallel and distributed computing, and storage systems
15 papers
Reconfigurable computing and FPGAs · 31% Parallel and multicore computing · 29% Electronic design automation · 18%
Software engineering, system software, and programming languages
11 papers
Compilers and program optimization · 88% Program analysis · 10% Software maintenance and evolution · 2%

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

TopicWeightPapersLastEvidence papers
Reconfigurable computing and FPGAs
FPGA accelerator
0.112009
Computation reuse in domain-specific optimization of signal recognition · FPGA 2009
Electronic design automation
design space exploration
0.122003
Using estimates from behavioral synthesis tools in compiler-directed design space exploration · DAC 2003
A Compiler Approach to Fast Hardware Design Space Exploration in FPGA-based Systems · PLDI 2002
Electronic design automation
high-level synthesis
0.122003
Using estimates from behavioral synthesis tools in compiler-directed design space exploration · DAC 2003
A Compiler Approach to Fast Hardware Design Space Exploration in FPGA-based Systems · PLDI 2002
Compilers and program optimization › parallelization
automatic parallelization
0.122003
Eliminating synchronization bottlenecks using adaptive replication · ACM Trans. Program. Lang. Syst. 2003
Commutativity Analysis: A New Analysis Technique for Parallelizing Compilers · ACM Trans. Program. Lang. Syst. 1997
Parallel and multicore computing
synchronization
0.122003
Eliminating synchronization bottlenecks using adaptive replication · ACM Trans. Program. Lang. Syst. 2003
Synchronization Transformations for Parallel Computing · POPL 1997
Compilers and program optimization
loop transformation
0.122004
A Compiler Approach to Fast Hardware Design Space Exploration in FPGA-based Systems · PLDI 2002
Performance and Area Modeling of Complete FPGA Designs in the Presence of Loop Transformations · IEEE Trans. Computers 2004
Reconfigurable computing and FPGAs › FPGA design flow
FPGA design space exploration
0.012004
Performance and Area Modeling of Complete FPGA Designs in the Presence of Loop Transformations · IEEE Trans. Computers 2004
Parallel and multicore computing
loop transformation
0.012004
Performance and Area Modeling of Complete FPGA Designs in the Presence of Loop Transformations · IEEE Trans. Computers 2004
Compilers and program optimization › loop transformation
loop unrolling
0.022002
A Compiler Approach to Fast Hardware Design Space Exploration in FPGA-based Systems · PLDI 2002
Matching and searching analysis for parallel hardware implementation on FPGAs · FPGA 2001
Parallel and multicore computing
parallelizing compiler
0.021999
Eliminating Synchronization Overhead in Automatically Parallelized Programs Using Dynamic Feedback · ACM Trans. Comput. Syst. 1999
Dynamic Feedback: An Effective Technique for Adaptive Computing · PLDI 1997
Parallel and multicore computing › synchronization
synchronization optimization
0.021999
Eliminating Synchronization Overhead in Automatically Parallelized Programs Using Dynamic Feedback · ACM Trans. Comput. Syst. 1999
Dynamic Feedback: An Effective Technique for Adaptive Computing · PLDI 1997
Compilers and program optimization › compiler analysis
array data-flow analysis
0.012003
Compiler-generated communication for pipelined FPGA applications · DAC 2003
Program analysis
data flow analysis
0.012003
Compiler-generated communication for pipelined FPGA applications · DAC 2003
Distributed systems › replication › replica management
adaptive replication
0.012003
Eliminating synchronization bottlenecks using adaptive replication · ACM Trans. Program. Lang. Syst. 2003
Reconfigurable computing and FPGAs
FPGA compilation
0.012003
Compiler-generated communication for pipelined FPGA applications · DAC 2003
Compilers and program optimization › dependence analysis
commutativity analysis
0.021997
Commutativity Analysis: A New Analysis Technique for Parallelizing Compilers · ACM Trans. Program. Lang. Syst. 1997
Commutativity Analysis: A New Analysis Framework for Parallelizing Compilers · PLDI 1996
Hardware accelerators and domain-specific architectures
computation reuse
0.012009
Computation reuse in domain-specific optimization of signal recognition · FPGA 2009
Hardware accelerators and domain-specific architectures
domain-specific optimization
0.012009
Computation reuse in domain-specific optimization of signal recognition · FPGA 2009
Memory systems
memory bandwidth
0.011999
Mapping Irregular Applications to DIVA, a PIM-based Data-Intensive Architecture · SC 1999
Memory systems
processing-in-memory
0.011999
Mapping Irregular Applications to DIVA, a PIM-based Data-Intensive Architecture · SC 1999
Memory systems › memory interface
processor-memory interface
0.011999
Mapping Irregular Applications to DIVA, a PIM-based Data-Intensive Architecture · SC 1999
Compilers and program optimization
parallelizing compiler
0.021997
Commutativity Analysis: A New Analysis Framework for Parallelizing Compilers · PLDI 1996
Synchronization Transformations for Parallel Computing · POPL 1997
Compilers and program optimization › dynamic optimization
adaptive compilation
0.011997
Dynamic Feedback: An Effective Technique for Adaptive Computing · PLDI 1997
Compilers and program optimization › parallel program optimization
synchronization optimization
0.011997
Synchronization Transformations for Parallel Computing · POPL 1997
Parallel and multicore computing
parallel programming models
0.011997
Commutativity Analysis: A New Analysis Technique for Parallelizing Compilers · ACM Trans. Program. Lang. Syst. 1997
Parallel and multicore computing › parallelization strategies
task-level parallelism
0.011997
Commutativity Analysis: A New Analysis Technique for Parallelizing Compilers · ACM Trans. Program. Lang. Syst. 1997
Parallel and multicore computing › parallel programming models
automatic parallelization
0.011996
Commutativity Analysis: A New Analysis Framework for Parallelizing Compilers · PLDI 1996
Compilers and program optimization › compiler optimization
compiler-directed optimization
0.012003
Using estimates from behavioral synthesis tools in compiler-directed design space exploration · DAC 2003
Compilers and program optimization
dependence analysis
0.012001
Matching and searching analysis for parallel hardware implementation on FPGAs · FPGA 2001
Software maintenance and evolution › dynamic software updating
runtime adaptation
0.011999
Eliminating Synchronization Overhead in Automatically Parallelized Programs Using Dynamic Feedback · ACM Trans. Comput. Syst. 1999

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

walsh wavelet packets · 0.2computation reuse scheduling · 0.2bestbasis algorithm · 0.2analytical modeling · 0.1sampling · 0.1pipelining · 0.1parallelizing compiler · 0.1compiler analysis · 0.1behavioral synthesis · 0.1spatial query processing · 0.0lock coarsening · 0.0adaptive replication · 0.0synthesis estimation · 0.0commutativity analysis · 0.0
YearPublicationVenuePosition
2025 Leveraging Edge and Fog Resources While Complying with EU's GDPR
Matilde Silva, Pedro C. Diniz, Gil Gonçalves 0002
ICINCO (2)2
2016 Performance-driven instrumentation and mapping strategies using the LARA aspect-oriented programming approach
abstract
Summary The development of applications for high‐performance embedded systems is a long and error‐prone process because in addition to the required functionality, developers must consider various and often conflicting nonfunctional requirements such as performance and/or energy efficiency. The complexity of this process is further exacerbated by the multitude of target architectures and mapping tools. This article describes LARA, an aspect‐oriented programming language that allows programmers to convey domain‐specific knowledge and nonfunctional requirements to a toolchain composed of source‐to‐source transformers, compiler optimizers, and mapping/synthesis tools. LARA is sufficiently flexible to target different tools and host languages while also allowing the specification of compilation strategies to enable efficient generation of software code and hardware cores (using hardware description languages) for hybrid target architectures – a unique feature to the best of our knowledge not found in any other aspect‐oriented programming language. A key feature of LARA is its ability to deal with different models of join points, actions, and attributes. In this article, we describe the LARA approach and evaluate its impact on code instrumentation and analysis and on selecting critical code sections to be migrated to hardware accelerators for two embedded applications from industry. Copyright © 2014 John Wiley & Sons, Ltd.
João M. P. Cardoso, José Gabriel F. Coutinho, Tiago Carvalho 0001, Pedro C. Diniz, Zlatko Petrov, Wayne Luk, Fernando M. Gonçalves
Softw. Pract. Exp.4
2015 Guest Editorial FPL 2013
abstract
No abstract available.
João M. P. Cardoso, Pedro C. Diniz, Katherine Morrow
ACM Trans. Reconfigurable Technol. Syst.2
2015 Program-Invariant Checking for Soft-Error Detection using Reconfigurable Hardware
abstract
There is an increasing concern about transient errors in deep submicron processor architectures. Software-only error detection approaches that exploit program invariants for silent error detection incur large execution overheads and are unreliable as state can be corrupted after invariant checkpoints. In this article, we explore the use of configurable hardware structures for the continuous evaluation of high-level program invariants at the assembly level. We evaluate the resource requirements and performance of the proposed predicate-evaluation hardware structures when integrated with a 32-bit MIPS soft core on a contemporary reconfigurable hardware device. The results, for a small set of kernel codes, reveal that these hardware structures require a very small number of hardware resources with negligible impact on the processor core that they are integrated in. Moreover, the amount of resources is fairly insensitive to the complexity of the invariants, thus making the proposed structures an attractive alternative to software-only predicate checking.
Joonseok Park, Pedro C. Diniz
ACM Trans. Reconfigurable Technol. Syst.2
2014 A DSL for specifying run-time adaptations for embedded systems: an application to vehicle stereo navigation
André C. Santos, João M. P. Cardoso, Pedro C. Diniz, Diogo R. Ferreira, Zlatko Petrov
J. Supercomput.3
2013 The MATISSE MATLAB compiler
abstract
This paper describes MATISSE, a MATLAB to C compiler targeting embedded systems that is based on Strategic and Aspect-Oriented Programming concepts. MATISSE takes as input: (1) MATLAB code and (2) LARA aspects related to types and shapes, code insertion/removal, and specialization based directives defining default variable values. In this paper we also illustrate the use of MATISSE in leveraging data types and shapes to generate customized C code suitable for high-level hardware synthesis tools. The preliminary experimental results presented here reveal the described approach to yield performance results for the resulting hardware and software references implementations that are comparable in terms of performance with hand-crafted solutions but derived automatically at a fraction of the cost.
João Bispo, Pedro Pinto 0002, Ricardo Nobre, Tiago Carvalho 0001, João M. P. Cardoso, Pedro C. Diniz
INDIN6
2012 Controlling Hardware Synthesis with Aspects
abstract
The synthesis and mapping of applications to configurable embedded systems is a notoriously hard process. Tools have a wide range of parameters, which interact in very unpredictable ways, thus creating a large and complex design space. When exploring this space, designers must understand the interfaces to the various tools and apply, often manually, a sequence of tool-specific transformations making this an extremely cumbersome and error-prone process. This paper describes the use of aspect-oriented techniques for capturing synthesis strategies for tuning the performance of applications' kernels. We illustrate the use of this approach when designing application-specific architectures generated by a high-level synthesis tool. The results highlight the impact of the various strategies when targeting custom hardware and expose the difficulties in devising these strategies.
João M. P. Cardoso, Tiago Carvalho 0001, José Gabriel F. Coutinho, Pedro C. Diniz, Zlatko Petrov, Wayne Luk
DSD4
2012 Specifying Compiler Strategies for FPGA-based Systems
abstract
The development of applications for high-performance Field Programmable Gate Array (FPGA) based embedded systems is a long and error-prone process. Typically, developers need to be deeply involved in all the stages of the translation and optimization of an application described in a high-level programming language to a lower-level design description to ensure the solution meets the required functionality and performance. This paper describes the use of a novel aspect-oriented hardware/software design approach for FPGA-based embedded platforms. The design-flow uses LARA, a domain-specific aspect-oriented programming language designed to capture high-level specifications of compilation and mapping strategies, including sequences of data/computation transformations and optimizations. With LARA, developers are able to guide a design-flow to partition and map an application between hardware and software components. We illustrate the use of LARA on two complex real-life applications using high-level compilation and synthesis strategies for achieving complete hardware/software implementations with speedups of 2.5× and 6.8× over software-only implementations. By allowing developers to maintain a single application source code, this approach promotes developer productivity as well as code and performance portability.
João M. P. Cardoso, José C. Alves, Ricardo Nobre, Pedro C. Diniz, José Gabriel F. Coutinho, Wayne Luk
FCCM5
2012 A resiliency-aware scheduling approach for FPGA configuration: Preliminary results
abstract
Hostile environments, shrinking feature sizes and processor aging elicit a need for resilient computing. Coarse-grained hardware approaches, such as Triple Modular Redundancy (TMR) and Temporal Redundancy (TR), while exhibiting acceptable levels of fault coverage [1], are often wasteful of resources such as time, device/chip area and power. A TMR-hardened computation can exhibit poor performance relative to a non-TMR hardware configuration with similar area. This is because the resources that are used to replicate functional units in parallel (in the case of TMR) can only execute one operation at a time. Conversely, in an equivalent non-TMR configuration, those same resources could execute three different operations concurrently (albeit with no resiliency coverage). In short, TMR is very rigid in its allocation of resources, using them only for resiliency.
Jeremy Abramson, Pedro C. Diniz
FPL2
2012 Resiliency-aware scheduling: Resource allocation for hardened computation on configurable devices
abstract
The number of configurable systems deployed in hostile environments continues to rise. This, along with decreasing geometries and lower operating voltages leads to an expected increase in transient errors. This paper presents Resiliency-aware Scheduling, a novel approach to resource allocation for hardening computations on configurable systems. Using modular and replicated functional units called hybrid TMR that exploit a computation's Intrinsic Resiliency, our results show that for designs with similar performance, RaS exhibits a 60% area savings over a traditional TMR configuration with the same operation coverage.
Jeremy Abramson, Pedro C. Diniz
FPT2
2011 A Domain-Specific Language for the Specification of Adaptable Context Inference
abstract
Context-aware mobile applications can benefit from context inference adaptation based on run-time operating conditions, such as battery life or sensor availability. Developing applications with such adaptable behavior, however, is notoriously cumbersome, as developers need to deal with low-level system interfacing and programming issues. In this paper we describe a domain-specific language (DSL) and a middleware infrastructure to support the specification, deployment and maintenance of run-time adaptable context inference processes. We illustrate the benefits of our approach via a case study, highlighting the new abstractions that facilitate the specification of adaptable behavior using different algorithms and the corresponding varying parameter settings, with a specific goal of minimizing the energy while maintanig acceptable end-application performance and accuracy.
André C. Santos, Pedro C. Diniz, João M. P. Cardoso, Diogo R. Ferreira
EUC2
2011 Introduction
Mitsuhisa Sato, Denis Barthou, Pedro C. Diniz, P. Saddayapan
Euro-Par (1)3
2011 Domain-Specific Optimization of Signal Recognition Targeting FPGAs
abstract
Domain-specific optimizations on matrix computations exploiting specific arithmetic and matrix representation formats have achieved significant performance/area gains in Field-Programmable Gate Array (FPGA) hardware designs. In this article, we explore the application of data-driven optimizations to reduce both storage and computation requirements to the problem of signal recognition from a known dictionary. By starting with a high-level mathematical representation of a signal recognition problem, we perform optimizations across the layers of the system, exploiting mathematical structure to improve implementation efficiency. Specifically, we use Walsh wavelet packets in conjunction with a BestBasis algorithm to distinguish between spoken digits. The resulting transform matrices are quite sparse, and exhibit a rich algebraic structure that contains significant overlap across rows. As a consequence, dot-product computations of the transform matrix and signal vectors exhibit significant computation reuse, or repeated identical computations. We present an algorithm for identifying this computation reuse and scheduling of the row computations. We exploit this reuse to derive FPGA hardware implementations that reduce the amount of computation for an individual matrix by as much as 6.35× and an average of 2× for a single dot-product unit. The implementation that exploits reuse achieves a 2× computation reduction compared to three concurrently-executing simpler accumulator units with the same aggregate design area and outperforms software implementations on high-end desktop personal computers.
Melina Demertzi, Pedro C. Diniz, Mary W. Hall, Anna Gilbert 0001
ACM Trans. Reconfigurable Technol. Syst.2
2010 High Performance Architectures and Compilers
Pedro C. Diniz, Marco Danelutto, Denis Barthou, Marc Gonzales, Michael Hübner 0001
Euro-Par (1)1
2010 Providing user context for mobile and social networking applications
André C. Santos, João M. P. Cardoso, Diogo R. Ferreira, Pedro C. Diniz, Paulo Chainho
Pervasive Mob. Comput.4
2010 Preprocessing techniques for context recognition from accelerometer data
Davide Figo, Pedro C. Diniz, Diogo R. Ferreira, João M. P. Cardoso
Pers. Ubiquitous Comput.2
2009 Introduction
Pedro C. Diniz, Ben H. H. Juurlink, Alain Darte, Wolfgang Karl
Euro-Par1
2009 Computation reuse in domain-specific optimization of signal recognition
abstract
Domain-specific optimizations that exploit specific arithmetic and representation formats have been shown to achieve significant performance/area gains in FPGA hardware designs. In this work, we describe an approach to domain-specific optimization that goes beyond this representation level. We perform a joint optimization from a high-level mathematical abstract representation and hardware implementation point of view. We focus on a signal recognition system that distinguishes between spoken digits. We construct transform matrices from Walsh wavelet packets in conjunction with a BestBasis algorithm. The resulting transform matrices exhibit a rich algebraic structure and contain significant overlap across rows, exhibiting significant computation reuse in the dot-product operation of the transform matrix applied to the signal vector. We have developed an algorithm for identifying the computation reuse and scheduling the row computations across various computation units to significantly reduce the overall amount of computation.
Melina Demertzi, Pedro C. Diniz, Mary W. Hall, Anna Gilbert 0001
FPGA2
2009 Guest Editorial
abstract
Application domains such as pharmaceutical discovery, combinatorial optimization or climate modeling demand performance levels well beyond the abilities of current high-performance uniprocessor architectures, for which parallel computing has long been seen as a key enabling technique. To meet this challenge, researchers in academia and industry have developed, numerous algorithmic and architectural solutions to take advantage of the natural performance benefits of the parallel computation paradigm. Parallel computing and parallel architectures are not only for high-performance computing. The relentless increase in very large-scale implementation (VLSI) capacities has enabled the migration of these architectures and thus computing paradigms to virtually any computing device, from the multi-core desktop computer to the embedded automobile control system. Regardless of the many structural and system-level differences between the parallel computing solutions proposed, developed and ultimately deployed in the various application domains, parallel computing relies on multiple processing units executing concurrently, cooperating and synchronizing in the pursuit of completing common tasks as quickly as possible. Despite its intuitive appeal, parallel computing is fraught with peril. The concurrent paradigm requires a fundamentally distinct programming mindset. To effectively exploit the computational abilities of parallel architectures, programmers must reason about the interactions between concurrent activities. Notoriously hard are the problems raised by the synchronization required to access shared resources, as programmers must be aware of the possibilities of load imbalance, livelock, starvation and even deadlock between the many executing tasks. The existence of heterogeneous resources, and in some domains real-time requirements, exacerbates the difficulty in programming parallel architectures. Researches in industry and academia have developed numerous programming models and languages to facilitate the programmability aspects in parallel computing, most notably allowing them to express concurrency and synchronization at various levels of granularity. Programmers also have at their disposal a wealth of tools such as compilers or performance analyzers, lowering their burden in the process of mapping computations to these parallel architectures. The continuing intense research in areas related to parallel computing and parallel architectures underscores the difficulty in the issues raised when programming these machines. The Compilers for Parallel Computers (CPC) workshop series has been devoted to addressing the many challenges in parallel computing while still recognizing the value of parallel computing basic techniques and application areas. The main goal of the workshop is to bring researchers in compilation and associated areas together in an informal setting and a relaxed atmosphere in order to exchange ideas and to foster collaboration, covering all areas of parallelism and optimization: from embedded systems, to large-scale parallel systems and computational grids. Among the many aspects covered in this years' edition of the workshop, we have focused in this special issue on three key areas of active research, namely programmer productivity techniques and tools, performance portability and robustness and lastly architecture-specific compilation techniques and analyses. In the category of articles devoted to programmer productivity, we have the first article by Wu et al., which describes an early experience in building and optimizing a complete system using Software Transactional Memory (STM). The authors analyze the performance of the complete compiler and run-time management systems for STM for three applications. They present very respectable average performance speedup using STM and identify the bottlenecks and opportunities for reduction of the TM overheads. The programmer intervention is minimal thus reducing the burden of this promising approach. The second article by Fraguela et al. addresses the balance between programmer productivity, maintainability and performance for the domain of numeric tiled stencil codes with overlapping shadow data regions. The authors describe a language data type, the hierarchical tiled array (HTA), which allows a programmer to easily express a wide range of algorithms. They discuss various implementation issues and present experimental results of the application of HTA on a small set of scientific code sequentially and parallelly. The results reveal the performance to be comparable to the performance attained by hand-optimized codes, but at a fraction of the programming time. Finally, the third article by Ronne et al. describes a combined static range analysis with efficient run-time checking to eliminate dynamic array bound checks in Java programs. The analysis results are used to derive linear constraints the code must comply with, which are then added to the mobile code as annotations. The authors present experiments for a publicly available benchmark set of codes demonstrating the effectiveness of this approach. In the category of articles devoted to performance portability and robustness we have the first article by Khan et al., which describes a template-based code specialization approach that leverages the results of static analysis to reduce the number of modifications performed for each selected template at run time. The authors present experimental results for non-trivial benchmarks ATLAS and FFTW, revealing that this approach is able to attain a good speedup with minimum increase in code size. The second article by Djoudi et al. describes a code specialization methodology for loops by composition of the specialized code versions for loops tailored for specific ranges of the number of iterations they execute. The generated code relies on loop peeling and prefetching transformations performance at the binary code level without interfering substantially with loop software pipelining. The authors present promising experimental results for a limited set of codes drawn from the SPEC benchmark suite. In the category of articles devoted to architecture-specific compilation techniques and analyses, we have the first article by Varbanescu et al., which evaluates possible mapping scenarios of a real multimedia analysis application on a heterogeneous multi-core processor, the Cell Broadband Engine (Cell/B.E.) architecture. The study focuses on exploiting task- and data-parallelism for high performance. Despite being an isolated study, the article provides insights into the utilization of both low-level and high-level optimizations, valuable to other researchers and engineers facing similar performance goals. Lastly, the article by Lu et al. presents a register allocation algorithm that includes global and local program knowledge for targeting a VLIW DSP processor with distributed register files whose port access is highly restricted. The experiments use a industry-strength compiler and, despite focusing on only a well-known set of small benchmarks, suggest the approach to be promising for emerging heterogeneous embedded architectures. These articles are a sample of the many interesting papers presented at the CPC 2007 workshop, held in Lisbon, Portugal, in July of 2007. We hope you find them interesting. We would also like to take this opportunity to thank our colleagues, Brian Carlstrom, Alain Darte, Evelyn Duesterwald, Geoffrey Fox, Robert Lucas, David Padua, Radu Rugina, Henk Sips and Byoungro So, who carefully reviewed the articles presented here, as well as the authors for their added effort in improving their articles. Finally, we would like to express our gratitude to John Wiley & Sons Ltd, our colleagues Prof. Geoffrey Fox (CC:PE Editor-In-Chief) for making this volume possible and our supportive editor, Rebecca Sleven, for her kind help. On a sadder note, during the time CPC 2007 was held in Lisbon, our friend and colleague, Peter Knijnenburg, passed away after a period of illness. We would like to take this opportunity to acknowledge his friendship and his tremendous inspiration as a leading researcher and as a human being. Prof. Michael O'Boyle and Prof. Henk Sips have contributed a special note in Peter's remembrance, which we include in this volume.
Pedro C. Diniz
Concurr. Comput. Pract. Exp.1
2009 Introduction to the Special Issue ARC'08
abstract
No abstract available.
Katherine Compton, Roger F. Woods, Christos-Savvas Bouganis, Pedro C. Diniz
ACM Trans. Reconfigurable Technol. Syst.4
2008 Automatic Extraction of Process Control Flow from I/O Operations
Pedro C. Diniz, Diogo R. Ferreira
BPM1
2008 The potential of computation reuse in high-level optimization of a signal recognition system
abstract
This paper evaluates the potential of exploiting computation reuse in a signal recognition system that is jointly optimized from mathematical representation, algorithm design and final implementation. Walsh wavelet packets in conjunction with a BestBasis algorithm are used to derive transforms that discriminate between signals. The FPGA implementation of this computation exploits the structure of the resulting transform matrices in several ways to derive a highly optimized hardware representation of this signal recognition problem. Specifically, we observe in the transform matrices a significant amount of reuse of subrows, thus indicating redundant computation. Through analysis of this reuse, we discover the potential for a 3times reduction in the amount of computation of combining a transform matrix and signal. In this paper, we focus on how the implementation might exploit this reuse in a profitable way. By exploiting a subset of this computation reuse, the system can navigate the tradeoff space of reducing computation and the extra storage required.
Melina Demertzi, Pedro C. Diniz, Mary W. Hall, Anna Gilbert 0001
IPDPS2
2008 A compiler approach to managing storage and memory bandwidth in configurable architectures
abstract
Configurable architectures offer the unique opportunity of realizing hardware designs tailored to the specific data and computational patterns of an application code. Customizing the storage structures is becoming increasingly important in mitigating the continuing gap between memory latencies and internal computing speeds. In this article we describe and evaluate a compiler algorithm that maps the arrays of a loop-based computation to internal storage structures, either RAM blocks or discrete registers. Our objective is to minimize the overall execution time while considering the capacity and bandwidth constraints of the storage resources. The novelty of our approach lies in creating a single framework that combines high-level compiler techniques with lower-level scheduling information for mapping the data. We illustrate the benefits of our approach for a set of image/signal processing kernels using a Xilinx Virtex™ Field-Programmable Gate Array (FPGA). Our algorithm leads to faster designs compared to the state-of-the-art custom data layout mapping technique, in some instances using less storage. When compared to hand-coded designs, our results are comparable in terms of execution time and resources, but are derived in a minute fraction of the design time.
Nastaran Baradaran, Pedro C. Diniz
ACM Trans. Design Autom. Electr. Syst.2
2007 A Data-Driven Approach for Pipelining Sequences of Data-Dependent Loops
abstract
Many video and image/signal processing applications can be structured as sequences of data-dependent tasks using a consumer/producer communication paradigm and are therefore amenable to pipelined execution. This paper presents an execution technique to speed-up the overall execution of successive, data-dependent tasks on a reconfigurable architecture. The technique pipelines sequences of data-dependent tasks by overlapping their execution subject to data-dependences. It decouples the concurrent data-path and control units and uses a custom, application data-driven, fine-grained synchronization and buffering scheme. In addition, the execution scheme allows for out-of- order, but data-dependent producer-consumer pairs not allowed by previous data-driven pipelining approaches. The approach has been exploited in the context of a high-level compiler targeting FPGAs. The preliminary experimental results reveal noticeable performance improvements and buffer size reductions for a number of benchmarks over traditional approaches.
Rui Rodrigues 0004, João M. P. Cardoso, Pedro C. Diniz
FCCM3
2006 Memory Parallelism Using Custom Array Mapping to Heterogeneous Storage Structures
abstract
Configurable architectures offer the unique opportunity of customizing the storage allocation to meet specific applications, needs. In this paper we describe a compiler approach to map the arrays of a loop-based computation to internal memories of a configurable architecture with the objective of minimizing the overall execution time. We present an algorithm that considers the data access patterns of the arrays along the critical path of the computation as well as the available storage and memory bandwidth. We demonstrate experimental results of the application of this approach for a set of kernel codes when targeting a Field-Programmable Gate-Array (FPGA). The results reveal that our algorithm outperforms naive and custom data layouts for these kernels by an average of 33% and 15% in terms of execution time, while taking into account the available hardware resources.
Nastaran Baradaran, Pedro C. Diniz
FPL2
2006 Design of a Field-Programmable Dual-Precision Floating-Point Arithmetic Unit
abstract
The growth in FPGA capacity and the inclusion of embedded arithmetic cores has enabled the use of these devices for general purpose floating-point computing. Despite their clock rate handicap with respect to contemporary general-purpose processors, these devices can be field-programmable to meet the precision requirements and operator-level parallelism of a specific computation. In this paper we describe and evaluate the performance of dual-precision, pipelined, floating-point arithmetic cores for addition, multiplication and division. Each of these arithmetic cores can be switched at run-time to perform either one double-precision operation, or with the same hardware resources, perform two single-precision operations. We also implemented quad-precision cores which can be switched to perform either one quad-precision operation or two double-precision operations. As an application of these cores, we describe and evaluate the performance potential of a custom, but flexible, vector processing units as part of a system-level architecture targeting a Xilinx Virtex-II Prom 100 FPGA device connected to multiple SRAM banks
Pedro C. Diniz, Gokul Govindu
FPL1
2006 An overview of the ECO project
abstract
In this paper, we describe a compilation system that automates much of the process of performance tuning that is currently done manually by application programmers interested in high performance. Our approach combines compiler models and heuristics with guided empirical search to take advantage of their complementary strengths. The models and heuristics limit the search to a small number of candidate implementations, and the empirical results provide the most accurate information to the compiler to select among candidates and tune optimization parameter values. The overall approach can be employed to alleviate some of the performance problems that lead to inefficiencies in key applications today: register pressure, cache conflict misses, and the trade-off between synchronization, parallelism and locality in SMPs. The main focus of the paper is an algorithm for simultaneously optimizing across multiple levels of the memory hierarchy for dense-matrix computations. We have developed an initial compiler implementation, and present automatically-generated results on matrix multiply. Results on two architectures, SGI R10000 and Sun UltraSparc IIe, outperform the native compiler, and either outperform or achieve comparable performance as the ATLAS self-tuning library and the hand-tuned vendor BLAS library. This paper describes other components of the ECO system, including supporting tools and experiments with programmer-guided performance tuning. This approach has provided a foundation for a general framework for systematic optimization of domain-specific applications. Specifically, we are developing an optimization system for signal and image processing that exploits signal properties, and we are using machine learning and a knowledge-rich representation can be exploited to optimize molecular dynamics simulation
Jacqueline Chame, Chun Chen 0002, Pedro C. Diniz, Mary W. Hall, Yoon-Ju Lee, Robert F. Lucas
IPDPS3
2005 A Register Allocation Algorithm in the Presence of Scalar Replacement for Fine-Grain Configurable Architectures
abstract
The aggressive application of scalar replacement to array references substantially reduces the number of memory operations at the expense of a possibly very large number of registers. We describe a register allocation algorithm that assigns registers to scalar replaced array references along the critical paths of a computation, in many cases exploiting the opportunity for concurrent memory accesses. Experimental results, for a set of image/signal processing code kernels, reveal that the proposed algorithm leads to a substantial reduction in the number of execution cycles for the corresponding hardware implementation on a contemporary field-programmable-gate-array (FPGA) when compared to other greedy allocation algorithms, in some cases, using even fewer registers.
Nastaran Baradaran, Pedro C. Diniz
DATE2
2005 Evaluation of Code Generation Strategies for Scalar Replaced Codes in Fine-Grain Configurable Architectures
abstract
Fine-grain configurable architectures such as contemporary fieid-programmable gate-arrays (FPGAs) offer ample opportunities for data reuse through application-specific storage structures, making them an ideal target for memory-intensive image/signal processing computations. In this paper we explore the area and time trade-off in terms of configurable resources and overall wall-clock time of several implementation schemes that exploit opportunities for data reuse using scalar replacement in fine-grain FPGAs. The preliminary results, on a Xilinx Virtex FPGA device, reveal that rotation-based solutions combined with predicated accesses tend to lead to higher-quality designs.
Pedro C. Diniz
FCCM1
2005 Compiler-Directed Design Space Exploration for Caching and Prefetching Data in High-Level Synthesis
Nastaran Baradaran, Pedro C. Diniz
FPT2
2004 Data Reuse in Configurable Architectures with RAM Blocks: Extended Abstract
Nastaran Baradaran, Joonseok Park, Pedro C. Diniz
FPL3
2004 Compiler reuse analysis for the mapping of data in FPGAs with RAM blocks
abstract
Contemporary configurable architectures have dedicated internal functional units such as multipliers, high-capacity storage RAM, and even CAM blocks. These RAM blocks allow the implementations to cache data to be reused in the near future, thereby avoiding the latency of external memory accesses. We present a data allocation algorithm that utilizes the RAM blocks in the presence of a limited number of hardware registers. This algorithm, based on a compiler data reuse analysis, determines which data should be cached in the internal RAM blocks and when. The preliminary results, for a set of image/signal processing kernels targeting a Xilinx Virtex/spl trade/ FPGA device, reveal that despite the increase latency of accessing data in RAM blocks, designs that use them require smaller configurable resources than designs that exclusively use registers, while attaining comparable and in some cases even better performance.
Nastaran Baradaran, Joonseok Park, Pedro C. Diniz
FPT3
2004 Performance and Area Modeling of Complete FPGA Designs in the Presence of Loop Transformations
abstract
Selecting which program transformations to apply when mapping computations to FPGA-based computing architectures can lead to prohibitively long design space exploration cycles. An alternative is to develop fast, yet accurate, performance and area models to quickly understand the Impact and interaction of the transformations. In this paper, we present a combined analytical performance and area modeling approach for complete FPGA designs in the presence of loop transformations. Our approach takes into account the impact of input/output memory bandwidth and memory interface resources, often the limiting factor in the effective implementation of computations. Our preliminary results reveal that our modeling is very accurate, being therefore amenable to be used in a compiler tool to quickly explore very large design spaces.
Joonseok Park, Pedro C. Diniz, K. R. Shesha Shayee
IEEE Trans. Computers2
2003 Using estimates from behavioral synthesis tools in compiler-directed design space exploration
abstract
This paper considers the role of performance and area estimates from behavioral synthesis in design space exploration. We have developed a compilation system that automatically maps high-level algorithms written in C to application-specific designs for Field Programmable Gate Arrays (FPGAs), through a collaboration between parallelizing compiler technology and high-level synthesis tools. Using several code transformations, the compiler optimizes a design to increase parallelism and utilization of external memory bandwidth, and selects the best design among a set of candidates. Performance and area estimates from behavioral synthesis provide feedback to the compiler to guide this selection. Estimates can be derived far more quickly (up to several orders of magnitude faster) than full synthesis and place-and-route, thus allowing the compiler to consider many more designs than would otherwise be practical. In this paper, we examine the accuracy of the estimates from behavioral synthesis as compared to the fully synthesized designs for a collection of 209 designs for five multimedia kernels. Though the estimates are not completely accurate, our results show that the same design would be selected by the design space exploration algorithm, whether we use estimates or actual results from place-and-route, because it favors smaller designs and only increases complexity when the benefit is significant.
Byoungro So, Pedro C. Diniz, Mary W. Hall
DAC2
2003 Compiler-generated communication for pipelined FPGA applications
abstract
In this paper, we describe a set of compiler analyses and an implementation that automatically map a sequential and un-annotated C program into a pipelined implementation, targeted for an FPGA with multiple external memories. For this purpose, we extend array data-flow analysis techniques from parallelizing compilers to identify pipeline stages, required inter-pipeline stage communication, and opportunities to find a minimal program execution time by trading communication overhead with the amount of computation overlap in different stages. Using the results of this analysis, we automatically generate application-specific pipelined FPGA hardware designs. We use a sample image processing kernel to illustrate these concepts. Our algorithm finds a solution in which transmitting a row of an array between pipeline stages per communication instance leads to a speedup of 1.76 over an implementation that communicates the entire array at once.
Heidi E. Ziegler, Mary W. Hall, Pedro C. Diniz
DAC3
2003 Data Search and Reorganization Using FPGAs: Application to Spatial Pointer-based Data Structures
abstract
FPGAs (field programmable gate arrays) have appealing features such as customizable internal and external bandwidth and the ability to exploit vast amounts of fine-grain parallelism. In this paper, we explore the applicability of these features in using FPGAs as smart memory engines for search and reorganization computations over spatial pointer-based data structures. The experimental results in this paper suggests that reconfigurable logic, when combined with the data reorganization, can lead to dramatic performance improvements of up to 20x over traditional computer architectures for pointer-based computations, traditionally not viewed as a good match for reconfigurable technologies.
Pedro C. Diniz, Joonseok Park
FCCM1
2003 Synthesis and Estimation of Memory Interfaces for FPGA-based Reconfigurable Computing Engines
abstract
As the densities of current FPGA continue to grow it is now possible to generate System-On-a-Chip (SoC) designs where multiple computing cores are connected to various memory modules with customized topology with application specific memory access patterns. For example, Xilinx has recently introduced devices to which a paired down version of a PowerPC core can be mapped and connected to a set of internal memories. In this paper we address the problem of synthesizing and estimating the area and speed of memory interfacing for Static RAM (SRAM) and Synchronous Dynamic RAM (SDRAM) with various latency parameters and access modes. We describe a set of synthesizable and programmable memory interfaces a compiler can use to automatically generate the appropriate designs for mapping computations to FPGA-based architectures. Our preliminary results reveal that it is possible to accurately model the area and timing requirements using a linear estimation function. We have successfully integrated the proposed memory interface designs with simple image processing kernels generated using commercially available behavioral synthesis tools.
Joonseok Park, Pedro C. Diniz
FCCM2
2003 Performance and Area Modeling of Complete FPGA Designs in the presence of Loop Transformations
abstract
Digital image processing algorithms are a good match for direct implementation on FPGAs as current FPGA architectures can naturally match the fine grain parallelism in these applications. Typically, these algorithms are structured as a sequence of operations, expressed in high-level programming languages as tight loop nests. The loops usually define a shifting-window region over which the algorithm applies a simple localized operator (e.g., a differential gradient, or a min/max). In this research we focus on the development of fast, yet accurate performance and area modeling of complete FPGA designs that combine analytical, empirical and behavioral estimation techniques. We model the application of a set of important program transformations for image processing algorithms, namely loop unrolling, tiling, loop interchanging, loop fission and array privatization, and explore pipelined and non-pipelined execution modes. We take into consideration the impact of various transformations, in the presence of limited I/O resources like address generators and external memory data channels, on the performance of a complete design implemented in a FPGA based architecture.
K. R. Shesha Shayee, Joonseok Park, Pedro C. Diniz
FCCM3
2003 Using FPGAs for data and reorganization engines: preliminary results for spatial pointer-based data structures
abstract
FPGAs have appealing features such as customizable internal and external bandwidth and the ability to exploit vast amounts of fine-grain instruction-level parallelism. In this paper we explore the applicability of these features in using FPGAs as data search and reorganization engines for performing search and reorganization computations over spatial pointer-based data structures for which traditional computing platforms perform poorly. The preliminary experiments, for a set of simple spatial queries over spatial sparse-mesh and quad-tree data structures, reveal that 3 year-old FPGA devices can deliver performance that is on par and in some instances even superior to that of today's workstations. This experience suggests that the integration in memory of FPGA-like fabrics for implementing smart memory engines should be performance-wise very advantageous.
Pedro C. Diniz, Joonseok Park
FPGA1
2003 Performance and Area Modeling of Cmplete FPGA Designs in the Presence of Loop Transformations
K. R. Shesha Shayee, Joonseok Park, Pedro C. Diniz
FPL3
2003 Eliminating synchronization bottlenecks using adaptive replication
abstract
This article presents a new technique, adaptive replication, for automatically eliminating synchronization bottlenecks in multithreaded programs that perform atomic operations on objects. Synchronization bottlenecks occur when multiple threads attempt to concurrently update the same object. It is often possible to eliminate synchronization bottlenecks by replicating objects. Each thread can then update its own local replica without synchronization and without interacting with other threads. When the computation needs to access the original object, it combines the replicas to produce the correct values in the original object. One potential problem is that eagerly replicating all objects may lead to performance degradation and excessive memory consumption.Adaptive replication eliminates unnecessary replication by dynamically detecting contention at each object to find and replicate only those objects that would otherwise cause synchronization bottlenecks. We have implemented adaptive replication in the context of a parallelizing compiler for a subset of C++. Given an unannotated sequential program written in C++, the compiler automatically extracts the concurrency, determines when it is legal to apply adaptive replication, and generates parallel code that uses adaptive replication to efficiently eliminate synchronization bottlenecks.In addition to automatic parallelization and adaptive replication, our compiler also implements a lock coarsening transformation that increases the granularity at which the computation locks objects. The advantage is a reduction in the frequency with which the computation acquires and releases locks; the potential disadvantage is the introduction of new synchronization bottlenecks caused by increases in the sizes of the critical sections. Because the adaptive replication transformation takes place at lock acquisition sites, there is a synergistic interaction between lock coarsening and adaptive replication. Lock coarsening drives down the overhead of using adaptive replication, and adaptive replication eliminates synchronization bottlenecks associated with the overaggressive use of lock coarsening.Our experimental results show that, for our set of benchmark programs, the combination of lock coarsening and adaptive replication can eliminate synchronization bottlenecks and significantly reduce the synchronization and replication overhead as compared to versions that use none or only one of the transformations.
Martin C. Rinard, Pedro C. Diniz
ACM Trans. Program. Lang. Syst.2
2002 Coarse-Grain Pipelining on Multiple FPGA Architectures
abstract
Reconfigurable systems, and in particular, FPGA-based custom computing machines, offer a unique opportunity to define application-specific architectures. These architectures offer performance advantages for application domains such as image processing, where the use of customized pipelines exploits the inherent coarse-grain parallelism. In this paper we describe a set of program analyses and an implementation that map a sequential and un-annotated C program into a pipelined implementation running on a set of FPGAs, each with multiple external memories. Based on well-known parallel computing analysis techniques, our algorithms perform unrolling for operator parallelization, reuse and data layout for memory parallelization and precise communication analysis. We extend these techniques for FPGA-based systems to automatically partition the application data and computation into custom pipeline stages, taking into account the available FPGA and interconnect resources. We illustrate the analysis components by way of an example, a machine vision program. We present the algorithm results, derived with minimal manual intervention, which demonstrate the potential of this approach for automatically deriving pipelined designs from high-level sequential specifications.
Heidi E. Ziegler, Byoungro So, Mary W. Hall, Pedro C. Diniz
FCCM4
2002 Data reorganization engines for the next generation of system-on-a-chip FPGAs
abstract
Field-Programmable-Core-Arrays (FPCA) will include various computing cores for a wide variety of applications ranging from DSP to general purpose computing. With the increasing gap between core computing speeds and memory access latency, managing and orchestrating the movement of data across multiple cores will become increasingly important. In this paper we propose data reorganization engines that allow a wide variety of data reorganizations intra- as well as inter-memory modules for future FPCAs. We have experimented with a suite of data reorganizations pervasive in DSP applications. Our limited set of experiments reveals that the proposed designs for these engines are flexile and use little design area in current FPGA fabrics, making them amenable to be easily integrated in future FPCAs as either soft- or hard- macros.
Pedro C. Diniz, Joonseok Park
FPGA1
2002 A Compiler Approach to Fast Hardware Design Space Exploration in FPGA-based Systems
abstract
The current practice of mapping computations to custom hardware implementations requires programmers to assume the role of hardware designers. In tuning the performance of their hardware implementation, designers manually apply loop transformations such as loop unrolling. designers manually apply loop transformations. For example, loop unrolling is used to expose instruction-level parallelism at the expense of more hardware resources for concurrent operator evaluation. Because unrolling also increases the amount of data a computation requires, too much unrolling can lead to a memory bound implementation where resources are idle. To negotiate inherent hardware space-time trade-offs, designers must engage in an iterative refinement cycle, at each step manually applying transformations and evaluating their impact. This process is not only error-prone and tedious but also prohibitively expensive given the large search spaces and with long synthesis times. This paper describes an automated approach to hardware design space exploration, through a collaboration between parallelizing compiler technology and high-level synthesis tools. We present a compiler algorithm that automatically explores the large design spaces resulting from the application of several program transformations commonly used in application-specific hardware designs. Our approach uses synthesis estimation techniques to quantitatively evaluate alternate designs for a loop nest computation. We have implemented this design space exploration algorithm in the context of a compilation and synthesis system called DEFACTO, and present results of this implementation on five multimedia kernels. Our algorithm derives an implementation that closely matches the performance of the fastest design in the design space, and among implementations with comparable performance, selects the smallest design. We search on average only 0.3% of the design space. This technology thus significantly raises the level of abstraction for hardware design and explores a design space much larger than is feasible for a human designer.
Byoungro So, Mary W. Hall, Pedro C. Diniz
PLDI3
2001 A Behavioral Synthesis Estimation Interface for Configurable Computing
Pedro C. Diniz, Ashok Venkatachar
FCCM1
2001 An External Memory Interface for FPGA-Based Computing Engines
Joonseok Park, Pedro C. Diniz
FCCM2
2001 Matching and searching analysis for parallel hardware implementation on FPGAs
abstract
Matching and searching computations play an important role in the indexing of data. These computations are typically encoded in very tight loops with a single index variable and a simple search/ matching predicate. Their inherent sequential nature, either because of data dependences but more often because of very strong control dependences, makes it impossible to apply existing data dependence and parallelization analysis to exploit significant levels parallelism on traditional architectures. This paper describes a class of searching and matching computations and describes a mapping strategy to map these computations to hardware. We have developed a compiler analysis in SUIF using array data dependence analysis and implicit loop unrolling analysis to expose more parallelism for the parallel evaluation of these computations. Our compiler generates parallel hardware specifications in VHDL. The resulting parallel hardware yields significant performance improvements when these kernel operators are repeated over shifted portions of the input data on FPGA-based computing architectures. 1.
Pablo Moisset, Pedro C. Diniz, Joonseok Park
FPGA2
2000 Automatic Synthesis of Data Storage and Control Structures for FPGA-Based Computing Engines
abstract
Mapping computations written in high-level programming languages to FPGA-based computing engines requires programmers to create the datapath responsible for the core of the computation as well as the control structures to generate the appropriate signals to orchestrate its execution. This paper addresses the issue of automatic generation of data storage and control structures for FPGA-based reconfigurable computing engines using existing compiler data dependence analysis techniques. We describe a set of parameterizable data storage and control structures used as the target of our prototype compiler. We present a compiler analysis algorithm to derive the parameters of the data storage structures to minimize the required memory bandwidth of the implementation. We also describe a complete compilation scheme for mapping loops that manipulate multi-dimensional array variables to hardware. We present preliminary simulation results for complete designs generated manually using the results of the compiler analysis. These preliminary results show that it is possible to successfully integrate compiler data dependence analysis with existing commercial synthesis tools.
Pedro C. Diniz, Joonseok Park
FCCM1
1999 Eliminating synchronization bottlenecks in object-based programs using adaptive replication
abstract
This paper presents a technique, adaptive replication, for automatically eliminating synchronization bottlenecks in multithreaded programs that perform atomic operations on objects. Synchronization bottlenecks occur when multiple threads attempt to concurrently update the same object. It is often possible to eliminate synchronization bottlenecks by replicating objects. Each thread can then update its own local replica without synchronization and without interacting with other threads. When the computation needs to access the original object, it combines the replicas to produce the correct values in the original object. One potential problem is that eagerly replicating all objects may lead to performance degradation and excessive memory consumption. Adaptive replication eliminates unnecessary replication by dynamically measuring the amount of contention at each object to detect and replicate only those objects that would otherwise cause synchronization bottlenecks. We have implemented adaptive replication in the context of a parallelizing compiler for a subset of C++. Given an unannotated sequential program written in C++, the compiler automatically extracts the concurrency, determines when it is legal to apply adaptive replication, and generates parallel code that uses adaptive replication to efficiently eliminate synchronization bottlenecks. Our experimental results show that for our set of benchmark programs, adaptive replication can improve the overall performance by up to a factor of three over versions that use no replication, and can reduce the memory consumption by up to a factor of four over versions that fully replicate updated objects. Furthermore, adaptive replication never significantly harms the performance and never increases the memory usage without a co...
Martin C. Rinard, Pedro C. Diniz
International Conference on Supercomputing2
1999 Mapping Irregular Applications to DIVA, a PIM-based Data-Intensive Architecture
abstract
Processing-in-memory (PIM) chips that integrate processor logic into memory devices offer a new opportunity for bridging the growing gap between processor and memory speeds, especially for applications with high memory-bandwidth requirements.The Data-IntensiVe Architecture (DIVA) system combines PIM memories with one or more external host processors and a PIM-to-PIM interconnect.DIVA increases memory bandwidth through two mechanisms: (1) performing selected computation in memory, reducing the quantity of data transferred across the processor-memory interface; and (2) providing communication mechanisms called parcels for moving both data and computation throughout memory, further bypassing the processor-memory bus.DIVA uniquely supports acceleration of important irregular applications, including sparse-matrix and pointer-based computations.In this paper, we focus on several aspects of DIVA designed to effectively support such computations at very high performance levels: (1) the memory model and parcel definitions; (2) the PIM-to-PIM interconnect; and, (3) requirements for the processor-to-memory interface.We demonstrate the potential of PIMbased architectures in accelerating the performance of three irregular computations, sparse conjugate gradient, a natural-join database operation and an object-oriented database query.
Mary W. Hall, Peter M. Kogge, Jefferey G. Koller, Pedro C. Diniz, Jacqueline Chame, Jeffrey T. Draper, Jeff LaCoss, John J. Granacki, Jay B. Brockman, Apoorv Srivastava, William C. Athas, Vincent W. Freeh, Joonseok Park
SC4
1999 Synchronization transformations for parallel computing
abstract
This article describes a framework for synchronization optimizations and a set of transformations for programs that implement critical sections using mutual exclusion locks. The basic synchronization transformations take constructs that acquire and release locks and move these constructs both within and between procedures. They also eliminate, acquire and release constructs that use the same lock and are adjacent in the program. The article also presents a synchronization optimization algorithm, lock elimination, that uses these transformations to reduce the synchronization overhead. This algorithm locates computations that repeatedly acquire and release the same lock, then transforms the computations so that they acquire and release the lock only once. The goal of this algorithm is to reduce the lock overhead by reducing the number of times that computations acquire and release locks. But because the algorithm also increases the sizes of the critical sections, it may decrease the amount of available concurrency. The algorithm addresses this trade-off by providing several different optimization policies. The policies differ in the amount by which they increase the sizes of the critical sections. Experimental results from a parallelizing compiler for object-based programs illustrate the practical utility of the lock elimination algorithm. For three benchmark applications, the algorithm can dramatically reduce the number of times the applications acquire and release locks, which significantly reduces the amount of time processors spend acquiring and releasing locks. The resulting overall performance improvements for these benchmarks range from no observable improvement to up to 30% performance improvement. Copyright © 1999 John Wiley & Sons, Ltd.
Pedro C. Diniz, Martin C. Rinard
Concurr. Pract. Exp.1
1999 Eliminating Synchronization Overhead in Automatically Parallelized Programs Using Dynamic Feedback
abstract
This article presents dynamic feedback, a technique that enables computations to adapt dynamically to different execution environments. A compiler that uses dynamic feedback produces several different versions of the same source code; each version uses a different optimization policy. The generated code alternately performs sampling phases and production phases. Each sampling phase measures the overhead of each version in the current environment. Each production phase uses the version with the least overhead in the previous sampling phase. The computation periodically resamples to adjust dynamically to changes in the environment. We have implemented dynamic feedback in the context of a parallelizing compiler for object-based programs. The generated code uses dynamic feedback to automatically choose the best synchronization optimization policy. Our experimental results show that the synchronization optimization policy has a significant impact on the overall performance of the computation, that the best policy varies from program to program, that the compiler is unable to statically choose the best policy, and that dynamic feedback enables the generted code to exhibit performance that is comparable to that of code that has been manually tuned to use the best policy. We have also performed a theoretical analysis which provides, under certain assumptions, a guaranteed optimality bound for dynamic feedback relative to a hypothetical (and unrealizable) optimal algorithm that uses the best policy at every point during the execution.
Pedro C. Diniz, Martin C. Rinard
ACM Trans. Comput. Syst.1
1998 Lock Coarsening: Eliminating Lock Overhead in Automatically Parallelized Object-Based Programs
Pedro C. Diniz, Martin C. Rinard
J. Parallel Distributed Comput.1
1997 Dynamic Feedback: An Effective Technique for Adaptive Computing
abstract
This paper presents dynamic feedback, a technique that enables computations to adapt dynamically to different execution environments. A compiler that uses dynamic feedback produces several different versions of the same source code; each version uses a different optimization policy. The generated code alternately performs sampling phases and production phases. Each sampling phase measures the overhead of each version in the current environment. Each production phase uses the version with the least overhead in the previous sampling phase. The computation periodically resamples to adjust dynamically to changes in the environment.We have implemented dynamic feedback in the context of a parallelizing compiler for object-based programs. The generated code uses dynamic feedback to automatically choose the best synchronization optimization policy. Our experimental results show that the synchronization optimization policy has a significant impact on the overall performance of the computation, that the best policy varies from program to program, that the compiler is unable to statically choose the best policy, and that dynamic feedback enables the generated code to exhibit performance that is comparable to that of code that has been manually tuned to use the best policy. We have also performed a theoretical analysis which provides, under certain assumptions, a guaranteed optimality bound for dynamic feedback relative to a hypothetical (and unrealizable) optimal algorithm that uses the best policy at every point during the execution.
Pedro C. Diniz, Martin C. Rinard
PLDI1
1997 Synchronization Transformations for Parallel Computing
abstract
As parallel machines become part of the mainstream computing environment, compilers will need to apply synchronization optimizations to deliver efficient parallel software. This paper describes a new framework for synchronization optimizations and a new set of transformations for programs that implement critical sections using mutual exclusion locks. These transformations allow the compiler to move constructs that acquire and release locks both within and between procedures and to eliminate acquire and release constructs.The paper also presents a new synchronization algorithm, lock elimination, for reducing synchronization overhead. This optimization locates computations that repeatedly acquire and release the same lock, then uses the transformations to obtain equivalent computations that acquire and release the lock only once. Experimental results from a parallelizing compiler for object-based programs illustrate the practical utility of this optimization. For three benchmark programs the optimization dramatically reduces the number of times the computations acquire and release locks, which significantly reduces the amount of time processors spend acquiring and releasing locks. For one of the three benchmarks, the optimization always significantly improves the overall performance. Depending on the number of processors executing the computation, the optimized version runs between 2.11 and 1.83 times faster than the unoptimized version. For one of the other benchmarks, the optimized version runs between 1.13 and 0.96 times faster than the unoptimized version, with a mean of 1.08 times faster. For the final benchmark, the optimization reduces the overall performance.
Pedro C. Diniz, Martin C. Rinard
POPL1
1997 Commutativity Analysis: A New Analysis Technique for Parallelizing Compilers
abstract
This article presents a new analysis technique, commutativity analysis, for automatically parallelizing computations that manipulate dynamic, pointer-based data structures. Commutativity analysis views the computation as composed of operations on objects. It then analyzes the program at this granularity to discover when operations commute (i.e., generate the same final result regardless of the order in which they execute). If all of the operations required to perform a given computation commute, the compiler can automatically generate parallel code. We have implemented a prototype compilation system that uses commutativity analysis as its primary analysis technique. We have used this system to automatically parallelize three complete scientific computations: the Barnes-Hut N-body solver, the Water liquid simulation code, and the String seismic simulation code. This article presents performance results for the generated parallel code running on the Stanford DASH machine. These results provide encouraging evidence that commutativity analysis can serve as the basis for a successful parallelizing compiler.
Martin C. Rinard, Pedro C. Diniz
ACM Trans. Program. Lang. Syst.2
1996 On the Complexity of Commutativity Analysis
Oscar H. Ibarra, Pedro C. Diniz, Martin C. Rinard
COCOON2
1996 Commutativity Analysis: A New Analysis Framework for Parallelizing Compilers
abstract
This paper presents a new analysis technique, commutativity analysis, for automatically parallelizing computations that manipulate dynamic, pointer-based data structures. Commutativity analysis views the computation as composed of operations on objects. It then analyzes the program at this granularity to discover when operations commute (i.e. generate the same final result regardless of the order in which they execute). If all of the operations required to perform a given computation commute, the compiler can automatically generate parallel code.We have implemented a prototype compilation system that uses commutativity analysis as its primary analysis framework. We have used this system to automatically parallelize two complete scientific computations: the Barnes-Hut N-body solver and the Water code. This paper presents performance results for the generated parallel code running on the Stanford DASH machine. These results provide encouraging evidence that commutativity analysis can serve as the basis for a successful parallelizing compiler.
Martin C. Rinard, Pedro C. Diniz
PLDI2