Make your unity game faster, faster

Preview:

Citation preview

Cristiano Ferreira – IntelMark Harkness - Unity

Using Intel Hardware Metrics to Make Your Unity Game Faster, Faster

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others.

Legal

Copyright © 2016 Intel Corporation. All rights reserved.

*Other names and brands may be claimed as the property of others.

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

A "Mission Critical Application" is any application in which failure of the Intel Product could result, directly or indirectly, in personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR ANY SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES AND REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY OF ITS PARTS.

Intel may make changes to specifications and product descriptions at any time, without notice.

All products, dates, and figures specified are preliminary based on current expectations, and are subject to change without notice.

Intel processors, chipsets, and desktop boards may contain design defects or errors known as errata, which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Any code names featured are used internally within Intel to identify products that are in development and not yet publicly announced for release. Customers, licensees and other third parties are not authorized by Intel to use code names in advertising, promotion or marketing of any product or services and any such use of Intel's internal code names is at the sole risk of the user.

Intel product plans in this presentation do not constitute Intel plan of record product roadmaps. Please contact your Intel representative to obtain Intel’s current plan of record product roadmaps.

Performance claims: 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 information go to http://www.Intel.com/performance

Iris™ graphics is available on select systems. Consult your system manufacturer.

Intel, Intel Inside, the Intel logo, Intel Core and Iris are trademarks of Intel Corporation in the United States and other countries.

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others.

About Cristiano

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others.

About Mark

• Been at Unity for almost 6 years

• Worked in the Developer Relation for almost that whole time

• Currently touring north America helping Unity teams to optimize their projects

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others.

Agenda

• What are hardware metrics?

• Why use hardware metrics?

• Important metrics overview

• Sweet demos

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 6

What are hardware metrics?

• Values attained directly from hardware counters

• Easily detect:

• Resources oversubscribed

• Potential bottlenecks

• Where compute time is being spent

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 7

Why Use Hardware Metrics?

• Hardware counters don’t lie

• Cut out a lot of potential guess work and thought experiments

• Make a baseline performance target for each ‘Quality Setting’ in Unity specific to your lowest supported device, or even for all low, mid, high, enthusiast tiers.

• Optimize for lowest end hardware

• Integrated graphics are great at what they do, but don’t consume/use the power of the massive dedicated discrete cards in typical gaming rigs

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 8

Why Use Hardware Metrics?

Unity hardware metrics - http://hwstats.unity3d.com/index.html

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 9

Why Use Hardware Metrics?

Unity hardware metrics - http://hwstats.unity3d.com/index.html

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 10

Graphics Performance Analyzer Tools

• System Analyzer

• Frame Analyzer

• Platform Analyzer

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 11

Intel® GPA – Workflow

System Analyzer:

Frame Analyzer:

Platform Analyzer: CPU Limited

GPU Limited

Capture frame

Capture trace

?Run with Intel® GPA

In-App Analysis Offline Analysis

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others.

System Analyzer – Details – Real Time Metrics

12

• CPU Metrics

• GPU Metrics

• Memory Metrics

• Power Metrics

• Graphics API Metrics

• Other Platform Metrics

*Metric availability depends on platform

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 13

Frame Analyzer

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 14

Typical Analysis Steps

1. Find biggest opportunities for optimization (long GPU duration)

2. Find out the most stressed parts of the pipeline in those calls

3. Find the corresponding material / settings in Unity to discover how to alleviate the issue

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 15

General Metric Types

• Execution Unit (EU) Active

• Execution Unit (EU) Idle

• Execution Unit (EU) Stall

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 16

General Metric Types: EU Active

• The piece of the pipeline is active and has work

• Usually a good thing, but this will not tell you if all calculations are necessary or as optimized as they should be

• Objective is to keep each piece of the pipeline as active as possible without doing unnecessary work

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 17

General Metric Types: EU Idle

• The piece of the pipeline doesn’t have any work to do

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 18

General Metric Types: EU Stall

• An EU becomes stalled when all of its threads are waiting for results from fixed function units

• Ex. Pixel shader requests texels from the texture sampler

• Objective is to reduce stall percentage as much as possible

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 19

Typical Stressed Areas

1. Pixel Shader

2. Sampler

3. Memory Bandwidth

4. Vertex Shader

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 20

Other interesting metrics

• Sampler is Bottleneck %

• Samplers Busy %

• GTI Read Throughput, bytes

• GTI Write Throughput, bytes

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 21

Vertex Shader

• Used for vertex transformations and per-vertex calculations for effects

• If duration of VS is highest in the pipeline, can save time by:

• Simplifying geometry (LOD!)

• Simplifying per-vertex compute

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 22

Vertex Shader

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 23

Fragment Shader

• After your model is projected into 2D space and rasterized, a fragment shader is executed for every pixel that is touched by the input geometry

• Main goal typically to calculate the final pixel color

• Can also be used for full screen image effects

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 24

Fragment Shader

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 25

Find Your Fragment Shader in Unity

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 26

Demo!

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 27

Typical Analysis Steps

1. Find biggest opportunities for optimization (long GPU duration)

2. Find out the most stressed parts of the pipeline in those calls

3. Find the corresponding material / settings in Unity to discover how to alleviate the issue

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 28

Metrics In Unity Editor

Intel Software – Developer Relations DivisionCopyright © 2016, Intel Corporation. All rights reserved. * Other names and brands may be

claimed as the property of others. 29

Conclusion

• Get the free tools!

• https://software.intel.com/en-us/gpa

• Check out accompanying Unity optimization guide

• https://software.intel.com/en-us/android/articles/unity-optimization-guide-for-x86-android-part-1

• Download today’s workload to follow along

• https://github.com/GameTechDev/UnityPerformanceSandbox

• Contact!

• Twitter @Cristiano – Cristiano.Ferreira@intel.com