GORDON SELLEY TONY HOSIER AMD GPU DEVELOPER TOOLS TEAM OPTIMIZING LINUX GAMES FOR AMD GRAPHICS USING GPU PERFSTUDIO2.

Slides:



Advertisements
Similar presentations
1 | Introducing GPU PerfStudio 2.0 | GDC 2009 Introducing AMD GPU PerfStudio 2.0 Next Generation GPU Performance Analysis & Debugging Tool from AMD GPG.
Advertisements

® IBM Software Group © 2010 IBM Corporation What’s New in Profiling & Code Coverage RAD V8 April 21, 2011 Kathy Chan
Calendar Browser is a groupware used for booking all kinds of resources within an organization. Calendar Browser is installed on a file server and in a.
Optimizing and Debugging Graphics Applications with AMD's GPU PerfStudio 2.2 GPG Developer Tools Raul Aguaviva Gordon Selley Seth Sowerby.
1 of 6 Parts of Your Notebook Below is a graphic overview of the different parts of a OneNote 2007 notebook. Microsoft ® OneNote ® 2007 notebooks are digital.
Information Networking Security and Assurance Lab National Chung Cheng University F.I.R.E. Forensics & Incident Response Environment.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 8: Implementing and Managing Printers.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
2004, Jei F.I.R.E. Forensics & Incident Response Environment Information Networking Security and Assurance Lab National Chung Cheng University.
1 Introduction to Programming Environment Using MetroWerks CodeWarrior and Palm Emulator.
Installing Windows XP Professional Using Attended Installation Slide 1 of 41Session 2 Ver. 1.0 CompTIA A+ Certification: A Comprehensive Approach for all.
1 Chapter Overview Introduction to Windows XP Professional Printing Setting Up Network Printers Connecting to Network Printers Configuring Network Printers.
There has never been a better time to build a game that targets PC, tablets, phone and Xbox!
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
Sharepoint Portal Server Basics. Introduction Sharepoint server belongs to Microsoft family of servers Integrated suite of server capabilities Hosted.
Introduction Purpose Objectives Content Learning Time
OPTIMIZING AND DEBUGGING GRAPHICS APPLICATIONS WITH AMD'S GPU PERFSTUDIO 2.5 GPG Developer Tools Gordon Selley Peter Lohrmann GDC 2011.
Installing Windows Vista Lesson 2. Skills Matrix Technology SkillObjective DomainObjective # Performing a Clean Installation Set up Windows Vista as the.
2. Introduction to the Visual Studio.NET IDE 2. Introduction to the Visual Studio.NET IDE Ch2 – Deitel’s Book.
Linux Operations and Administration
Hosted Exchange The purpose of this Startup Guide is to familiarize you with ExchangeDefender's Exchange and SharePoint Hosting. ExchangeDefender.
Microsoft Visual Basic 2005 CHAPTER 8 Using Procedures and Exception Handling.
Microsoft Windows 2003 Server. Client/Server Environment Many client computers connect to a server.
WebFOCUS Developer Studio Update Dimitris Poulos Technical Director September 3, 2015 Copyright 2009, Information Builders. Slide 1.
Introduction to HP LoadRunner Getting Familiar with LoadRunner >>>>>>>>>>>>>>>>>>>>>>
Thrive Installation.
Configuring the MagicInfo Pro Display
Programming with Microsoft Visual Basic 2012 Chapter 12: Web Applications.
Hands-On Virtual Computing
XP New Perspectives on Browser and Basics Tutorial 1 1 Browser and Basics Tutorial 1.
File Recovery and Forensics
Copyright 2000 eMation SECURITY - Controlling Data Access with
IE 411/511: Visual Programming for Industrial Applications
E-Commerce: Introduction to Web Development 1 Dr. Lawrence West, Management Dept., University of Central Florida Topics What is a Web.
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved. 1 2 Welcome Application Introducing the Visual Basic 2008 Express Edition IDE.
HOW WEB SERVER WORKS? By- PUSHPENDU MONDAL RAJAT CHAUHAN RAHUL YADAV RANJIT MEENA RAHUL TYAGI.
Bonrix SMPP Client. Index Introduction Software and Hardware Requirements Architecture Set Up Installation HTTP API Features Screen-shots.
Instructor Notes GPU debugging is still immature, but being improved daily. You should definitely check to see the latest options available before giving.
Otasuke GP-EX! Chapter 11 GP-Viewer EX
Database-Driven Web Sites, Second Edition1 Chapter 5 WEB SERVERS.
Scalable Game Development William Roberts Senior Game Engineer
FTP Server and FTP Commands By Nanda Ganesan, Ph.D. © Nanda Ganesan, All Rights Reserved.
Plug-in Development Environment. Session Outline Tools Installation Configuration New Project Basic Debugging Remote Debugging.
CHAPTER TEN AUTHORING.
Introduction to the Visual Studio.NET IDE (LAB 1 )
Automated Scheduling and Operations for Legacy Applications.
Introduction to Taverna Online and Interaction service Aleksandra Pawlik University of Manchester.
RT-LAB Electrical Applications 1 Opal-RT Technologies Use of the “Store Embedded” mode Solution RT-LAB for PC-104.
Optimizing Windows Vista Performance Lesson 10. Skills Matrix Technology SkillObjective DomainObjective # Introducing ReadyBoostTroubleshoot performance.
Introducing Dreamweaver. Dreamweaver The web development application used to create web pages Part of the Adobe creative suite.
Linux Operations and Administration
FTP COMMANDS OBJECTIVES. General overview. Introduction to FTP server. Types of FTP users. FTP commands examples. FTP commands in action (example of use).
Don’t Duck Metadata March 2005 Introducing Setting Up a Clearinghouse Node Topic: Introduction to Setting Up a Clearinghouse Node Objective: By.
Chapter 27 Getting “Web-ified” (Web Applications) Clearly Visual Basic: Programming with Visual Basic nd Edition.
Debugging tools in Flash CIS 126. Debugging Flash provides several tools for testing ActionScript in your SWF files. –The Debugger, lets you find errors.
IE 411/511: Visual Programming for Industrial Applications Lecture Notes #2 Introduction to the Visual Basic Express 2010 Integrated Development Environment.
GPU Computing for GIS James Mower Department of Geography and Planning University at Albany.
Active-HDL Server Farm Course 11. All materials updated on: September 30, 2004 Outline 1.Introduction 2.Advantages 3.Requirements 4.Installation 5.Architecture.
CACI Proprietary Information | Date 1 PD² SR13 Client Upgrade Name: Semarria Rosemond Title: Systems Analyst, Lead Date: December 8, 2011.
Windows Server 2003 { First Steps and Administration} Benedikt Riedel MCSE + Messaging
C Copyright © 2009, Oracle. All rights reserved. Using SQL Developer.
SQL Database Management
Featured Enhancements to the IDE & Debugger
Chapter 2: System Structures
1. Open Visual Studio 2008.
Optimizations Module #4 of 6.
Debugging Tools Tim Purcell NVIDIA.
MS Confidential : SharePoint 2010 Developer Workshop (Beta1)
Presentation transcript:

