SlideShare a Scribd company logo
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
GPGPU in Commercial Software: Lessons From Three Cycles of the Adobe Creative
Suite
Kevin Goldsmith | Senior Engineering Manager
1
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Why this talk?
Taking advantage of the GPU for things other than rendering to the screen feels like jumping into the
future of technology, like you should be wearing a lab coat to work. It totally is, but if you want to do
it for real software that people pay for, there are some things to watch out for.
2
Image from nasaimages.org
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Overview
 Introduction
 Using GPUs for Commercial Software
 GPU Development Gotchas
 Questions
3
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Introduction
4
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
My Team – Adobe Image Foundation
 In the Core Technologies Group at Adobe
 We produce libraries that make it easier for Adobe teams to use OpenGL, OpenCL, and CUDA
 We created the Pixel Bender language
 Framework for building accelerated GPU and multi-core image processing graphs
 Some of the products which use our technologies: Photoshop, After Effects, Premiere, Flash
Player, Flash Pro, Flash Builder, Encore, Audition, Soundbooth, Premiere Elements, Photoshop
Elements
 First release of our technology was in Adobe Creative Suite CS3
5
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
GPU features in Adobe Products
Pre CS3
•After Effects –
OpenGL
drawing/effect
•Premiere – DirectX
effects
•Acrobat 3D –
DirectX/OpenGL
CS3 (2007)
•AIF/Pixel Bender debuts in
AE CS3 - 18 GPU effects
•Acrobat GPU vector
drawing/compositing
CS4 (2008)
•Photoshop GPU-
accelerated canvas, 3D
features, Pixel Bender
plug-in
•AE 3rd party Pixel Bender
support, Cartoon filter
•Premiere – GPU
acceleration on mac
•Flash 10 GPU
acceleration for
drawing/video
•GPU-accelerated video
playback for other
video/audio apps
CS5 (2010)
•Premiere Mercury
Engine
•Photoshop Oil Paint
filter
6
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Using GPUs in Commercial Software
7
Seattle Municipal Archives
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Getting buy-in: Educating Management
 Performance
 Competition
 Demos
8
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Getting going: Educating Engineering and QE
 Training
 Constraining supported cards
 Selecting Appropriate APIs
 Tooling
 Performance
 Demos
(most of what the rest of the talk is about)
9
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Keeping it going: delivering and iterating
 Automation
 Fall-back plan
 Hot-patching
10
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
GPU development gotchas
11
Photo by Kevin Walsh
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
GPUs in the “real world”
 Intel has more than 50% of the GPU market (July 2010, Information Week)
 Real people don’t upgrade their hardware that often
 Windows XP still has more than 60% of the OS market share (August 2010, Netmarketshare
numbers)
 Only 61% of Steam users have DX10-level hardware (August 2010, Steam Hardware &
Software survey)
12
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
GPUs in the “real world”
 Intel has more than 50% of the GPU market (July 2010, Information Week)
 Real people don’t upgrade their hardware that often
 Windows XP still has more than 60% of the OS market share (August 2010, Netmarketshare
numbers)
 Only 61% of Steam users have DX10-level hardware (August 2010, Steam Hardware &
Software survey)
What to do?
13
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Know your market!
 Professional users
 If I make my living using your software, I’ll upgrade my equipment if it will make my life easier
(and I can afford it)
 Premiere CS5: 64bit only, CUDA acceleration, 3 (high-end) cards supported
 Pro-sumers
 Maybe more willing (and more able) to switch to new hardware or upgrade because their
machines aren’t their livelihood. Like the “cool” factor. Closer to gamers.
 Hobbyist/Occasional users
 Won’t upgrade for your software
 Angry if it doesn’t work with their machines
 Premiere Elements:If it doesn’t run near real-time on a Core 2 Duo with IIG the users will revolt
14
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Scale up
 Work on a wide range of hardware, but work better on better hardware
 This is what my team advocates within Adobe
 Pros
 Users with high-end machines are happy
 Users with low-end machines are (mostly) happy
 You can sell to more users
 Cons
 Need to implement the same feature in multiple ways
 Much larger test matrix
 May need to support multiple APIs
 Significantly more development effort
It is a classic ROI decision.
15
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Be clear what hardware you work on
 Set clear minimum system configurations
 List specific cards or card families if possible
 Users want to know if their hardware will work with your software or which cards to buy
 Test for capabilities, not chipsets or drivers
 Fail gracefully
 Blacklist bad cards/drivers, don’t whitelist good ones.
 Consider allowing users to run a test program on their computer from your site to guarantee
