SlideShare a Scribd company logo
GameDevelopers
CONFERENCE
Antoine Cohade
Sr. Dev. Rel. Engineer
@acohade1
Michael Apodaca
Principal Engineer, 3D SW architect
@gatorfax
Special thanks to contributors & reviewers: A. Lake, S. Junkins, S. McCalla, T. Schluessler
@IntelSoftware @IntelGraphics
Legal Notices and Disclaimers
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as
well as any warranty arising from course of performance, course of dealing, or usage in trade.
You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel
a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein.
The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are
available on request.
Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system
configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at [intel.com].
Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark,
are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult
other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other
products. For more complete information visit www.intel.com/benchmarks.
Optimization Notice: Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors.
These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any
optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain
optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information
regarding the specific instruction sets covered by this notice.
Results have been estimated or simulated using internal Intel analysis or architecture simulation or modeling, and provided to you for informational purposes. Any differences in your
system hardware, software or configuration may affect your actual performance.
Intel, Core and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
*Other names and brands may be claimed as the property of others
© Intel Corporation.
2
@IntelSoftware @IntelGraphics
Agenda
• Graphics Pipeline Basics
• for_each( hardwareBlock in Gen11 {
describe(hardwareBlock);
give(performanceTip**);
});
• Tiled-Based Rendering
• Coarse Pixel Shading
3
**Most Performance tips also apply to Gen9
@IntelSoftware @IntelGraphics
@IntelSoftware @IntelGraphics 4
Graphics Pipeline 101
3D Pipeline
Compute Pipeline
Command
Streamer
Geometry Raster/ZDraw() Compute
Memory
Pixel
Backend
Dispatch() Command
Streamer
Compute
Memory
@IntelSoftware @IntelGraphics 5
How does that match to Gen?
55
L3/Tile$/URB
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Slice Common
Pixel Backend / Color$
Rasterizer
Z / Depth$
Unslice
GAGEOM/FF POSH
GTI CS GuC BLIT
Media FF
VD
VD VE
@IntelSoftware @IntelGraphics 6
How does that match to Gen?
Un-Slice (1,2)
1. Global Assets: Command Streamer, Ring
interface, pwr mgmt, Blitter, Thread Dispatch
2. Geometry Fixed Functions: 3D HW pipeline
(geometry)
And also:
Media FF: Low power HW encode, decode,
& video processing
Slice (3,4)
3. Slice-Common/L3: Setup, Rasterizer, Z,
L3 Cache, and Pixel processing
4. Sub-Slices: Array of Execution Units, Inst
Caches (IC$), Texture Samplers w/ Caches,
Load/Store Units
66
L3/Tile$/URB
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Bank
Slice Common
Pixel Backend / Color$
Rasterizer
Z / Depth$
Unslice
GAGEOM/FF POSH
GTI CS GuC BLIT
Media FF
VD
VD VE
Pixel
backend
Raster/Z
2. Geometry 1. Command streamer
Memory
3.
Compute
4.
Compute
4.
@IntelSoftware @IntelGraphics 7
Command Streamer
§ Reads and dispatches command buffer
• 3D commands to Geometry/Fixed Functions
• Compute commands to Thread Dispatcher
§ Builds indirect command buffers if needed
Performance tips:
§ Avoid small empty drawIndirects – use ExecuteIndirect
or MultiDrawIndirect Extensions!
§ Separate and regroup 3D and Compute workloads
together to get the most of the hardware
Unslice
GAGEOM/FF
CS
Geometry/Fixed Functions
§ Vertex fetch/transform/write in order into Memory
§ 1.5x over Gen9 (from 4 to 6 attributes (float4) /clk)
Performance tips:
§ Pack attributes into float4 when possible
§ Hold your Prim. count on a leash
• CPU occlusion and size culling
• Level Of Details (LODs)
• Frustum culling
• Backface culling
Unslice architecture
7
@IntelSoftware @IntelGraphics 8
Slice Common Architecture: Rasterizer
§ Handles Clipping, Viewport Scaling, orientation/thin
triangles culling, and of course rasterization!
§ Hierarchical Rasterization up to 256 pix/clk (16 * 4x4)
• Determines if each 4x4(span) is fully covered,
partially, or void
• If partially, fine grain raster at 4x4 px/clk
Performance tip: Beware of small triangles - use LODs
and impostors:
Slice Common
Rasterizer
88
15 px in 1 clk J 3 px in 3 clk L
@IntelSoftware @IntelGraphics 9
Slice Common Architecture: 2 Z/Depth$ Pipes
Handles Hierarchical-Z …
§ 2 modes: PlaneZ or Min/Max
§ up to 2 x 64 px/clk
§ 2 x 12kB cache
Early-Z test can happen under 1 major condition:
• We don’t need the Pixel Shader to know the final depth
Performance tip: Avoid when possible:
§ Discard in Pixel Shader (PS) -> test can happen before but late-Z write
§ Writing depth manually in the PS -> both test and write happen late
9
Slice Common
Z / Depth$
… and Intermediate-Z (per px)
§ up to 2 x 16 px/clk
§ 2 x 32kB cache
@IntelSoftware @IntelGraphics
Gen Basic Building Block: Execution Unit (EU)
10
Execution Unit (EU)
ALU 0
ALU 1
Branch
grf. …
... ...
... ...
... ...
... ...
… ...
General register file(grf) arf.
Send
Thread Control
Execution Unit (EU)
ALU 0
ALU 1
Branch
GRFGRF
......
......
......
......
......
General Register File (GRF)
Send
Thread Control
@IntelSoftware @IntelGraphics 11
Execution Unit (EU)
ALU 0
ALU 1
Natively 2 x SIMD4
§ Each ALU supports fp. & int math
§ 8 x 32-bit or 16 x 16-bit ops/cycle
§ ALU1 capable of high throughput
transcendental Math
§ Min FPU instruction latency is
2 clocks
§ FPUs are fully pipelined across
threads
§ instructions complete every cycle
Gen Basic Building Block: Execution Unit (EU)
Full rate: MUL, ADD,
MAD, MIN/MAX, CMP
1/4 rate: SQRT/RSQRT,
LOG/EXP, TRIG
1/8 rate: POW, DIV
@IntelSoftware @IntelGraphics 12
Execution Unit (EU)
GRFGRF
......
......
......
......
......
General Register File (GRF)General Register File (GRF)
12
Gen Basic Building Block: Execution Unit (EU)
7 Threads
§ Cover latency for Load, LDS, etc.
§ Each can run a diff. shader
28kB register space
§ 7 x 4 kB
§ 128 registers (grf.)/ thread
§ grf. are 8 x 32-bit (32B)
@IntelSoftware @IntelGraphics 13
Execution Unit (EU)
Thread Control
......
......
......
......
......
13
Gen Basic Building Block: Execution Unit (EU)
Thread Control
§ Thread Arbiter picks
instructions to run from
runnable thread(s)
§ Dispatches instructions to
functional units
§ co-issues up to 4 instructions
per cycle
@IntelSoftware @IntelGraphics
EU SIMD Explained
Physically SIMD4x2 but logically support 1/2/4/8/16
or 32-wide instructions
§ > SIMD8 instructions pair adjacent GRF.
• SIMD16 would pair 2 physical GRF. to a single
logical 64B grf.
§ Compiler makes the decision: for 3D workload using
either 8 or 16-wide
1414
Intel GPA has metrics to help and
we now have a standalone Shader
Compiler !!
Performance tip: Reduce register pressure:
§ High SIMD/reduced spills
§ Better codegen / scheduling
GRF Usage: <64 64-128 >128
Instruction used
SIMD16
J
SIMD8
K
SIMD8 with Spills
L
@IntelSoftware @IntelGraphics
How To Reduce Register Pressure
Don’t:
§ Branch on constant buffer conditions
§ Non uniform access to buffer data
§ Excessive variable decl. (esp. arrays)
Do’s:
§ Use Partial precision (min16float)
§ Move common code outside branches
1515
A lot more details in the Gen Graphics performance guide:
https://software.intel.com/en-us/documentation/graphics-api-performance-guide-for-intel-processor-graphics-gen9
GRF Usage: <64 64-128 >128
Instruction used
SIMD16
J
SIMD8
K
SIMD8 with Spills
L
@IntelSoftware @IntelGraphics
Sampler
Subslice: An Array Of 8 EUs With a Sampler
Sampler takes request from the EUs, fetches texels from
memory, and returns them to the EUs:
§ Handles Texture Decompression
§ 4tx/clk bilinear and point < 64b and aniso. 2x 32b
• >64 formats and aniso. 4x runs at ½ speed
§ Multiple levels of cache
Sampler performance tips:
§ Increase spatial locality
§ Reduce texture state changes
§ Use simple filtering modes (aniso. 16x is 1/16th bilinear
rate!!)
16
@IntelSoftware @IntelGraphics
Subslice: An Array Of 8 EUs
CS thread groups are guaranteed running on a single subslice:
§ Gen hardware is able to run 56 hardware threads/subslice
§ thread group size == 1024 are an issue
If we run in SIMD16, we’d have 1024/16 = 64 hardware threads,
which is bigger than the 56 available. To compensate, the shader
compiler has to use SIMD32.
§ This causes 2 issues:
• Occupancy is low (32 HW threads/56 available = 57%)
• Potential spill fills, as this doubles the register count required.
Performance tip: 8x8 thread groups is great on all hardware!
17
@IntelSoftware @IntelGraphics
DataPort
SLM
2 Subslices grouped together with…
Shared Local Memory (SLM)
§ 128kB
§ 128B/clk
§ ~1/4 latency vs. Gen9
Performance tips:
§ Using too much SLM can hurt occupancy
§ Regroup memory access to ensure full cache line access (64B)
18
Data Port (LD/ST)
§ Handles communication with L3: 64B/clk
§ UAV read/writes
Performance tip: Only create UAVs when necessary
@IntelSoftware @IntelGraphics
Slice Common Architecture: Pixel Backend
Slice Common
Pixel Backend / Color$
Handles color writes and blending to render target
§ Writes and blend at 16 px/clk
§ Has its own 2 x 32k color cache
2:1 Lossless compression
§ Saves bandwidth when writing RT data
§ Saves bandwidth when display engine reads displayable RT data
§ Saves bandwidth when texture sampler reads intermediate RT data
§ MSAA textures are not compressed
19
@IntelSoftware @IntelGraphics 20
Summary – 8 Subslices = 64 EUs
20
@IntelSoftware @IntelGraphics 21
Tile-Based Deferred Rendering (TBDR)
Problem statement: in many cases, bandwidth becomes the limiting factor for low-thermal
design point (TDP) platforms.
Solution(s):
§ Tile-based rendering is a well-known industry solution for low-power platforms; especially when discarding
intermediate data
§ Significant amount of bandwidth and execution cycles can be saved for discarded triangles; e.g. frustum or backface
culled
§ Enable opportunistically for scenarios the benefit
the most
@IntelSoftware @IntelGraphics
Position-Only Shading
Tiled-Based Rendering
(PTBR)
Position-Only Shading pipeline generates per-tile visibility
stream; using (driver-generated) position-only vertex shader
Render pipeline replays full vertex processing and per-tile
pixel processing only for visible primitives
Object Visibility Recorder (OVR) ensures consistency between
pipelines
Dynamic enabling of PTBR pipeline allows driver to choose
based on optimal conditions; e.g., bandwidth-limited render
passes
22
Vertex
Processing
Clip/Cull
OVR
Primitive
Assembly
Visibility
Buffer(s)
Visibility
Buffer(s)
Visibility
Buffer(s)
Visibility
Buffer(s)
Visibility
Buffer(s)
Visibility
Buffer(s)
Vertex
Processing
Tessellation
Geometry
Processing
Clip/Cull
Raster
Primitive
Assembly
Pixel
Processing
PerTile
Visibility
Stream
Per-Tile
@IntelSoftware @IntelGraphics
PTBR Performance Guidelines
Use explicit API render passes and discard:
§ VkRenderPass/VkSubpass with
VK_ATTACHMENT_STORE_OP_DONT_CARE
§ (RS5) ID3D12GraphicsCommandList4::EndRenderPass with
D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD
During high-bandwidth render passes (e.g., MSAA, blending) avoid:
§ Tessellation, Geometry Shading and/or Stream Output,
and Compute Shading
§ Use per-attribute vertex buffers - position only
GPA: per-Draw performance analysis will disable PTBR
23
@IntelSoftware @IntelGraphics
Coarse Pixel Shading (CPS): Motivation
§ Pixel density increasing
§ Performance not scaling at same density as pixel resolution
§ Need mechanisms to hit high frame rate and not waste pixel throughput
§ Software solutions:
• Dynamic Resolution Rendering
• Checkerboard rendering
• …
§ Can also explore hardware solutions…
Intel has highly optimized
open source implementations
of these available
Topic of these slides
24
@IntelSoftware @IntelGraphics
Coarse Pixel Shading Overview
Set Pixel Shading Rate to be:
§ Floating point value between 1 and 4 in X and Y dimension
§ Rounded to integer value to determine actual shading rate
HW support for 2 modes of operation:
§ Foveated:
• Specify a CPS rate for inner and outer elliptical region
• Specify an inner and outer ellipse, smooth transition between them
§ Draw call:
• Set a state for all future Draw() calls
• Set multiple times per frame
Will be exposed in D3D12 (aka Variable Rate Shading) as well as future
Vulkan extensions.
Per pixel visibility
Shading once per
X * Y pixel group
Inner elliptical region
Outer elliptical regionSmooth transition
25
@IntelSoftware @IntelGraphics 26
Coarse Pixel Shading (CPS)
• Proof of Concept integration into Unreal
Engine SunTemple demo
• CPS rate applied to all geometry when under
motion at 2x2 or 4x4 rates
• Early perf gains between ~20-40%
• Microsoft Variable Rate Shading Talk
happening now !
• Come see the demo at the Intel Booth!
@IntelSoftware @IntelGraphics
Conclusion
§ 64EUs * SIMD4x2 * 2ops/clk = 1024 ops/clk
• Up to 1 Tflops !!
• And you now have the keys to make the most of it
§ New performance features allowing to get even more from the hardware
• CPS
• PTBR
§ Biggest gaming announcement in 2019 – Raising the mainstream gaming bar
§ A lot more details in the Gen11 whitepaper : https://software.intel.com/en-
us/download/graphics-api-architecture-guide-for-intel-processor-graphics-gen11
27
Questions?
28
@IntelSoftware @IntelGraphics
Gen11 Memory Hierarchy
292929
@IntelSoftware @IntelGraphics 30
Backup
Key Peak Metrics Gen9 GT2 Gen11 GT2
Slice Attribute
# of Slices 1 1
# of Sub-Slices 3 8
# of Cores (Eus) 24 (3x8) 64 (8x8)
Single Precision FLOPs per ClkClock (MAD) 384 1024
Half Precision FLOPs per ClkClock (MAD) 768 2048
Int8 IOPs per ClkClock 768 1024
Register File Per Sub-Slice 224KB 224KB
# of Samplers 3 8
Point/Bilinear Texels/ClkClock (32bpt) 12 32
Point/Bilinear Texels/ClkClock (64bpt) 12 32
Trilinear Texels/ClkClock (32bpt) 6 16
Shared Local Memory Total 192KB(=3 x 64KB)* 512KB(=8 x 64KB)
Slice-Common Attributes
Pixels/ClkClock (RGBA8) wo. Alpha Blend 8 16
Pixels/ClkClock (RGBA8) w. Alpha Blend 8 16
HiZ Zixels/ClkClock 64 128
L3$ Cache 768 KB 3072 KB
Geometry Attributes
Vertex Attributes Per ClkClock 4 6
Primitive/ClkClock (backface Cull – strips) 1 1
Primitive/ClkClock (backface Cull – lists) 0.67 0.67
Global Attributes
GTI Bandwidth (Bytes/ClkClock) R: 64
W: 32
R: 64
W: 64
LLC Configuration 2-8MB TBD
DRAM Configuration 2x64 LPDDR3/DDR4 4x32 LPDDR4/DDR4
Peak DRAM Data Rate (Mbps) Up to 2Ch 2400 Up to 2Ch 3733
Max Peak DRAM BW (GBps) Up to 38.4 GBps Up to 59.7 GBps
*Note - Gen9 L3$ includes SLM, Data and Fixed Function Data