GORDON SELLEY TONY HOSIER AMD GPU DEVELOPER TOOLS TEAM OPTIMIZING LINUX GAMES FOR AMD GRAPHICS USING GPU PERFSTUDIO2

GPU PerfStudio2 is AMD's performance and debugging tool for graphics applications Initially developed to support DirectX and OpenGL on Windows® only Has recently been ported to Linux® Very useful when developing games for Steam Linux® Especially useful when optimizing games for AMD GPUs We are here to demonstrate GPUPerfStudio2 for Linux® Background

Introduction to GPU PerfStudio2 —What it is, what it does, how it works, & who uses it —Usage configurations Using GPU PerfStudio2 for Linux —How to use it with an OpenGL Linux® app —Demonstration of the main tool features Data-mining your game using GPU PerfStudio2 —Demonstration with a Steam Linux® game What’s new? Summary Questions Presentation Overview

INTRODUCTION TO GPU PERFSTUDIO2 What it is, what it does, how it works, & who uses it

GPU PerfStudio2 is AMD's performance and debugging tool for graphics applications A suite of tools that can be used to debug and increase performance on AMD GPUs Integrated Frame Profiler, Frame Debugger, and API Trace with CPU timing information Supports OpenGL 4.2 applications on Windows® Supports DirectX® 11, DirectX® 10.1, DirectX® 10 Now supports Linux® What is GPU PerfStudio2?

