Developer Tools. Tim Purcell NVIDIA



Similar documents
Total Recall: A Debugging Framework for GPUs

CSE 564: Visualization. GPU Programming (First Steps) GPU Generations. Klaus Mueller. Computer Science Department Stony Brook University

ANDROID DEVELOPER TOOLS TRAINING GTC Sébastien Dominé, NVIDIA

GPU Profiling with AMD CodeXL

Performance Optimization and Debug Tools for mobile games with PlayCanvas

Introduction to GPGPU. Tiziano Diamanti

A Survey of General-Purpose Computation on Graphics Hardware

Getting Started with CodeXL

QCD as a Video Game?

Overview Motivation and applications Challenges. Dynamic Volume Computation and Visualization on the GPU. GPU feature requests Conclusions

GPGPU Computing. Yong Cao

Image Processing and Computer Graphics. Rendering Pipeline. Matthias Teschner. Computer Science Department University of Freiburg

AMD GPU Architecture. OpenCL Tutorial, PPAM Dominik Behr September 13th, 2009

GPUs Under the Hood. Prof. Aaron Lanterman School of Electrical and Computer Engineering Georgia Institute of Technology

The Evolution of Computer Graphics. SVP, Content & Technology, NVIDIA

Advanced Graphics and Animations for ios Apps

TEGRA X1 DEVELOPER TOOLS SEBASTIEN DOMINE, SR. DIRECTOR SW ENGINEERING

How To Teach Computer Graphics

L20: GPU Architecture and Models

Color correction in 3D environments Nicholas Blackhawk

A Crash Course on Programmable Graphics Hardware

GPU Architecture. Michael Doggett ATI

How To Develop For A Powergen 2.2 (Tegra) With Nsight) And Gbd (Gbd) On A Quadriplegic (Powergen) Powergen Powergen 3

GPU Shading and Rendering: Introduction & Graphics Hardware

Programmable Graphics Hardware

The Future Of Animation Is Games

Radeon HD 2900 and Geometry Generation. Michael Doggett

Silverlight for Windows Embedded Graphics and Rendering Pipeline 1

Computer Graphics Hardware An Overview

DATA VISUALIZATION OF THE GRAPHICS PIPELINE: TRACKING STATE WITH THE STATEVIEWER

Graphics Cards and Graphics Processing Units. Ben Johnstone Russ Martin November 15, 2011

Computer Graphics on Mobile Devices VL SS ECTS

Recent Advances and Future Trends in Graphics Hardware. Michael Doggett Architect November 23, 2005

Writing Applications for the GPU Using the RapidMind Development Platform

Data Parallel Computing on Graphics Hardware. Ian Buck Stanford University

AMD CodeXL 1.7 GA Release Notes

Lecture Notes, CEng 477

Computer Graphics. Computer graphics deals with all aspects of creating images with a computer

General Purpose Computation on Graphics Processors (GPGPU) Mike Houston, Stanford University

OpenGL Performance Tuning

Chapter 1. Introduction to ios Development. Objectives: Touch on the history of ios and the devices that support this operating system.

A little code goes a long way Cross-platform game development with Lua. Ivan Beliy, Software Engineer

Optimizing AAA Games for Mobile Platforms

Image Synthesis. Transparency. computer graphics & visualization

What is GPUOpen? Currently, we have divided console & PC development Black box libraries go against the philosophy of game development Game

3D Computer Games History and Technology

Web Based 3D Visualization for COMSOL Multiphysics

Low power GPUs a view from the industry. Edvard Sørgård

Press Briefing. GDC, March Neil Trevett Vice President Mobile Ecosystem, NVIDIA President Khronos. Copyright Khronos Group Page 1

OpenGL Insights. Edited by. Patrick Cozzi and Christophe Riccio

Technical Specifications: tog Live

Real-Time Realistic Rendering. Michael Doggett Docent Department of Computer Science Lund university

Introduction to Computer Graphics

NVIDIA CUDA GETTING STARTED GUIDE FOR MICROSOFT WINDOWS

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Data Visualization Using Hardware Accelerated Spline Interpolation

Radeon GPU Architecture and the Radeon 4800 series. Michael Doggett Graphics Architecture Group June 27, 2008

How To Write A Cg Toolkit Program

Introduction GPU Hardware GPU Computing Today GPU Computing Example Outlook Summary. GPU Computing. Numerical Simulation - from Models to Software