More Related Content

PPTX
weather monitoiring system.pptx
PPTX
Rc delay modelling in vlsi
PPTX
Linux Device Tree
PDF
Computational models
PPT
Rhapsody Eclipse
PDF
Zynq architecture
PPT
Lec 2 digital basics
PDF
Arm processor architecture awareness session pi technologies
weather monitoiring system.pptx
Rc delay modelling in vlsi
Linux Device Tree
Computational models
Rhapsody Eclipse
Zynq architecture
Lec 2 digital basics
Arm processor architecture awareness session pi technologies

What's hot (20)

PDF
ARM Processor Tutorial
PDF
Pass Transistor Logic
PDF
105926921 cmos-digital-integrated-circuits-solution-manual-1
PDF
Notes: Verilog Part 1 - Overview - Hierarchical Modeling Concepts - Basics
PPTX
CMOS Fabrication using P-well -VLSI
PPT
PPTX
RISC-V Introduction
PPTX
Arm cortex-m4 programmer model
PPTX
Pn sequence
PDF
SOC Design Challenges and Practices
PPTX
Tinkercad Workshop PPT, Dept. of ECE.pptx
PPT
ARM Micro-controller
PPTX
TIMING ISSUES IN DIGITAL CIRCUITS: SYNCHRONOUS DESIGN
DOCX
Case study on Intel core i3 processor.
PPTX
Pentium processor
PDF
Local I/O ESD protection for 28Gbps to 112Gbps SerDes interfaces in advanced ...
PPT
PDF
Internet of Things (Iot) Based Robotic Arm
ARM Processor Tutorial
Pass Transistor Logic
105926921 cmos-digital-integrated-circuits-solution-manual-1
Notes: Verilog Part 1 - Overview - Hierarchical Modeling Concepts - Basics
CMOS Fabrication using P-well -VLSI
RISC-V Introduction
Arm cortex-m4 programmer model
Pn sequence
SOC Design Challenges and Practices
Tinkercad Workshop PPT, Dept. of ECE.pptx
ARM Micro-controller
TIMING ISSUES IN DIGITAL CIRCUITS: SYNCHRONOUS DESIGN
Case study on Intel core i3 processor.
Pentium processor
Local I/O ESD protection for 28Gbps to 112Gbps SerDes interfaces in advanced ...
Internet of Things (Iot) Based Robotic Arm
Ad