A lightweight, no installer, no change to your game, drag and drop, suite of GPU tools Run from a USB drive No need for Visual Studio integration Runs with game executables No special driver or compilation required What is GPU PerfStudio2?

Frame Debugger Capture, play back and view the contents of a frame Scrub through draw calls Visualize the GPU time for each draw call View all game resources and state bound at each draw call Inspect the resources at each stage of the pipeline View, edit and debug shader code

Frame Profiler Identify costly draw calls Detect GPU pipeline stage bottlenecks Investigate performance issues at the counter level

Shader Debugger Edit the live HLSL or GLSL code inside your app while running in the tool Debug the live HLSL or Assembly code inside your app while running in the tool Step through shader code Inspect all register values Insert and run-to break points Compare before and after edit performance using the Profiler

API Trace Inspect all API calls (with arguments) CPU timeline information for each API call Visualize multi-threaded API usage Supports DirectX®11 Command Lists and deferred contexts

Widely used by internal groups in AMD —AMD Developer Technology Engineers: Optimize & debug game titles in conjunction with developers —AMD Driver Performance Team: Improve GPU benchmarks and titles at the driver level —AMD Driver Team: Inspect apps that cause driver problems —AMD Game Compute Team: Debug and optimize game technologies for new GPU hardware - AMD Mecha Demo, Ladybug, Leo demo External users —Graphics developers: Used in the development of DirectX®11 and OpenGL graphics applications Who uses GPU PerfStudio2?

Remote and local debug sessions Local usage client and server run on a single machine (Windows® only – DirectX® or OpenGL) Remote usage client and server run on separate computers. Allows the game to be run full screen. Higher profiling accuracy, useful during final optimization (Server - Windows® or Linux®) LOCAL DEBUGGING SERVER & CLIENT ON SAME COMPUTER ServerClient Network Server Client

Local and remote debug sessions Two clients can connect to a local and remote server simultaneously First client – connect to remote game running on Linux® Second client – connect to local game running on Windows® Compare DirectX® 11 on Windows® to OpenGL Linux® Compare OpenGL on Windows® to OpenGL on Linux® This is the scenario we will be demonstrating today LOCAL DEBUGGING SERVER & CLIENT ON SAME COMPUTER Client Server

Dual remote debug sessions Two clients can connect to remote servers simultaneously First client connects to remote game running on Linux® Second client connects to remote game running on Windows® Compare DirectX®11 on Windows® to OpenGL on Linux® Compare OpenGL on Windows® to OpenGL on Linux® LOCAL DEBUGGING SERVER & CLIENT ON SAME COMPUTER Client Server

How GPS2 works Game Host Computer GPUPerfServer.exe Process (Simple Web Server) Game Process Micro.dll GLserver.dll AMD Catalyst Display Driver AMD GPU Shared Memory GPUPerfClient.exe application HTTP requests Graphics API

USING GPU PERFSTUDIO2FOR LINUX

GPU PerfStudio2 (GPS2) supported OpenGL early in its development OpenGL support grew during the development of Brink and Rage —Used in house at AMD to debug driver issues and for GPU profiling GPS2 was used by Valve in the porting of Source Engine to OpenGL ―First tool that would work with a “large” OpenGL application AMD’s gDEBugger was also used by Valve —Helps in debugging context creation code by checking for common OpenGL context creation errors —gDEBugger features now supported by AMD’s CodeXL GPU PerfStudio2’s OpenGL Background