compliance
16
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Amdahl’s Law
The system is only as fast as it’s slowest component
 Make sure that you are using the GPU for the right things
 Rather than try to integrate GPU processing into a hostile architecture, look for new features than
can be developed using the GPU
 Measure performance constantly
 Beware “premature optimizations”
 Every trip over the bus is a bottleneck
 Can you replace CPU code with CUDA/OpenCL code to keep data on the card?
 Is slow GPU code in the middle of fast GPU code faster than moving data back to the CPU and
then again to the card?
17
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Feel your user’s pain everyday
 Make sure that someone is someone is using the low-end of your supported hardware as their
primary development / QE machine
 If someone on the team isn’t having to live with that daily, how do you expect your users?
 Try to cycle cards through the development / QE team
 So different members of the team notice the performance characteristics of each supported card
18
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Life with drivers
 Drivers change often
 Your code that worked perfectly can be busted by the time the user installs it
 You can’t expect a user will have the latest drivers installed
 Be prepared to work around driver issues
 When you do, document them really well in the code
 Be able to hot patch existing installs if necessary
 Work with the IHVs/OS Vendors to report bugs
 Make sure you can send them code that reproduces the problem
 Someone on your team should always running the latest driver
 Blacklist known bad driver versions
 Test new features against old drivers periodically to make sure you aren’t turning up new driver
bugs
19
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Choosing Your APIs
 Does your chosen API limit your supported hardware?
 Not necessarily a bad thing
 Know when to use Proprietary vs Open APIs
 Cross-platform development
 Development/Support costs
 Can always use both…
 Does an API limit mathematical precision for critical calculations?
20
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Automated testing
 Automation is key
 Test matrix is 3 dimensional
 Operating System/Version
 Graphics Card
 Driver version
 Performance Tests need to be part of test runs
 Getting tossed to the “slow path”
 Need to know about it immediately
 Regression tests should include some low level HW verifications (really useful for finding driver
issues)
 Good automated tests let you send them to the IHVs to be part of their driver validation suites
21
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Strategies: Precision
 IEEE compliance is nice, but it is expensive
 Know when it is important and when it is ok to approximate
 No matter what level of compliance there is, results will vary from CPU to GPU and from GPU to
GPU
 Understand how API choice and how runtime parameters affect precision
 Optionally, allow the user to specify their precision requirements
22
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Questions?
23
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Image attribution
All images used in this presentation were used in accordance with the image creators’ specified
licensing. Their inclusion implies no endorsement of me, Adobe or this presentation. The URLs for
the images are listed below.
 http://www.nasaimages.org/
 http://www.flickr.com/photos/seattlemunicipalarchives/3365336567/
 http://www.flickr.com/photos/86624586@N00/10176897/
 http://www.flickr.com/photos/walkn/3526522573/
25

More Related Content

PDF
ADOBE CREATIVE SUITE 5 Web Premiumご紹介
PDF
David Coletta Architecting A Shared Codebase For Browser And Desktop Final
PDF
Over the air 2.5 - Adobe AIR for Android
PDF
Flex mobile for JUG
PDF
Adobe flex at jax london 2011
PDF
Jax2001 adobe keynote
PDF
Vsx5 getting started_guide_en
PDF
Montpellier - Flex UG
ADOBE CREATIVE SUITE 5 Web Premiumご紹介
David Coletta Architecting A Shared Codebase For Browser And Desktop Final
Over the air 2.5 - Adobe AIR for Android
Flex mobile for JUG
Adobe flex at jax london 2011
Jax2001 adobe keynote
Vsx5 getting started_guide_en
Montpellier - Flex UG

What's hot (20)