Similar to The Architecture of 11th Generation Intel® Processor Graphics (20)

PDF
In The Trenches Optimizing UE4 for Intel
PDF
thu-blake-gdc-2014-final
PDF
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...
PDF
More explosions, more chaos, and definitely more blowing stuff up
PPTX
Optimization Deep Dive: Unreal Engine 4 on Intel
PDF
Efficient Rendering with DirectX* 12 on Intel® Graphics
PDF
Accelerate Your Game Development on Android*
PPT
Optimizing Direct X On Multi Core Architectures
PPTX
Intel® Graphics Performance Analyzers
PPTX
Unity Optimization Tips, Tricks and Tools
PPTX
Real-Time Game Optimization with Intel® GPA
PDF
Make your unity game faster, faster
PDF
Debug, Analyze and Optimize Games with Intel Tools - Matteo Valoriani - Codem...
PDF
Debug, Analyze and Optimize Games with Intel Tools - Matteo Valoriani - Codem...
PDF
Debug, Analyze and Optimize Games with Intel Tools
PPTX
Forts and Fights Scaling Performance on Unreal Engine*
PDF
Scalability for All: Unreal Engine* 4 with Intel
PDF
Intel Graphics Performance Analyzers (Intel GPA)
PDF
It Doesn't Have to Be Hard: How to Fix Your Performance Woes
PPTX
Graphics Processing unit ppt
In The Trenches Optimizing UE4 for Intel
thu-blake-gdc-2014-final
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...
More explosions, more chaos, and definitely more blowing stuff up
Optimization Deep Dive: Unreal Engine 4 on Intel
Efficient Rendering with DirectX* 12 on Intel® Graphics
Accelerate Your Game Development on Android*
Optimizing Direct X On Multi Core Architectures
Intel® Graphics Performance Analyzers
Unity Optimization Tips, Tricks and Tools
Real-Time Game Optimization with Intel® GPA
Make your unity game faster, faster
Debug, Analyze and Optimize Games with Intel Tools - Matteo Valoriani - Codem...
Debug, Analyze and Optimize Games with Intel Tools - Matteo Valoriani - Codem...
Debug, Analyze and Optimize Games with Intel Tools
Forts and Fights Scaling Performance on Unreal Engine*
Scalability for All: Unreal Engine* 4 with Intel
Intel Graphics Performance Analyzers (Intel GPA)
It Doesn't Have to Be Hard: How to Fix Your Performance Woes
Graphics Processing unit ppt
Ad