GPS2 was used by Valve in the porting of Source Engine to Linux® How? GPS2 only ran on Windows® at the time? —Valve found that most AMD driver issues on Linux® also existed in the Windows® driver so could be debugged/reported on Windows® —The tools ecosystem on Windows® was already well developed so most of the work could be done on Windows® —No real need to move existing tools to Linux® (at that time) GPU PerfStudio2’s OpenGL Background

Drawback of GPS2 only running on Windows® —Not possible to profile the GPU directly on Linux® using GPS2 What about GPUPerfAPI? —AMD’s library for accessing GPU performance counters on AMD GPUs —Available for Linux® and Windows® —Developers can integrate GPU profiling into their own tools using GPUPerfAPI —AMD’s GPS2 and CodeXL use GPUPerfAPI under the hood With the release of Steam for Linux® GPU tools are even more important to the game developer community at large AMD started porting GPU PerfStudio2 to Linux® in mid-2013 — Targeted Steam for Linux® games — Standalone OpenGL applications GPU PerfStudio2’s Linux Background

Works with most current Steam for Linux games Left4Dead2 Portal DOTA 2 Half-Life 2 Counter Strike TeamFortress2 Targeting Ubuntu12.04 Currently in beta testing Availability end of Q GPU PerfStudio2 for Linux

GPU PerfStudio2 running with the GpuTest Furmark OpenGL benchmarking application Download: Stop talking! Show me

Extract the GPUPerfStudio2 tarball in: ~/Development/GPUPerfStudio Install GpuTest Furmark in: ~/Development/testApps/GpuTest Create a shell script in the following dir: ~Development/scripts/furmark.sh Contents of the above furmark.sh script: cd ~/Development/testApps/GpuTest ~/Development/GPUPerfstudio/x64/GPUPerfServer –S start_furmark_windowed_1024x640.sh GPU PerfStudio2 Linux setup cd to the app directory Full path to GPU PerfStudio2 -S option specifies the shell script that runs the demo The Furmark startup shell script (provided by Furmark)

To run Furmark with GPU PerfStudio cd ~/Development/scripts./furmark.sh Start GPUPerfClient on Windows® GPU PerfStudio2 Linux startup Click on Windows\Settings to bring up the settings dialog Click Connect Button GPS2 can override the CPU time functions to “Freeze” the progress of your game. For current Valve games set the Time Spoofing method to “None”. Then close dialog GPS2 can override the CPU time functions to “Freeze” the progress of your game. For current Valve games set the Time Spoofing method to “None”. Then close dialog

GPU PerfStudio2 Client Connection Enter Linux box IP address (to get this type ifconfig on Linux console) Enter Linux box IP address (to get this type ifconfig on Linux console) Specify port 8080 Click Connect

GPU PerfStudio2 Client Connection Select the OpenGL process Click OK Select the OpenGL process Click OK

GPU PerfStudio2 Client Connection Click the Pause Button to capture a frame

GPU PerfStudio2 Client Connection Application is paused and main tool buttons are available

GPU PerfStudio2 running with GpuTest Furmark on Linux® and Windows® Overview of the Frame Debugger, Profiler and API Trace Using the Profiler and shader editor to optimize your shaders Running Windows® and Linux® sessions simultaneously (compare OpenGL on Windows® to OpenGL on Linux®) Seriously, Stop talking! Show me

DATA-MINING YOUR GAME USING GPU PERFSTUDIO2

As we mentioned earlier GPU PerfStudio2 has web-like behavior GPU PerfStudio2 modifies your game into a server that responds to specific commands for graphics API data The GPUPerfClient (a.NET app) makes requests to port 80 on Windows®, and port 8080 for Linux® servers You can see the requests for data in the console output of the server A history of the requests can be accessed in the GPUPerfClient Data-mining your game using GPU PerfStudio2

Access the server log from the Help menu Data-mining your game using GPU PerfStudio2

Debug messages are included Here is a request for the shader code at the current draw call Data-mining your game using GPU PerfStudio2

Requests to the server are in the form: It is possible to use PerfStudio2 web requests in scripts to automate and customize access to your app data As part of the work carried out on Far Cry3 we needed to know where specific sections of HLSL code were being used in a frame We were able to use a script to retrieve the HLSL code from each draw call in a frame an search the code for keywords that would identify the code. Data-mining your game using GPU PerfStudio2