PDF
Best practices for Flash applications on mobile devices
PDF
AD201 - IBM Domino Application Development Today And Tomorrow
PDF
X pages jumpstart jmp101
PDF
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
PDF
AD106 - IBM Lotus Domino XPages anywhere - Write them once, See them Everywhere
KEY
Embedding Web UIs in your Eclipse application
PDF
Web Test Automation Framework - IndicThreads Conference
PDF
Java tutorial
PDF
Flash Iphone Fitc 2010
PDF
worklight_development_environment
PDF
Cordova + Ionic + MobileFirst
PDF
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
PDF
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...
PDF
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
PDF
Modular Java EE in the Cloud
PDF
Java server face tutorial
PDF
Adding Modularity Afterward with Embedded OSGi
PPTX
Application Quality with Visual Studio 2010
PPTX
The Strategic Role of the Enterprise Application Framework
PDF
Innovation and the Adobe Flash Platform
Best practices for Flash applications on mobile devices
AD201 - IBM Domino Application Development Today And Tomorrow
X pages jumpstart jmp101
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
AD106 - IBM Lotus Domino XPages anywhere - Write them once, See them Everywhere
Embedding Web UIs in your Eclipse application
Web Test Automation Framework - IndicThreads Conference
Java tutorial
Flash Iphone Fitc 2010
worklight_development_environment
Cordova + Ionic + MobileFirst
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
Modular Java EE in the Cloud
Java server face tutorial
Adding Modularity Afterward with Embedded OSGi
Application Quality with Visual Studio 2010
The Strategic Role of the Enterprise Application Framework
Innovation and the Adobe Flash Platform
Ad

Viewers also liked (20)