More from Intel® Software (20)

PPTX
AI for All: Biology is eating the world & AI is eating Biology
PPTX
Python Data Science and Machine Learning at Scale with Intel and Anaconda
PDF
Streamline End-to-End AI Pipelines with Intel, Databricks, and OmniSci
PDF
AI for good: Scaling AI in science, healthcare, and more.
PDF
Software AI Accelerators: The Next Frontier | Software for AI Optimization Su...
PPTX
Advanced Techniques to Accelerate Model Tuning | Software for AI Optimization...
PPTX
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...
PPTX
AWS & Intel Webinar Series - Accelerating AI Research
PPTX
Intel Developer Program
PDF
Intel AIDC Houston Summit - Overview Slides
PDF
AIDC NY: BODO AI Presentation - 09.19.2019
PDF
AIDC NY: Applications of Intel AI by QuEST Global - 09.19.2019
PDF
Advanced Single Instruction Multiple Data (SIMD) Programming with Intel® Impl...
PDF
Build a Deep Learning Video Analytics Framework | SIGGRAPH 2019 Technical Ses...
PDF
Bring Intelligent Motion Using Reinforcement Learning Engines | SIGGRAPH 2019...
PDF
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...
PDF
AIDC India - AI on IA
PDF
AIDC India - Intel Movidius / Open Vino Slides
PDF
AIDC India - AI Vision Slides
PDF
Enhance and Accelerate Your AI and Machine Learning Solution | SIGGRAPH 2019 ...
AI for All: Biology is eating the world & AI is eating Biology
Python Data Science and Machine Learning at Scale with Intel and Anaconda
Streamline End-to-End AI Pipelines with Intel, Databricks, and OmniSci
AI for good: Scaling AI in science, healthcare, and more.
Software AI Accelerators: The Next Frontier | Software for AI Optimization Su...
Advanced Techniques to Accelerate Model Tuning | Software for AI Optimization...
Reducing Deep Learning Integration Costs and Maximizing Compute Efficiency| S...
AWS & Intel Webinar Series - Accelerating AI Research
Intel Developer Program
Intel AIDC Houston Summit - Overview Slides
AIDC NY: BODO AI Presentation - 09.19.2019
AIDC NY: Applications of Intel AI by QuEST Global - 09.19.2019
Advanced Single Instruction Multiple Data (SIMD) Programming with Intel® Impl...
Build a Deep Learning Video Analytics Framework | SIGGRAPH 2019 Technical Ses...
Bring Intelligent Motion Using Reinforcement Learning Engines | SIGGRAPH 2019...
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...
AIDC India - AI on IA
AIDC India - Intel Movidius / Open Vino Slides
AIDC India - AI Vision Slides
Enhance and Accelerate Your AI and Machine Learning Solution | SIGGRAPH 2019 ...

