My Account Log in

1 option

Intel Xeon Phi coprocessor high-performance programming : knights landing edition / by Jim Jeffers, James Reinders, Avinash Sodani.

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

View online
Format:
Book
Author/Creator:
Jeffers, Jim, author.
Reinders, James, author.
Sodani, Avinash, author.
Language:
English
Subjects (All):
High performance computing.
High performance processors.
Coprocessors.
Computer programming.
Physical Description:
1 online resource (662 pages) : illustrations (some color)
Edition:
Knights Landing edition.
Other Title:
Xeon Phi coprocessor high-performance programming
Place of Publication:
Amsterdam, [Netherlands] : Morgan Kaufmann, 2016.
System Details:
text file
Summary:
Intel Xeon Phi Processor High Performance Programming is an all-in-one source of information for programming the Second-Generation Intel Xeon Phi product family also called Knights Landing. The authors provide detailed and timely Knights Landingspecific details, programming advice, and real-world examples. The authors distill their years of Xeon Phi programming experience coupled with insights from many expert customers — Intel Field Engineers, Application Engineers, and Technical Consulting Engineers — to create this authoritative book on the essentials of programming for Intel Xeon Phi products. Intel® Xeon Phi™ Processor High-Performance Programming is useful even before you ever program a system with an Intel Xeon Phi processor. To help ensure that your applications run at maximum efficiency, the authors emphasize key techniques for programming any modern parallel computing system whether based on Intel Xeon processors, Intel Xeon Phi processors, or other high-performance microprocessors. Applying these techniques will generally increase your program performance on any system and prepare you better for Intel Xeon Phi processors. A practical guide to the essentials for programming Intel Xeon Phi processors Definitive coverage of the Knights Landing architecture Presents best practices for portable, high-performance computing and a familiar and proven threads and vectors programming model Includes real world code examples that highlight usages of the unique aspects of this new highly parallel and high-performance computational product Covers use of MCDRAM, AVX-512, Intel® Omni-Path fabric, many-cores (up to 72), and many threads (4 per core) Covers software developer tools, libraries and programming models Covers using Knights Landing as a processor and a coprocessor
Contents:
Front Cover
Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition
Copyright
Contents
Acknowledgments
Foreword
Extending the Sports Car Analogy to Higher Performance
What Exactly Is The Unfair Advantage?
Peak Performance Versus Drivable/Usable Performance
How Does The Unfair Advantage Relate to This Book?
Closing Comments
Preface
Sports Car Tutorial: Introduction for Many-Core Is Online
Parallelism Pearls: Inspired by Many Cores
Organization
Structured Parallel Programming
What's New?
lotsofcores.com
Section I: Knights Landing
Chapter 1: Introduction
Introduction to Many-Core Programming
Trend: More Parallelism
Why Intel® Xeon Phi™ Processors Are Needed
Processors Versus Coprocessor
Measuring Readiness for Highly Parallel Execution
What About GPUs?
Enjoy the Lack of Porting Needed but Still Tune!
Transformation for Performance
Hyper-Threading Versus Multithreading
Programming Models
Why We Could Skip To Section II Now
For More Information
Chapter 2: Knights Landing overview
Overview
Instruction Set
Architecture Overview
Tile
Mesh: On-Die Interconnect
Cluster modes
MCDRAM (High-Bandwidth Memory) and DDR (DDR4)
I/O (PCIe Gen3)
Motivation: Our Vision and Purpose
Performance
Summary
Chapter 3: Programming MCDRAM and Cluster modes
Use Cache Mode and Default Cluster Mode (at First)
Programming for Cluster Modes
Programming for Memory Modes
Memory Usage Models
What Is the memkind Library (and hbwmalloc)?
Maximizing Performance With Memory Usage Models
Critical review for our Hello MCDRAM
NUMACTL -H
Learning NUMA Node Numbering
Ways to Observe MCDRAM Allocations
Numactl: Move All Allocations to MCDRAM.
Oversubcription of MCDRAM: A Killer or an Opportunity?
Autohbw: Move Selected Allocations to MCDRAM
Memkind/FASTMEM: Explicit Usage of MCDRAM
Explicit memory usage in C/C++: memkind
C++ notes
Explicit memory usage in Fortran: FASTMEM
Fortran FASTMEM failure modes
ALLOCATE prefers MCDRAM
ALLOCATE requires MCDRAM
Query Memory Mode and MCDRAM Available
SNC Performance Implications of Allocation and Threading
Allocation With SNC
How to Not Hard Code the NUMA Node Numbers
Approaches to Determining What to Put in MCDRAM
Approach 1: Observing or Emulating MCDRAM Effects
Stage 1: Code modification
Stage 2: Manual Execution
Stage 3: Autotuning Configuration (Optional)
Approach 2: Using Intel VTune to Determine MCDRAM Candidate Data Structures
Stage 1: Profiling Data Collection
Stage 2: Profiling Data Analysis
Stage 3: Code Modification
Results Analysis of the Two Approaches
Summary of Two Approaches to ``What Goes in MCDRAM´´
Why Rebooting Is Required to Change Modes
BIOS
Save/Restore/Change All BIOS Setting
Chapter 4: Knights Landing architecture
Tile architecture
Core and VPU
Front-end unit
Allocation unit
Integer execution unit
Memory execution unit
Vector processing unit
Threading
L2 Architecture
All-to-All Cluster Mode
Quadrant Cluster Mode
SNC-4 Mode
Hemisphere Cluster and SNC-2 Modes
Cluster Mode Summary
Memory interleaving
Memory modes
Cache Mode
Flat Mode
Hybrid Mode
Capacity, Bandwidth, Latency
Interactions of cluster and memory modes
Chapter 5: Intel Omni-Path Fabric
Host Fabric Interface
Intel OPA Switches
Intel OPA Management
Performance and Scalability
Extreme Message Rates
Low Latency.
Addressing
Multicast
Transport Layer APIs
OFA Open Fabric Interface
Performance-Scaled Messaging
Open Fabrics Verbs and Compatibility
Quality of Service
Service Levels
Traffic Flow Optimization and Packet Interleaving
Credit-Based Flow Control
Security
Partition-Based Security
Management Security
Virtual Fabrics
Unicast Address Resolution
Typical Flow for Well Behaved Applications
Out of Band Mechanisms
Multicast Address Resolution
Typical Flow for Well-Behaved Applications
Chapter 6: μarch optimization advice
Best Performance From 1, 2, or 4 Threads Per Core, Rarely 3
Hyperthreading: Do Not Turn It Off
Memory subsystem
Caches
MCDRAM and DDR
Advice: Large Pages Can Be Good (2M/1G)
μarch nuances (tile)
Instruction Cache, Decode, and Branch Predictors
Integer
Vector
Memory Accesses and Prefetch Options
Code Examples
Direct mapped MCDRAM cache
Advice: use AVX-512
Advice: Upgrade to AVX-512 From AVX/AVX2 and IMCI
Scalar Versus Vector Code
Instruction Latency Tables
Advice: Use AVX-512 Extensions for Knights Landing
Advice: Use AVX-512ER
IMCI to AVX-512: Reciprocal and Exponentials
Advice: Use AVX-512CD
Advice: Use AVX-512PF
IMCI to AVX-512: Software Prefetching
Advice: Gather and Scatter Instructions Only When Irregular
IMCI to AVX-512: Gathers/Scatters
IMCI to AVX-512: Swizzle Instructions
IMCI to AVX-512: Unaligned Loads/Stores
IMCI to AVX-512: Data Conversion Instructions
IMCI to AVX-512: Nontemporal Stores/Cache Line Evicts
For more information
Section II: Parallel programming
Chapter 7: Programming overview for Knights Landing
To Refactor, or Not to Refactor, That Is the Question
Evolutionary Optimization of Applications.
Revolutionary Optimization of Applications
Know When to Hold'em and When to Fold'em
Chapter 8: Tasks and threads
OpenMP, Fortran 2008, Intel TBB, Intel MKL
Importance of Thread Pools
OpenMP
Parallel Processing Model
Directives
Significant Controls Over OpenMP
OpenMP Nesting-Use Hot Teams
Fortran 2008
DO CONCURRENT
DO CONCURRENT and DATA RACES
DO CONCURRENT Definition
DO CONCURRENT Versus FOR ALL
DO CONCURRENT Versus OpenMP ``Parallel´´
Intel TBB
Why TBB?
Using TBB
parallel_for
blocked_range
Partitioners
parallel_reduce
parallel_invoke
TBB Flow Graph
TBB Memory Allocation, memkind, and MCDRAM
hStreams
Chapter 9: Vectorization
Why Vectorize?
How to Vectorize
Three Approaches to Achieving Vectorization
Six-Step Vectorization Methodology
Step 1. Measure Baseline Release Build Performance
Step 2. Determine Hotspots Using Intel VTune™ Amplifier
Step 3. Determine Loop Candidates Using Intel Compiler Vec-Report
Step 4. Get Advice Using Intel Advisor
Step 5. Implement Vectorization Recommendations
Step 6: Repeat!
Streaming Through Caches: Data Layout, Alignment, Prefetching, and so on
Why Data Layout Affects Vectorization Performance
Data Alignment
Prefetching
Compiler prefetches
Compiler prefetch controls (prefetching via directives/pragmas)
Manual prefetches
Streaming Stores
When streaming stores will be generated for Knights Landing
Nontemporal: compiler generation of nontemporal stores
Compiler Tips
Avoid Manual Loop Unrolling
Requirements for a Loop to Vectorize (Intel Compiler)
Importance of Inlining, Interference With Simple Profiling
Compiler Options
Memory Disambiguation Inside Vector-Loops
Compiler Directives
SIMD Directives.
Requirements to vectorize with SIMD directives
SIMD directive clauses
Use SIMD directives with care
The Vector and Novector Directives
Use vector directives with care
The ivdep Directive
ivdep example in fortran
ivdep examples in C
Random Number Function Vectorization
Data Alignment to Assist Vectorization
Step 1: aligning the data
How to define aligned STATIC arrays
Step 2: inform the compiler of the alignment
How to tell the compiler all memory references are nicely aligned for the target
Use Array Sections to Encourage Vectorization
Fortran Array Sections
Subscript triplets
Vector subscripts
Implications for array copies, efficiency issues
Look at What the Compiler Created: Assembly Code Inspection
How to Find the Assembly Code
Numerical Result Variations With Vectorization
Chapter 10: Vectorization advisor
Getting Started With Intel Advisor for Knights Landing
Enabling and Improving AVX-512 Code With the Survey Report
Preparing Your Application
Running a Survey Analysis With Trip Counts
One-Stop-Shop Performance Overview in the Survey Report
Enabling AVX-512 Speedups Via Recommendations
Fixing ineffective AVX-512 peeled/remainder loop issues
Speedups with approximate reciprocal, reciprocal square root, and exponent/mantissa extraction
Inefficient memory access in assumed-shape array and AVX-512 gather/scatter
Making Expert Users Happy: Knights Landing-Specific Traits and ISA Analysis
Compress/Expand Trait
Gather/Scatter Traits
Conflict(-free) subset detection Trait
Memory Access Pattern Report
AVX-512 Gather/Scatter Profiler
Mask Utilization and FLOPs Profiler
Advisor Roofline Report
Explore AVX-512 Code Characteristics Without AVX-512 Hardware.
Example - Analysis of a Computational Chemistry Code.
Notes:
Includes bibliographical references and index.
Includes index.
Description based on online resource; title from PDF title page (ebrary, viewed June 21, 2016).
ISBN:
9780128091951
0128091959
OCLC:
961353927

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