PDF
Fail Safe, Fail Smart, Succeed
PDF
The Spotify Tribe
PDF
Apportioning Monoliths
PDF
Creating a Culture of Continuous Improvement at Avvo
PDF
Microservices at Spotify
PDF
How Spotify Builds Products (Organization. Architecture, Autonomy, Accountabi...
PDF
Innovation, Autonomy and Accountability
PDF
Organization and Architecture
PDF
Building A Strong Engineering Culture - my talk from BBC Develop 2013
PDF
Agile Business Transformation
PDF
Failing Up - Creating a Failsafe Environment
PDF
Building Lean and Agile in the Real World
PDF
Let's Build a Product Development Organization!
PDF
Empowering Engineering Talent - an update from Spotify
PDF
Managing a software engineering team
PPTX
Scaling Agile at Spotify (representation)
PDF
Agile at Spotify
PDF
How Git and Gerrit make you more productive
PPTX
Gerrit Code Review
PPTX
Culture
Fail Safe, Fail Smart, Succeed
The Spotify Tribe
Apportioning Monoliths
Creating a Culture of Continuous Improvement at Avvo
Microservices at Spotify
How Spotify Builds Products (Organization. Architecture, Autonomy, Accountabi...
Innovation, Autonomy and Accountability
Organization and Architecture
Building A Strong Engineering Culture - my talk from BBC Develop 2013
Agile Business Transformation
Failing Up - Creating a Failsafe Environment
Building Lean and Agile in the Real World
Let's Build a Product Development Organization!
Empowering Engineering Talent - an update from Spotify
Managing a software engineering team
Scaling Agile at Spotify (representation)
Agile at Spotify
How Git and Gerrit make you more productive
Gerrit Code Review
Culture
Ad

Similar to GPGPU in Commercial Software: Lessons From Three Cycles of the Adobe Creative Suite (20)

PDF
Graphics programming tomorrow - are humans still needed? Will AI take graphic...
PDF
Kompüter Qrafikasına giriş
PDF
AI Product Thinking for Product Managers
PDF
Cook_NVIDIA_Marketing Plan.pdf
PDF
Azinta Gpu Cloud Services London Financial Python Ug 1.2
PDF
“A Re-imagination of Embedded Vision System Design,” a Presentation from Imag...
PDF
solulab.com-Integrating AI into Product Development A Beginners Guide.pdf
PDF
rePortfore relevant results relevant resultsrelevant resultsrelevant results
PPT
Pixel-Lab / Games:EDU / Michel Kripalani / Games Industry Overview and Trends
PDF
Quadra Solutions - corporate brochure
PDF
Building AI Product using AI Product Thinking
PDF
Preparing your team for a new XR platform; 7 key take-aways
PPTX
Tom van Ees - Academic and Commercial software Development
PDF
Investor Day 2013 Jen-Hsun Huang Presentation
PDF
Droidcon2013 triangles gangolells_imagination
PDF
thu-blake-gdc-2014-final
PDF
A 'realistic' understanding of PDF production workflows
PDF
Computer-Vision_Integrating-Technology_MOB_17.06.16
PPTX
Amd future of gp us - campus party
PPTX
Architecting the Right System for Your AI Application—without the Vendor Fluff
Graphics programming tomorrow - are humans still needed? Will AI take graphic...
Kompüter Qrafikasına giriş
AI Product Thinking for Product Managers
Cook_NVIDIA_Marketing Plan.pdf
Azinta Gpu Cloud Services London Financial Python Ug 1.2
“A Re-imagination of Embedded Vision System Design,” a Presentation from Imag...
solulab.com-Integrating AI into Product Development A Beginners Guide.pdf
rePortfore relevant results relevant resultsrelevant resultsrelevant results
Pixel-Lab / Games:EDU / Michel Kripalani / Games Industry Overview and Trends
Quadra Solutions - corporate brochure
Building AI Product using AI Product Thinking
Preparing your team for a new XR platform; 7 key take-aways
Tom van Ees - Academic and Commercial software Development
Investor Day 2013 Jen-Hsun Huang Presentation
Droidcon2013 triangles gangolells_imagination
thu-blake-gdc-2014-final
A 'realistic' understanding of PDF production workflows
Computer-Vision_Integrating-Technology_MOB_17.06.16
Amd future of gp us - campus party
Architecting the Right System for Your AI Application—without the Vendor Fluff

More from Kevin Goldsmith (20)

PDF
The Director to CTO Path: How to follow it, or how to mentor it
PDF
It's teams all the way down - Design patterns for technology organizations
PDF
What Vulnerabilities? How and why to secure your ML/AI Solutions
PDF
Raising the subject of raises
PDF
Managing partly distributed teams
PDF
Steal from the best
PDF
What is Agile?
PDF
The (near) future of personal computers
PDF
Pixel Bender - 2011 AMD Fusion Conference
PDF
It Is All About the Benjamins: the Real World Economics of HPC
PDF
Parallelism, the Cloud, and the Tools of the Future for the next generation o...
PDF
Innovation and organization
PDF
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...
PDF
My CMU alumni journey
PDF
Building Lean
PDF
A Software Career (2017)
PDF
When why and how to stop coding as your day job
PDF
Presenting to executives
PDF
Crafting a Mission and Vision For Your Team
PDF
You Are Doing Autonomy Wrong
The Director to CTO Path: How to follow it, or how to mentor it
It's teams all the way down - Design patterns for technology organizations
What Vulnerabilities? How and why to secure your ML/AI Solutions
Raising the subject of raises
Managing partly distributed teams
Steal from the best
What is Agile?
The (near) future of personal computers
Pixel Bender - 2011 AMD Fusion Conference
It Is All About the Benjamins: the Real World Economics of HPC
Parallelism, the Cloud, and the Tools of the Future for the next generation o...
Innovation and organization
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...
My CMU alumni journey
Building Lean
A Software Career (2017)
When why and how to stop coding as your day job
Presenting to executives
Crafting a Mission and Vision For Your Team
You Are Doing Autonomy Wrong

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Modernizing your data center with Dell and AMD
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Electronic commerce courselecture one. Pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Network Security Unit 5.pdf for BCA BBA.
Diabetes mellitus diagnosis method based random forest with bat algorithm
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
The AUB Centre for AI in Media Proposal.docx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Empathic Computing: Creating Shared Understanding
Modernizing your data center with Dell and AMD
Spectral efficient network and resource selection model in 5G networks
Reach Out and Touch Someone: Haptics and Empathic Computing
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Electronic commerce courselecture one. Pdf
A Presentation on Artificial Intelligence
Building Integrated photovoltaic BIPV_UPV.pdf
Unlocking AI with Model Context Protocol (MCP)
Encapsulation_ Review paper, used for researhc scholars
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx

GPGPU in Commercial Software: Lessons From Three Cycles of the Adobe Creative Suite

  • 1. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. GPGPU in Commercial Software: Lessons From Three Cycles of the Adobe Creative Suite Kevin Goldsmith | Senior Engineering Manager 1
  • 2. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Why this talk? Taking advantage of the GPU for things other than rendering to the screen feels like jumping into the future of technology, like you should be wearing a lab coat to work. It totally is, but if you want to do it for real software that people pay for, there are some things to watch out for. 2 Image from nasaimages.org
  • 3. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Overview  Introduction  Using GPUs for Commercial Software  GPU Development Gotchas  Questions 3
  • 4. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Introduction 4
  • 5. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. My Team – Adobe Image Foundation  In the Core Technologies Group at Adobe  We produce libraries that make it easier for Adobe teams to use OpenGL, OpenCL, and CUDA  We created the Pixel Bender language  Framework for building accelerated GPU and multi-core image processing graphs  Some of the products which use our technologies: Photoshop, After Effects, Premiere, Flash Player, Flash Pro, Flash Builder, Encore, Audition, Soundbooth, Premiere Elements, Photoshop Elements  First release of our technology was in Adobe Creative Suite CS3 5
  • 6. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. GPU features in Adobe Products Pre CS3 •After Effects – OpenGL drawing/effect •Premiere – DirectX effects •Acrobat 3D – DirectX/OpenGL CS3 (2007) •AIF/Pixel Bender debuts in AE CS3 - 18 GPU effects •Acrobat GPU vector drawing/compositing CS4 (2008) •Photoshop GPU- accelerated canvas, 3D features, Pixel Bender plug-in •AE 3rd party Pixel Bender support, Cartoon filter •Premiere – GPU acceleration on mac •Flash 10 GPU acceleration for drawing/video •GPU-accelerated video playback for other video/audio apps CS5 (2010) •Premiere Mercury Engine •Photoshop Oil Paint filter 6
  • 7. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Using GPUs in Commercial Software 7 Seattle Municipal Archives
  • 8. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Getting buy-in: Educating Management  Performance  Competition  Demos 8
  • 9. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Getting going: Educating Engineering and QE  Training  Constraining supported cards  Selecting Appropriate APIs  Tooling  Performance  Demos (most of what the rest of the talk is about) 9
  • 10. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Keeping it going: delivering and iterating  Automation  Fall-back plan  Hot-patching 10
  • 11. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. GPU development gotchas 11 Photo by Kevin Walsh
  • 12. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. GPUs in the “real world”  Intel has more than 50% of the GPU market (July 2010, Information Week)  Real people don’t upgrade their hardware that often  Windows XP still has more than 60% of the OS market share (August 2010, Netmarketshare numbers)  Only 61% of Steam users have DX10-level hardware (August 2010, Steam Hardware & Software survey) 12
  • 13. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. GPUs in the “real world”  Intel has more than 50% of the GPU market (July 2010, Information Week)  Real people don’t upgrade their hardware that often  Windows XP still has more than 60% of the OS market share (August 2010, Netmarketshare numbers)  Only 61% of Steam users have DX10-level hardware (August 2010, Steam Hardware & Software survey) What to do? 13
  • 14. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Know your market!  Professional users  If I make my living using your software, I’ll upgrade my equipment if it will make my life easier (and I can afford it)  Premiere CS5: 64bit only, CUDA acceleration, 3 (high-end) cards supported  Pro-sumers  Maybe more willing (and more able) to switch to new hardware or upgrade because their machines aren’t their livelihood. Like the “cool” factor. Closer to gamers.  Hobbyist/Occasional users  Won’t upgrade for your software  Angry if it doesn’t work with their machines  Premiere Elements:If it doesn’t run near real-time on a Core 2 Duo with IIG the users will revolt 14
  • 15. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Scale up  Work on a wide range of hardware, but work better on better hardware  This is what my team advocates within Adobe  Pros  Users with high-end machines are happy  Users with low-end machines are (mostly) happy  You can sell to more users  Cons  Need to implement the same feature in multiple ways  Much larger test matrix  May need to support multiple APIs  Significantly more development effort It is a classic ROI decision. 15
  • 16. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Be clear what hardware you work on  Set clear minimum system configurations  List specific cards or card families if possible  Users want to know if their hardware will work with your software or which cards to buy  Test for capabilities, not chipsets or drivers  Fail gracefully  Blacklist bad cards/drivers, don’t whitelist good ones.  Consider allowing users to run a test program on their computer from your site to guarantee compliance 16
  • 17. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Amdahl’s Law The system is only as fast as it’s slowest component  Make sure that you are using the GPU for the right things  Rather than try to integrate GPU processing into a hostile architecture, look for new features than can be developed using the GPU  Measure performance constantly  Beware “premature optimizations”  Every trip over the bus is a bottleneck  Can you replace CPU code with CUDA/OpenCL code to keep data on the card?  Is slow GPU code in the middle of fast GPU code faster than moving data back to the CPU and then again to the card? 17
  • 18. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Feel your user’s pain everyday  Make sure that someone is someone is using the low-end of your supported hardware as their primary development / QE machine  If someone on the team isn’t having to live with that daily, how do you expect your users?  Try to cycle cards through the development / QE team  So different members of the team notice the performance characteristics of each supported card 18
  • 19. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Life with drivers  Drivers change often  Your code that worked perfectly can be busted by the time the user installs it  You can’t expect a user will have the latest drivers installed  Be prepared to work around driver issues  When you do, document them really well in the code  Be able to hot patch existing installs if necessary  Work with the IHVs/OS Vendors to report bugs  Make sure you can send them code that reproduces the problem  Someone on your team should always running the latest driver  Blacklist known bad driver versions  Test new features against old drivers periodically to make sure you aren’t turning up new driver bugs 19
  • 20. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Choosing Your APIs  Does your chosen API limit your supported hardware?  Not necessarily a bad thing  Know when to use Proprietary vs Open APIs  Cross-platform development  Development/Support costs  Can always use both…  Does an API limit mathematical precision for critical calculations? 20
  • 21. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Automated testing  Automation is key  Test matrix is 3 dimensional  Operating System/Version  Graphics Card  Driver version  Performance Tests need to be part of test runs  Getting tossed to the “slow path”  Need to know about it immediately  Regression tests should include some low level HW verifications (really useful for finding driver issues)  Good automated tests let you send them to the IHVs to be part of their driver validation suites 21
  • 22. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Strategies: Precision  IEEE compliance is nice, but it is expensive  Know when it is important and when it is ok to approximate  No matter what level of compliance there is, results will vary from CPU to GPU and from GPU to GPU  Understand how API choice and how runtime parameters affect precision  Optionally, allow the user to specify their precision requirements 22
  • 23. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Questions? 23
  • 24. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
  • 25. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Image attribution All images used in this presentation were used in accordance with the image creators’ specified licensing. Their inclusion implies no endorsement of me, Adobe or this presentation. The URLs for the images are listed below.  http://www.nasaimages.org/  http://www.flickr.com/photos/seattlemunicipalarchives/3365336567/  http://www.flickr.com/photos/86624586@N00/10176897/  http://www.flickr.com/photos/walkn/3526522573/ 25

Editor's Notes

  • #3: http://www.nasaimages.org/luna/servlet/detail/nasaNAS~13~13~69471~174570:ANALOG-COMPUTER---ANALOG-RECORDING-?qvq=w4s:/when/1959/;q:computer;lc:NVA2~32~32,NVA2~31~31,NVA2~30~30,NVA2~62~62,NVA2~61~61,NVA2~60~60,nasaNAS~22~22,NVA2~19~19,nasaNAS~20~20,NVA2~18~18,NVA2~17~17,NVA2~49~49,NVA2~16~16,NVA2~8~8,NVA2~48~48,NVA2~15~15,NVA2~47~47,NVA2~9~9,NVA2~14~14,NVA2~46~46,NVA2~13~13,NVA2~45~45,NVA2~44~44,NVA2~43~43,NVA2~42~42,nasaNAS~2~2,NVA2~41~41,nasaNAS~4~4,NSVS~3~3,nasaNAS~5~5,NVA2~29~29,nasaNAS~6~6,NVA2~28~28,nasaNAS~7~7,NVA2~27~27,NVA2~59~59,NVA2~26~26,NVA2~58~58,nasaNAS~8~8,NVA2~25~25,NVA2~57~57,NVA2~24~24,nasaNAS~9~9,NVA2~56~56,NVA2~23~23,NVA2~55~55,NVA2~22~22,NVA2~54~54,NVA2~21~21,NVA2~53~53,nasaNAS~16~16,NVA2~20~20,NVA2~52~52,NVA2~51~51,nasaNAS~13~13,NVA2~50~50,nasaNAS~12~12,nasaNAS~10~10,NVA2~33~33,NVA2~34~34,NVA2~1~1,NVA2~35~35,NVA2~36~36,NVA2~37~37,NVA2~38~38,NVA2~39~39&mi=0&trs=6
  • #8: http://www.flickr.com/photos/seattlemunicipalarchives/3365336567/sizes/o/in/photostream/
  • #12: http://www.flickr.com/photos/86624586@N00/10176897/
  • #13: http://www.informationweek.com/news/hardware/processors/showArticle.jhtml?articleID=226400065
  • #18: http://en.wikipedia.org/wiki/Amdahl%27s_law
  • #24: http://www.flickr.com/photos/walkn/3526522573/