Recently uploaded (20)

PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Spectroscopy.pptx food analysis technology
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPT
Teaching material agriculture food technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Understanding_Digital_Forensics_Presentation.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Big Data Technologies - Introduction.pptx
Review of recent advances in non-invasive hemoglobin estimation
The Rise and Fall of 3GPP – Time for a Sabbatical?
Reach Out and Touch Someone: Haptics and Empathic Computing
Spectroscopy.pptx food analysis technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Teaching material agriculture food technology
Building Integrated photovoltaic BIPV_UPV.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Encapsulation_ Review paper, used for researhc scholars
Network Security Unit 5.pdf for BCA BBA.
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Advanced methodologies resolving dimensionality complications for autism neur...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Understanding_Digital_Forensics_Presentation.pptx

The Architecture of 11th Generation Intel® Processor Graphics

  • 1. GameDevelopers CONFERENCE Antoine Cohade Sr. Dev. Rel. Engineer @acohade1 Michael Apodaca Principal Engineer, 3D SW architect @gatorfax Special thanks to contributors & reviewers: A. Lake, S. Junkins, S. McCalla, T. Schluessler
  • 2. @IntelSoftware @IntelGraphics Legal Notices and Disclaimers No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document. Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade. You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein. The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are available on request. Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at [intel.com]. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For more complete information visit www.intel.com/benchmarks. Optimization Notice: Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Results have been estimated or simulated using internal Intel analysis or architecture simulation or modeling, and provided to you for informational purposes. Any differences in your system hardware, software or configuration may affect your actual performance. Intel, Core and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others © Intel Corporation. 2
  • 3. @IntelSoftware @IntelGraphics Agenda • Graphics Pipeline Basics • for_each( hardwareBlock in Gen11 { describe(hardwareBlock); give(performanceTip**); }); • Tiled-Based Rendering • Coarse Pixel Shading 3 **Most Performance tips also apply to Gen9 @IntelSoftware @IntelGraphics
  • 4. @IntelSoftware @IntelGraphics 4 Graphics Pipeline 101 3D Pipeline Compute Pipeline Command Streamer Geometry Raster/ZDraw() Compute Memory Pixel Backend Dispatch() Command Streamer Compute Memory
  • 5. @IntelSoftware @IntelGraphics 5 How does that match to Gen? 55 L3/Tile$/URB Bank Bank Bank Bank Bank Bank Bank Bank Slice Common Pixel Backend / Color$ Rasterizer Z / Depth$ Unslice GAGEOM/FF POSH GTI CS GuC BLIT Media FF VD VD VE
  • 6. @IntelSoftware @IntelGraphics 6 How does that match to Gen? Un-Slice (1,2) 1. Global Assets: Command Streamer, Ring interface, pwr mgmt, Blitter, Thread Dispatch 2. Geometry Fixed Functions: 3D HW pipeline (geometry) And also: Media FF: Low power HW encode, decode, & video processing Slice (3,4) 3. Slice-Common/L3: Setup, Rasterizer, Z, L3 Cache, and Pixel processing 4. Sub-Slices: Array of Execution Units, Inst Caches (IC$), Texture Samplers w/ Caches, Load/Store Units 66 L3/Tile$/URB Bank Bank Bank Bank Bank Bank Bank Bank Slice Common Pixel Backend / Color$ Rasterizer Z / Depth$ Unslice GAGEOM/FF POSH GTI CS GuC BLIT Media FF VD VD VE Pixel backend Raster/Z 2. Geometry 1. Command streamer Memory 3. Compute 4. Compute 4.
  • 7. @IntelSoftware @IntelGraphics 7 Command Streamer § Reads and dispatches command buffer • 3D commands to Geometry/Fixed Functions • Compute commands to Thread Dispatcher § Builds indirect command buffers if needed Performance tips: § Avoid small empty drawIndirects – use ExecuteIndirect or MultiDrawIndirect Extensions! § Separate and regroup 3D and Compute workloads together to get the most of the hardware Unslice GAGEOM/FF CS Geometry/Fixed Functions § Vertex fetch/transform/write in order into Memory § 1.5x over Gen9 (from 4 to 6 attributes (float4) /clk) Performance tips: § Pack attributes into float4 when possible § Hold your Prim. count on a leash • CPU occlusion and size culling • Level Of Details (LODs) • Frustum culling • Backface culling Unslice architecture 7
  • 8. @IntelSoftware @IntelGraphics 8 Slice Common Architecture: Rasterizer § Handles Clipping, Viewport Scaling, orientation/thin triangles culling, and of course rasterization! § Hierarchical Rasterization up to 256 pix/clk (16 * 4x4) • Determines if each 4x4(span) is fully covered, partially, or void • If partially, fine grain raster at 4x4 px/clk Performance tip: Beware of small triangles - use LODs and impostors: Slice Common Rasterizer 88 15 px in 1 clk J 3 px in 3 clk L
  • 9. @IntelSoftware @IntelGraphics 9 Slice Common Architecture: 2 Z/Depth$ Pipes Handles Hierarchical-Z … § 2 modes: PlaneZ or Min/Max § up to 2 x 64 px/clk § 2 x 12kB cache Early-Z test can happen under 1 major condition: • We don’t need the Pixel Shader to know the final depth Performance tip: Avoid when possible: § Discard in Pixel Shader (PS) -> test can happen before but late-Z write § Writing depth manually in the PS -> both test and write happen late 9 Slice Common Z / Depth$ … and Intermediate-Z (per px) § up to 2 x 16 px/clk § 2 x 32kB cache
  • 10. @IntelSoftware @IntelGraphics Gen Basic Building Block: Execution Unit (EU) 10 Execution Unit (EU) ALU 0 ALU 1 Branch grf. … ... ... ... ... ... ... ... ... … ... General register file(grf) arf. Send Thread Control Execution Unit (EU) ALU 0 ALU 1 Branch GRFGRF ...... ...... ...... ...... ...... General Register File (GRF) Send Thread Control
  • 11. @IntelSoftware @IntelGraphics 11 Execution Unit (EU) ALU 0 ALU 1 Natively 2 x SIMD4 § Each ALU supports fp. & int math § 8 x 32-bit or 16 x 16-bit ops/cycle § ALU1 capable of high throughput transcendental Math § Min FPU instruction latency is 2 clocks § FPUs are fully pipelined across threads § instructions complete every cycle Gen Basic Building Block: Execution Unit (EU) Full rate: MUL, ADD, MAD, MIN/MAX, CMP 1/4 rate: SQRT/RSQRT, LOG/EXP, TRIG 1/8 rate: POW, DIV
  • 12. @IntelSoftware @IntelGraphics 12 Execution Unit (EU) GRFGRF ...... ...... ...... ...... ...... General Register File (GRF)General Register File (GRF) 12 Gen Basic Building Block: Execution Unit (EU) 7 Threads § Cover latency for Load, LDS, etc. § Each can run a diff. shader 28kB register space § 7 x 4 kB § 128 registers (grf.)/ thread § grf. are 8 x 32-bit (32B)
  • 13. @IntelSoftware @IntelGraphics 13 Execution Unit (EU) Thread Control ...... ...... ...... ...... ...... 13 Gen Basic Building Block: Execution Unit (EU) Thread Control § Thread Arbiter picks instructions to run from runnable thread(s) § Dispatches instructions to functional units § co-issues up to 4 instructions per cycle
  • 14. @IntelSoftware @IntelGraphics EU SIMD Explained Physically SIMD4x2 but logically support 1/2/4/8/16 or 32-wide instructions § > SIMD8 instructions pair adjacent GRF. • SIMD16 would pair 2 physical GRF. to a single logical 64B grf. § Compiler makes the decision: for 3D workload using either 8 or 16-wide 1414 Intel GPA has metrics to help and we now have a standalone Shader Compiler !! Performance tip: Reduce register pressure: § High SIMD/reduced spills § Better codegen / scheduling GRF Usage: <64 64-128 >128 Instruction used SIMD16 J SIMD8 K SIMD8 with Spills L
  • 15. @IntelSoftware @IntelGraphics How To Reduce Register Pressure Don’t: § Branch on constant buffer conditions § Non uniform access to buffer data § Excessive variable decl. (esp. arrays) Do’s: § Use Partial precision (min16float) § Move common code outside branches 1515 A lot more details in the Gen Graphics performance guide: https://software.intel.com/en-us/documentation/graphics-api-performance-guide-for-intel-processor-graphics-gen9 GRF Usage: <64 64-128 >128 Instruction used SIMD16 J SIMD8 K SIMD8 with Spills L
  • 16. @IntelSoftware @IntelGraphics Sampler Subslice: An Array Of 8 EUs With a Sampler Sampler takes request from the EUs, fetches texels from memory, and returns them to the EUs: § Handles Texture Decompression § 4tx/clk bilinear and point < 64b and aniso. 2x 32b • >64 formats and aniso. 4x runs at ½ speed § Multiple levels of cache Sampler performance tips: § Increase spatial locality § Reduce texture state changes § Use simple filtering modes (aniso. 16x is 1/16th bilinear rate!!) 16
  • 17. @IntelSoftware @IntelGraphics Subslice: An Array Of 8 EUs CS thread groups are guaranteed running on a single subslice: § Gen hardware is able to run 56 hardware threads/subslice § thread group size == 1024 are an issue If we run in SIMD16, we’d have 1024/16 = 64 hardware threads, which is bigger than the 56 available. To compensate, the shader compiler has to use SIMD32. § This causes 2 issues: • Occupancy is low (32 HW threads/56 available = 57%) • Potential spill fills, as this doubles the register count required. Performance tip: 8x8 thread groups is great on all hardware! 17
  • 18. @IntelSoftware @IntelGraphics DataPort SLM 2 Subslices grouped together with… Shared Local Memory (SLM) § 128kB § 128B/clk § ~1/4 latency vs. Gen9 Performance tips: § Using too much SLM can hurt occupancy § Regroup memory access to ensure full cache line access (64B) 18 Data Port (LD/ST) § Handles communication with L3: 64B/clk § UAV read/writes Performance tip: Only create UAVs when necessary
  • 19. @IntelSoftware @IntelGraphics Slice Common Architecture: Pixel Backend Slice Common Pixel Backend / Color$ Handles color writes and blending to render target § Writes and blend at 16 px/clk § Has its own 2 x 32k color cache 2:1 Lossless compression § Saves bandwidth when writing RT data § Saves bandwidth when display engine reads displayable RT data § Saves bandwidth when texture sampler reads intermediate RT data § MSAA textures are not compressed 19
  • 20. @IntelSoftware @IntelGraphics 20 Summary – 8 Subslices = 64 EUs 20
  • 21. @IntelSoftware @IntelGraphics 21 Tile-Based Deferred Rendering (TBDR) Problem statement: in many cases, bandwidth becomes the limiting factor for low-thermal design point (TDP) platforms. Solution(s): § Tile-based rendering is a well-known industry solution for low-power platforms; especially when discarding intermediate data § Significant amount of bandwidth and execution cycles can be saved for discarded triangles; e.g. frustum or backface culled § Enable opportunistically for scenarios the benefit the most
  • 22. @IntelSoftware @IntelGraphics Position-Only Shading Tiled-Based Rendering (PTBR) Position-Only Shading pipeline generates per-tile visibility stream; using (driver-generated) position-only vertex shader Render pipeline replays full vertex processing and per-tile pixel processing only for visible primitives Object Visibility Recorder (OVR) ensures consistency between pipelines Dynamic enabling of PTBR pipeline allows driver to choose based on optimal conditions; e.g., bandwidth-limited render passes 22 Vertex Processing Clip/Cull OVR Primitive Assembly Visibility Buffer(s) Visibility Buffer(s) Visibility Buffer(s) Visibility Buffer(s) Visibility Buffer(s) Visibility Buffer(s) Vertex Processing Tessellation Geometry Processing Clip/Cull Raster Primitive Assembly Pixel Processing PerTile Visibility Stream Per-Tile
  • 23. @IntelSoftware @IntelGraphics PTBR Performance Guidelines Use explicit API render passes and discard: § VkRenderPass/VkSubpass with VK_ATTACHMENT_STORE_OP_DONT_CARE § (RS5) ID3D12GraphicsCommandList4::EndRenderPass with D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD During high-bandwidth render passes (e.g., MSAA, blending) avoid: § Tessellation, Geometry Shading and/or Stream Output, and Compute Shading § Use per-attribute vertex buffers - position only GPA: per-Draw performance analysis will disable PTBR 23
  • 24. @IntelSoftware @IntelGraphics Coarse Pixel Shading (CPS): Motivation § Pixel density increasing § Performance not scaling at same density as pixel resolution § Need mechanisms to hit high frame rate and not waste pixel throughput § Software solutions: • Dynamic Resolution Rendering • Checkerboard rendering • … § Can also explore hardware solutions… Intel has highly optimized open source implementations of these available Topic of these slides 24
  • 25. @IntelSoftware @IntelGraphics Coarse Pixel Shading Overview Set Pixel Shading Rate to be: § Floating point value between 1 and 4 in X and Y dimension § Rounded to integer value to determine actual shading rate HW support for 2 modes of operation: § Foveated: • Specify a CPS rate for inner and outer elliptical region • Specify an inner and outer ellipse, smooth transition between them § Draw call: • Set a state for all future Draw() calls • Set multiple times per frame Will be exposed in D3D12 (aka Variable Rate Shading) as well as future Vulkan extensions. Per pixel visibility Shading once per X * Y pixel group Inner elliptical region Outer elliptical regionSmooth transition 25
  • 26. @IntelSoftware @IntelGraphics 26 Coarse Pixel Shading (CPS) • Proof of Concept integration into Unreal Engine SunTemple demo • CPS rate applied to all geometry when under motion at 2x2 or 4x4 rates • Early perf gains between ~20-40% • Microsoft Variable Rate Shading Talk happening now ! • Come see the demo at the Intel Booth!
  • 27. @IntelSoftware @IntelGraphics Conclusion § 64EUs * SIMD4x2 * 2ops/clk = 1024 ops/clk • Up to 1 Tflops !! • And you now have the keys to make the most of it § New performance features allowing to get even more from the hardware • CPS • PTBR § Biggest gaming announcement in 2019 – Raising the mainstream gaming bar § A lot more details in the Gen11 whitepaper : https://software.intel.com/en- us/download/graphics-api-architecture-guide-for-intel-processor-graphics-gen11 27
  • 30. @IntelSoftware @IntelGraphics 30 Backup Key Peak Metrics Gen9 GT2 Gen11 GT2 Slice Attribute # of Slices 1 1 # of Sub-Slices 3 8 # of Cores (Eus) 24 (3x8) 64 (8x8) Single Precision FLOPs per ClkClock (MAD) 384 1024 Half Precision FLOPs per ClkClock (MAD) 768 2048 Int8 IOPs per ClkClock 768 1024 Register File Per Sub-Slice 224KB 224KB # of Samplers 3 8 Point/Bilinear Texels/ClkClock (32bpt) 12 32 Point/Bilinear Texels/ClkClock (64bpt) 12 32 Trilinear Texels/ClkClock (32bpt) 6 16 Shared Local Memory Total 192KB(=3 x 64KB)* 512KB(=8 x 64KB) Slice-Common Attributes Pixels/ClkClock (RGBA8) wo. Alpha Blend 8 16 Pixels/ClkClock (RGBA8) w. Alpha Blend 8 16 HiZ Zixels/ClkClock 64 128 L3$ Cache 768 KB 3072 KB Geometry Attributes Vertex Attributes Per ClkClock 4 6 Primitive/ClkClock (backface Cull – strips) 1 1 Primitive/ClkClock (backface Cull – lists) 0.67 0.67 Global Attributes GTI Bandwidth (Bytes/ClkClock) R: 64 W: 32 R: 64 W: 64 LLC Configuration 2-8MB TBD DRAM Configuration 2x64 LPDDR3/DDR4 4x32 LPDDR4/DDR4 Peak DRAM Data Rate (Mbps) Up to 2Ch 2400 Up to 2Ch 3733 Max Peak DRAM BW (GBps) Up to 38.4 GBps Up to 59.7 GBps *Note - Gen9 L3$ includes SLM, Data and Fixed Function Data