My Account Log in

1 option

Embedded computing for high performance : design exploration and customization using high-level compilation and synthesis tools / Joao Manuel Paiva Cardoso, Jose Gabriel de Figueiredo Coutinho, Pedro C. Diniz.

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Cardoso, Joao Manuel Paiva, author.
Coutinho, José Gabriel de Figueiredo, author.
Diniz, Pedro C., author.
Language:
English
Subjects (All):
Embedded computer systems.
High performance computing.
Physical Description:
1 online resource (322 pages) : illustrations
Edition:
Second edition.
Place of Publication:
Cambridge, Massachusetts : Morgan Kaufmann, 2017.
System Details:
text file
Summary:
Embedded Computing for High Performance: Design Exploration and Customization Using High-level Compilation and Synthesis Tools provides a set of real-life example implementations that migrate traditional desktop systems to embedded systems. Working with popular hardware, including Xilinx and ARM, the book offers a comprehensive description of techniques for mapping computations expressed in programming languages such as C or MATLAB to high-performance embedded architectures consisting of multiple CPUs, GPUs, and reconfigurable hardware (FPGAs). The authors demonstrate a domain-specific language (LARA) that facilitates retargeting to multiple computing systems using the same source code. In this way, users can decouple original application code from transformed code and enhance productivity and program portability. After reading this book, engineers will understand the processes, methodologies, and best practices needed for the development of applications for high-performance embedded computing systems. Focuses on maximizing performance while managing energy consumption in embedded systems Explains how to retarget code for heterogeneous systems with GPUs and FPGAs Demonstrates a domain-specific language that facilitates migrating and retargeting existing applications to modern systems Includes downloadable slides, tools, and tutorials
Contents:
Front Cover
Embedded Computing for High Performance: Efficient Mapping of Computations Using Customization, CodeTransformations and Com...
Copyright
Dedication
Contents
About the Authors
Preface
Acknowledgments
Abbreviations
Chapter 1: Introduction
1.1. Overview
1.2. Embedded Systems in Society and Industry
1.3. Embedded Computing Trends
1.4. Embedded Systems: Prototyping and Production
1.5. About LARA: An Aspect-Oriented Approach
1.6. Objectives and Target Audience
1.7. Complementary Bibliography
1.8. Dependences in Terms of Knowledge
1.9. Examples and Benchmarks
1.10. Book Organization
1.11. Intended Use
1.12. Summary
References
Chapter 2: High-performance embedded computing
2.1. Introduction
2.2. Target Architectures
2.2.1. Hardware Accelerators as Coprocessors
2.2.2. Multiprocessor and Multicore Architectures
2.2.3. Heterogeneous Multiprocessor/Multicore Architectures
2.2.4. OpenCL Platform Model
2.3. Core-Based Architectural Enhancements
2.3.1. Single Instruction, Multiple Data Units
2.3.2. Fused Multiply-Add Units
2.3.3. Multithreading Support
2.4. Common Hardware Accelerators
2.4.1. GPU Accelerators
2.4.2. Reconfigurable Hardware Accelerators
2.4.3. SoCs With Reconfigurable Hardware
2.5. Performance
2.5.1. Amdahl's Law
2.5.2. The Roofline Model
2.5.3. Worst-Case Execution Time Analysis
2.6. Power and Energy Consumption
2.6.1. Dynamic Power Management
2.6.2. Dynamic Voltage and Frequency Scaling
2.6.3. Dark Silicon
2.7. Comparing Results
2.8. Summary
2.9. Further Reading
Chapter 3: Controlling the design and development cycle
3.1. Introduction
3.2. Specifications in MATLAB and C: Prototyping and Development
3.2.1. Abstraction Levels
3.2.2. Dealing With Different Concerns.
3.2.3. Dealing With Generic Code
3.2.4. Dealing With Multiple Targets
3.3. Translation, Compilation, and Synthesis Design flows
3.4. Hardware/Software Partitioning
3.4.1. Static Partitioning
3.4.2. Dynamic Partitioning
3.5. LARA: a language for Specifying Strategies
3.5.1. Select and Apply
3.5.2. Insert Action
3.5.3. Exec and Def Actions
3.5.4. Invoking Aspects
3.5.5. Executing External Tools
3.5.6. Compilation and Synthesis Strategies in LARA
3.6. Summary
3.7. Further Reading
Chapter 4: Source code analysis and instrumentation
4.1. Introduction
4.2. Analysis and Metrics
4.3. Static Source Code Analysis
4.3.1. Data Dependences
4.3.2. Code Metrics
4.4. Dynamic Analysis: The Need for Instrumentation
4.4.1. Information From Profiling
4.4.2. Profiling Example
4.5. Custom Profiling Examples
4.5.1. Finding Hotspots
4.5.2. Loop Metrics
4.5.3. Dynamic Call Graphs
4.5.4. Branch Frequencies
4.5.5. Heap Memory
4.6. Summary
4.7. Further Reading
Chapter 5: Source code transformations and optimizations
5.1. Introduction
5.2. Basic Transformations
5.3. Data Type Conversions
5.4. Code Reordering
5.5. Data Reuse
5.6. Loop-Based Transformations
5.6.1. Loop Alignment
5.6.2. Loop Coalescing
5.6.3. Loop Flattening
5.6.4. Loop Fusion and Loop Fission
5.6.5. Loop Interchange and Loop Permutation (Loop Reordering)
5.6.6. Loop Peeling
5.6.7. Loop Shifting
5.6.8. Loop Skewing
5.6.9. Loop Splitting
5.6.10. Loop Stripmining
5.6.11. Loop Tiling (Loop Blocking)
5.6.12. Loop Unrolling
5.6.13. Unroll and Jam
5.6.14. Loop Unswitching
5.6.15. Loop Versioning
5.6.16. Software Pipelining
5.6.17. Evaluator-Executor Transformation
5.6.18. Loop Perforation
5.6.19. Other Loop Transformations.
5.6.20. Overview
5.7. Function-Based Transformations
5.7.1. Function Inlining/Outlining
5.7.2. Partial Evaluation and Code Specialization
5.7.3. Function Approximation
5.8. Data structure-Based Transformations
5.8.1. Scalar Expansion, Array Contraction, and Array Scalarization
5.8.2. Scalar and Array Renaming
5.8.3. Arrays and Records
5.8.4. Reducing the Number of Dimensions of Arrays
5.8.5. From Arrays to Pointers and Array Recovery
5.8.6. Array Padding
5.8.7. Representation of Matrices and Graphs
5.8.8. Object Inlining
5.8.9. Data Layout Transformations
5.8.10. Data Replication and Data Distribution
5.9. From Recursion to Iterations
5.10. From Nonstreaming to Streaming
5.11. Data and Computation Partitioning
5.11.1. Data Partitioning
5.11.2. Partitioning Computations
5.11.3. Computation Offloading
5.12. LARA Strategies
5.13. Summary
5.14. Further Reading
Chapter 6: Code retargeting for CPU-based platforms
6.1. Introduction
6.2. Retargeting Mechanisms
6.3. Parallelism and Compiler Options
6.3.1. Parallel Execution Opportunities
6.3.2. Compiler Options
6.3.3. Compiler Phase Selection and Ordering
6.4. Loop Vectorization
6.5. Shared Memory (Multicore)
6.6. Distributed Memory (Multiprocessor)
6.7. Cache-based Program Optimizations
6.8. LARA Strategies
6.8.1. Capturing Heuristics to Control Code Transformations
6.8.2. Parallelizing Code With OpenMP
6.8.3. Monitoring an MPI Application
6.9. Summary
6.10. Further Reading
Chapter 7: Targeting heterogeneous computing platforms
7.1. Introduction
7.2. Roofline Model Revisited
7.3. Workload Distribution
7.4. Graphics Processing Units
7.5. High-level Synthesis
7.6. LARA Strategies
7.7. Summary
7.8. Further Reading
References.
Chapter 8: Additional topics
8.1. Introduction
8.2. Design Space Exploration
8.2.1. Single-Objective Optimization and Single/Multiple Criteria
8.2.2. Multiobjective Optimization, Pareto Optimal Solutions
8.2.3. DSE Automation
8.3. Hardware/Software Codesign
8.4. Runtime Adaptability
8.4.1. Tuning Application Parameters
8.4.2. Adaptive Algorithms
8.4.3. Resource Adaptivity
8.5. Automatic Tuning (Autotuning)
8.5.1. Search Space
8.5.2. Static and Dynamic Autotuning
8.5.3. Models for Autotuning
8.5.4. Autotuning Without Dynamic Compilation
8.5.5. Autotuning With Dynamic Compilation
8.6. Using LARA for Exploration of Code Transformation Strategies
8.7. Summary
8.8. Further Reading
Glossary
Index
Back Cover.
Notes:
Includes bibliographical references and index.
Description based on print version record.
Includes index.
ISBN:
9780128041994
0128041994
OCLC:
993443648

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account