CS418 GLSL Shader Programming Tutorial (I) Shader Introduction. Presented by : Wei-Wen Feng 3/12/2008

GPU Tools Sandra Wienke

GPU Usage. Requirements

QuickSpecs. NVIDIA Quadro K1200 4GB Graphics INTRODUCTION PERFORMANCE AND FEATURES. Overview

Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v Steps to Developing a QNX Program Quickstart Guide

CMSC 427 Computer Graphics Programming Assignment 1: Introduction to OpenGL and C++ Due Date: 11:59 PM, Sept. 15, 2015

BRINGING UNREAL ENGINE 4 TO OPENGL Nick Penwarden Epic Games Mathias Schott, Evan Hart NVIDIA

NVIDIA workstation 3D graphics card upgrade options deliver productivity improvements and superior image quality

NVPRO-PIPELINE A RESEARCH RENDERING PIPELINE MARKUS TAVENRATH MATAVENRATH@NVIDIA.COM SENIOR DEVELOPER TECHNOLOGY ENGINEER, NVIDIA

GPGPU: General-Purpose Computation on GPUs

Shader Model 3.0. Ashu Rege. NVIDIA Developer Technology Group

Getting Started with Tizen SDK : How to develop a Web app. Hong Gyungpyo 洪 競 杓 Samsung Electronics Co., Ltd

GUI GRAPHICS AND USER INTERFACES. Welcome to GUI! Mechanics. Mihail Gaianu 26/02/2014 1

NVFX : A NEW SCENE AND MATERIAL EFFECT FRAMEWORK FOR OPENGL AND DIRECTX. TRISTAN LORACH Senior Devtech Engineer SIGGRAPH 2013

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT

x64 Servers: Do you want 64 or 32 bit apps with that server?

Game Development in Android Disgruntled Rats LLC. Sean Godinez Brian Morgan Michael Boldischar

CS 528 Mobile and Ubiquitous Computing Lecture 2: Android Introduction and Setup. Emmanuel Agu

Image Synthesis. Fur Rendering. computer graphics & visualization

The Most Popular UI/Apps Framework For IVI on Linux

Embedded Development Tools

System requirements for Autodesk Building Design Suite 2017

¹ Autodesk Showcase 2016 and Autodesk ReCap 2016 are not supported in 32-Bit.

Cross-Platform Game Development Best practices learned from Marmalade, Unreal, Unity, etc.

Introduction to GPU Programming Languages

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

Plug-in Software Developer Kit (SDK)

VA (Video Acceleration) API. Jonathan Bian 2009 Linux Plumbers Conference

Vulkan on NVIDIA GPUs. Piers Daniell, Driver Software Engineer, OpenGL and Vulkan

iz3d Stereo Driver Description (DirectX Realization)

IBM Rational Web Developer for WebSphere Software Version 6.0

Performance Testing in Virtualized Environments. Emily Apsey Product Engineer

Maximize Application Performance On the Go and In the Cloud with OpenCL* on Intel Architecture

Equalizer. Parallel OpenGL Application Framework. Stefan Eilemann, Eyescale Software GmbH

SAPPHIRE TOXIC R9 270X 2GB GDDR5 WITH BOOST

Visualizing Data: Scalable Interactivity

Lecture 3 Mobile App Development (Android, ios, BlackBerry, Windows Mobile) <lecturer, date>

Texture Cache Approximation on GPUs

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager

Transcription:

Developer Tools Tim Purcell NVIDIA

Programming Soap Box Successful programming systems require at least three tools High level language compiler Cg, HLSL, GLSL, RTSL, Brook Debugger Profiler

Debugging

Ideal Fragment Program Debugger Automate printf debugging

printf Debugging MOV suspect register to output Comment out anything else writing to output Scale and bias as needed Recompile Display/readback frame buffer Check values Repeat until error is (hopefully) found

printf Debugging Examples

printf Debugging Examples

printf Debugging Examples

printf Debugging Examples

Ideal Fragment Program Debugger Automate printf debugging Intuitive and easy to use interface Features over performance Debuggers don t need to be fast Should still be interactive Easy to add to existing apps And remove Touch as little GPU state as possible Report actual hardware values No software simulations!

Debugger Features Per-pixel register watch Including interpolants, outputs, etc. Breakpoints Fragment program interpreter Single step forwards or backwards Execute modified code on the fly And save it

