You are previewing Parallel Programming with Intel® Parallel Studio XE.
O'Reilly logo
Parallel Programming with Intel® Parallel Studio XE

Book Description

Optimize code for multi-core processors with Intel's Parallel Studio

Parallel programming is rapidly becoming a "must-know" skill for developers. Yet, where to start? This teach-yourself tutorial is an ideal starting point for developers who already know Windows C and C++ and are eager to add parallelism to their code. With a focus on applying tools, techniques, and language extensions to implement parallelism, this essential resource teaches you how to write programs for multicore and leverage the power of multicore in your programs. Sharing hands-on case studies and real-world examples, the authors examine the challenges of each project and show you how to overcome them.

  • Explores conversion of serial code to parallel

  • Focuses on implementing Intel Parallel Studio

  • Highlights the benefits of using parallel code

  • Addresses error and performance optimization of code

  • Includes real-world scenarios that illustrate the techniques of advanced parallel programming situations

Parallel Programming with Intel Parallel Studio dispels any concerns of difficulty and gets you started creating faster code with Intel Parallel Studio.

Table of Contents

  1. Cover
  2. Introduction
  3. Part I: An Introduction to Parallelism
    1. Chapter 1: Parallelism Today
      1. The Arrival of Parallelism
      2. The Top Six Challenges
      3. Parallelism and the Programmer
      4. Summary
    2. Chapter 2: An Overview of Parallel Studio XE
      1. Why Parallel Studio XE?
      2. What's in Parallel Studio XE?
      3. Intel Parallel Studio XE
      4. Intel Parallel Advisor
      5. Intel Parallel Composer XE
      6. VTune Amplifier XE
      7. Parallel Inspector XE
      8. Static Security Analysis
      9. Different Approaches to using Parallel Studio XE
      10. Summary
    3. Chapter 3: Parallel Studio XE for the Impatient
      1. The Four-Step Methodology
      2. Example 1: Working with Cilk Plus
      3. Example 2: Working with OpenMP
      4. Summary
  4. Part II: Using Parallel Studio XE
    1. Chapter 4: Producing Optimized Code
      1. Introduction
      2. The Example Application
      3. Optimizing Code in Seven Steps
      4. More on Auto-Vectorization
      5. Source Code
      6. Summary
    2. Chapter 5: Writing Secure Code
      1. A Simple Security Flaw Example
      2. Understanding Static Security Analysis
      3. The Build Specification
      4. Using Static Security Analysis in a QA Environment
      5. Source Code
      6. Summary
    3. Chapter 6: Where to Parallelize
      1. Different Ways of Profiling
      2. The Example Application
      3. Hotspot Analysis Using the Intel Compiler
      4. Hotspot Analysis Using the Auto-Parallelizer
      5. Hotspot Analysis with Amplifier XE
      6. Source Code
      7. Summary
    4. Chapter 7: Implementing Parallelism
      1. C or C++, That Is the Question
      2. Taking a Simple Approach
      3. The Beauty of Lambda Functions
      4. Parallelizing Loops
      5. Parallelizing Sections and Functions
      6. Parallelizing Recursive Functions
      7. Parallelizing Pipelined Applications
      8. Parallelizing Linked Lists
      9. Source Code
      10. Summary
    5. Chapter 8: Checking for Errors
      1. Parallel Inspector XE Analysis Types
      2. Detecting Threading Errors
      3. Detecting Deadlocks
      4. Detecting Data Races
      5. Fixing Data Races
      6. Detecting Memory Errors
      7. Creating a Custom Analysis
      8. The Source Code
      9. Summary
    6. Chapter 9: Tuning Parallel Applications
      1. Introduction
      2. Defining a Baseline
      3. Identifying Concurrency Hotspots
      4. Analyzing the Timeline
      5. Analyzing an Algorithm
      6. Conducting Further Analysis and Tuning
      7. Using the Intel Software Autotuning Tool
      8. Source Code
      9. Summary
    7. Chapter 10: Parallel Advisor–Driven Design
      1. Using Parallel Advisor
      2. Surveying the Site
      3. Annotating Your Code
      4. Checking Suitability
      5. Checking for Correctness
      6. Replacing Annotations
      7. Summary
    8. Chapter 11: Debugging Parallel Applications
      1. Introduction to the Intel Debugger
      2. Using the Intel Debugger to Detect Data Races
      3. More About Filters
      4. Runtime Investigation: Viewing the State of Your Application
      5. Summary
    9. Chapter 12: Event-Based Analysis with VTune Amplifier XE
      1. Testing the Health of an Application
      2. Conducting a Hotspot Analysis
      3. Conducting a General Exploration Analysis
      4. Fixing Hardware Issues
      5. Using Amplifier XE's Other Tools
      6. The Example Application
      7. Summary
  5. Part III: Case Studies
    1. Chapter 13: The World's First Sudoku “Thirty-Niner”
      1. The Sudoku Optimization Challenge
      2. Hands-On Example: Optimizing the Sudoku Generator
      3. Summary
    2. Chapter 14: Nine Tips to Parallel-Programming Heaven
      1. The Challenge: Simulating Star Formation
      2. The Hands-On Activities
      3. Application Heuristics
      4. Using a Tree-Based N-Bodies Simulation
      5. Architectural Tuning
      6. Adding Parallelism
      7. Summary
    3. Chapter 15: Parallel Track Fitting in the CERN Collider
      1. The Case Study
      2. The Stages of a High-Energy Physics Experiment
      3. What Is Array Building Blocks?
      4. Parallelizing the Track-Fitting Code
      5. The Hands-On Project
      6. Summary
    4. Chapter 16: Parallelizing Legacy Code
      1. Introducing the Dhrystone Benchmark
      2. The Hands-On Projects
      3. Parallelizing the C Version
      4. Parallelizing the C++ Version
      5. Overview of the Results
      6. Summary
  6. Advertisements