FarCry3 running with GPU PerfStudio2 Attach the GPU PerfClient, pause the app, move to draw call We can see the data command requests in the server console window Use the command URL in a web browser to request data from the server We can access state data We can access the shader code. In fact we can access all data necessary to reconstruct the draw call. Data-mining your game using GPU PerfStudio2

Script that searches the first 50 draw calls for fragment shaders that contain the string “Steam”. Data-mining your game using GPU PerfStudio2

NOTE for Linux® users Port 80 is not available in user mode for web access GPU PerfStudio2 for Linux has a script to redirect web access to port 8080 You can find the script in the GPUPerfStudio directory redirport80.sh Data-mining your game using GPU PerfStudio2

Steam games for Linux are downloaded to: ~/.steam/steam/SteamApps/common/ DOTA2 is downloaded to: ~/.steam/steam/SteamApps/common/Dota 2 beta In this directory is a shell script named “dota.sh”, edit it as follows: 1.Change the export LD_LIBRARY_PATH to point to the GPS2 server folder: Export LD_LIBRARY_PATH="${GAMEROOT}"/bin:~/Development/GPUPerfStudio/x86:$LD_LIBRARY_PATH 2.Set the GAME_DEBUGGER option as follows: GAME_DEBUGGER=~/Development/GPUPerfStudio/x86/GPUPerfServer Starting Steam for Linux games with GPS2

To run the game Make sure the steam executable isn't running. If it is, it will show up in the app bar on the left of the screen. This will ensure that GPU PerfStudio2 will use the console window for output Each Steam game has its own ID - DOTA2 is 570 go to root steam directory: $ cd ~/.steam/steam From there, type: $ steam steam://rungameid/570 Starting Steam for Linux games with GPS2

Demonstration of more profiler features Demonstration of Scripting DOTA2 (Linux) Data-mining your game using GPU PerfStudio2

APITrace - Trace OpenGL, OpenGL ES, Direct3D, and DirectDraw APIs calls to a file Replay OpenGL and OpenGL ES calls from a file Inspect OpenGL state at any call while retracing Visualize and edit trace files Use APITrace to capture OpenGL traces on Linux® or Windows® and playback on either GPU PerfStudio2 supports the playback of traces allowing you to debug and optimize using a small subset of game frames Ideal for capturing rendering issues and sharing them between developers for solutions GPU PerfStudio2 and APITrace

GPU PerfStudio2 Latest Version What’s new in GPS2.14? Hardware counter support for AMD “Hawaii” (R9 290 series) GPU’s Improved support for multithreaded applications Pipeline specific counters for OpenGL Support for OpenGL Compute Currently in development Support for Linux®/OpenGL applications Support for Mantle on Windows7®

GPU PerfStudio2 is AMD's performance and debugging tool for graphics applications A suite of tools that can be used to debug and increase performance on AMD GPUs Works on Windows® and Linux® Ideal for debugging and optimizing OpenGL games on Windows® and Linux Supports Steam for Linux games Available end of Q Summary

Rich Geldreich, Jason Mitchell and all at Valve who have used and supported GPUPerfStudio2 Dan Ginsburg, Peter Lohrmann, and Graham Sellers for OpenGL support Valve for inviting us to attend and present at Steam Dev Days 2014 All who attended this presentation Thank You

All AMD Graphics Tools / GPU PerfStudio2 GPUPerfAPI – Performance Counter Library CodeXL – GPU debugging for OpenCL™ & OpenGL API calls and OpenCL™ kernel gDEBugger – OpenCL/OpenGL debugger (end-of-line) tools/amd-gdebugger/ AMD Graphics Tools Download Information

Gordon Selley Tony Hosier Download AMD Graphics Tools / Questions?

GORDON SELLEY TONY HOSIER AMD GPU DEVELOPER TOOLS TEAM OPTIMIZING LINUX GAMES FOR AMD GRAPHICS USING GPU PERFSTUDIO2