Debugger Features - Visualization Display register value at each pixel Color channel masking Arbitrary code for visualization Allows scale and bias of values Multiple visualization windows Visualize each source register and result MUL R2, R1, R0; = x

Debugging Options Today Graphic Remedy gdebugger GLIntercept - [D. Trebilco] Microsoft Shader Debugger Tool Apple OpenGL Shader Builder Imdebug The Image Debugger [B. Baxter] Shadesmith [T. Purcell, P. Sen] Relational Debugging Engine [Duca et al. 2005]

GPU Vendor Debugging Options ATI RenderMonkey Nvidia FXComposer Won t talk about these today

Graphic Remedy gdebugger Pros Breakpoints, stepping Watch windows Performance analysis OpenGL 2.0 Cons OpenGL only Currently no program debugging http://www.gremedy.com/

gdebugger

GLIntercept Pros Track all OpenGL state Runtime shader edit and recompile Resource tracking and management Cons OpenGL only No shader debugging No direct support for visualizations http://glintercept.nutty.org/

GLIntercept

Microsoft Shader Debugger Tool Pros Direct3D debugging integrated into Visual Studio IDE Full featured Assembly and high level debugging Vertex and fragment programs Watches, breakpoints, etc. Cons Only works with software rasterizer Slow and painful D3D only Shader changes require recompilation http://msdn.microsoft.com/library/default.asp?url=/library/enus/directx9_c/directx/graphics/tools/shaderdebugger.asp

Apple OpenGL Shader Builder Pros Integrated development environment Handy reference guide, resource manager Texture editor On the fly edit and display of shader changes Cons Canned geometry Basically a shader tool (in the traditional sense) not GPGPU debugger ARB vertex/fragment programs only No vendor specific GL extensions support? http://developer.apple.com/graphicsimaging/opengl/shader_image.html

imdebug Printf-style debugger imdebug("rgb w=%d h=%d %p", 16, 17, testrgb); Readback memory (texture/frame buffer) and display in image window http://www.billbaxter.com/projects/imdebug/

imdebug

imdebug Pros Simple addition of single printf-style statement to programs Displays hardware computed values not software generated values Scale and bias Source available for download Cons Can t breakpoint shaders Can only watch what shader outputs

Shadesmith Debugger in the spirit of imdebug Simply add a debug statement when binding shaders Display window with scale, bias, component masking Advanced features Can watch any shader register contents without recompile Shader single stepping (forward and backward), breakpointing Shader source edit and reload without recompile http://graphics.stanford.edu/projects/shadesmith/

Shadesmith Implementation Insight Only one register modified per instruction Ignore CC for now Decompose fragment program into several smaller programs One program per assembly instruction Save register state on host Iterative deepening decomposition

Iterative Deepening... ADD R0, R1, f[wpos]; MAD R1, R0, R2, R3; TEX R2, R1, TEX0, RECT;...

Iterative Deepening... ADD R0, R1, f[wpos]; MAD R1, R0, R2, R3; TEX R2, R1, TEX0, RECT;...... ADD R0, R1, f[wpos]; MAD R1, R0, R2, R3; MOV o[colr], R1; END

Iterative Deepening... ADD R0, R1, f[wpos]; MAD R1, R0, R2, R3; TEX R2, R1, TEX0, RECT;...... ADD R0, R1, f[wpos]; MAD R1, R0, R2, R3; TEX R2, R1, TEX0, RECT; MOV o[colr], R2; END Later code more expensive than early code

Basic Shadesmith Flow Decompose program into smaller programs Use iterative deepening approach Run programs required to determine watch values One program per value watched Readback modified register to host Via glreadpixels() Display register values per pixel Visualization windows Per-pixel values on mouseover

Relational Debugging Engine Build database of GPU state Including pipeline state, shader state SQL-like queries generate visualizations Including vertex programs Raw text output available as well Built on top of Chromium Can debug any OpenGL application without recompilation Current system assumes Cg shaders Approach is applicable to other GPU languages

Relational Debugging Engine

Profiling

Profiling Not much from 3 rd parties GPU Architecture internals mostly secret ATIPixPlugin NVPerfHUD NVPerfKit Supported by gdebugger 2.0 release

ATIPixPlugin

NVPerfHUD

NVPerfKit Instrumented Driver OpenGL and Direct3D support NVIDIA Developer Control Panel NVIDIA Plug-in for Microsoft PIX for Windows Access to performance counters via PDH Support for PerfMon, VTune, gdebugger, and more

NVPerfKit