
Multicore Software Development Techniques
Applications, Tips, and Tricks
- 1st Edition - November 18, 2015
- Imprint: Newnes
- Author: Robert Oshana
- Language: English
- Paperback ISBN:9 7 8 - 0 - 1 2 - 8 0 0 9 5 8 - 1
- eBook ISBN:9 7 8 - 0 - 1 2 - 8 0 1 0 3 7 - 2
This book provides a set of practical processes and techniques used for multicore software development. It is written with a focus on solving day to day problems using pr… Read more

Purchase options

Institutional subscription on ScienceDirect
Request a sales quoteThis book provides a set of practical processes and techniques used for multicore software development. It is written with a focus on solving day to day problems using practical tips and tricks and industry case studies to reinforce the key concepts in multicore software development.
Coverage includes:
- Presents the ‘nuts and bolts’ of programming a multicore system
- Provides a short-format book on the practical processes and techniques used in multicore software development
- Covers practical tips, tricks and industry case studies to enhance the learning process
Software architects and programmers, embedded system architects, hardware designers and engineers
1. Principles of Parallel Computing Abstract1.1 Concurrency versus Parallelism1.2 Symmetric and Asymmetric Multiprocessing1.3 Parallelism Saves Power1.4 Key Challenges of Parallel Computing2. Parallelism in All of Its Forms Abstract2.1 Bit-Level Parallelism2.2 Instruction-Level Parallelism (ILP)2.3 Simultaneous Multithreading2.4 Single Instruction, Multiple Data (SIMD)2.5 Data Parallelism2.6 Task Parallelism2.7 Acceleration and Offload Engines3. Multicore System Architectures Abstract3.1 Shared Memory Multicore Systems3.2 Cache Coherency3.3 Shared Data Synchronization3.4 Distributed Memory3.5 Symmetric Multiprocessing3.6 Asymmetric Multiprocessing3.7 Hybrid Approaches3.8 Speaking of Cores3.9 Graphical Processing Units (GPU)3.10 Putting It All Together4. Multicore Software Architectures Abstract4.1 Multicore Software Architectures4.2 A Decision Tree Approach to Selecting a Multicore Architecture5. Multicore Software Development Process Abstract5.1 Multicore Programming Models6. Putting it All Together, A Case Study of Multicore Development Abstract6.1 Multiple-Single-Cores6.2 Cooperating-Multiple-Cores6.3 Getting Started6.4 System Requirements7. Multicore Virtualization Abstract7.1 Hypervisor Classifications7.2 Virtualization Use Cases for Multicore7.3 Linux Hypervisors7.4 Virtual Networking in Multicore7.5 I/O Activity in a Virtualized Environment7.6 Direct Device Assignment8. Performance and Optimization of Multicore Systems Abstract8.1 Select the Right “Core” for Your Multicore8.2 Improve Serial Performance before Migrating to Multicore (Especially ILP)8.3 Achieve Proper Load Balancing (SMP Linux) and Scheduling8.4 Improve Data Locality8.5 Reduce or Eliminate False Sharing8.6 Use Affinity Scheduling When Necessary8.7 Apply the Proper Lock Granularity and Frequency8.8 Remove Sync Barriers Where Possible8.9 Minimize Communication Latencies8.10 Use Thread Pools8.11 Manage Thread Count8.12 Stay Out of the Kernel If at all Possible8.13 Use Parallel Libraries (pthreads, OpenMP, etc.)9. Sequential to Parallel Migration of Software Applications Abstract9.1 Step 1: Understand Requirements9.2 Step 2: Sequential Analysis9.3 Step 3: Exploration9.4 Step 4: Code Optimization and Tuning9.5 Image Processing Example9.6 Step 2: Sequential Analysis9.7 Step 3: Exploration9.8 Step 4: Optimization and Tuning9.9 Data Parallel; First Attempt9.10 Data Parallel—Second Try9.11 Task Parallel—Third Try9.12 Exploration Results9.13 Tuning9.14 Data Parallel—Third Try9.15 Data Parallel—Third Results9.16 Data Parallel—Fourth Try9.17 Data Parallel—Work Queues9.18 Going Too Far?10. Concurrency Abstractions Abstract10.1 Language Extensions Example—OpenMP10.2 Framework Example—OpenCL10.3 Libraries Example—Thread Building Libraries10.4 Thread Safety10.5 Message Passing Multicore Models—MPI and MCAPI10.6 Language SupportAdditional ReadingAppendix A. Source Code Examples Matrix Multiply – Naïve Version (Not Cache Friendly)Matrix Multiply—Cache Friendly VersionPrimes Code with Race ConditionsPrimes Code with Race Conditions FIXEDConway’s Game of Life UnoptimizedConway’s Game of Life Optimized
- Edition: 1
- Published: November 18, 2015
- No. of pages (Paperback): 236
- No. of pages (eBook): 236
- Imprint: Newnes
- Language: English
- Paperback ISBN: 9780128009581
- eBook ISBN: 9780128010372
RO
Robert Oshana
Rob Oshana is Vice President of Software Engineering R&D for the Microcontroller and Microprocessor business line at NXP, responsible for software enablement, IoT connectivity, software middleware and security, operating systems, machine learning, software services and advanced technologies. He serves on multiple industry advisory boards and is a recognized international speaker. He has published numerous books and articles on software engineering and embedded systems. He is also an adjunct professor at the University of Texas and Southern Methodist University and is a Senior Member of IEEE.
Affiliations and expertise
Vice President of Software Engineering R&D for the Microcontroller and Microprocessor business line at NXP, Austin, U.S.A.Read Multicore Software Development Techniques on ScienceDirect