opencl @ adobe - khronos group...basic 3d black & white brightness & contrast color balance...

27
Page 1 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012 OpenCL @ Adobe Eric Berdahl Adobe Imaging Foundation Engineering Manager Adobe Systems Inc.

Upload: others

Post on 28-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 1 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

OpenCL @ Adobe

Eric Berdahl Adobe Imaging Foundation Engineering Manager

Adobe Systems Inc.

Page 2: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 2 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Point product support for

OpenGL

Pre-2005

AIF Project Formed

2005

History of Heterogeneous Computing at Adobe

2007 2008 2010 2012

Page 3: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 3 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Adobe Imaging Foundation

• Image processing system

Apply filters to images

Do for pixels what OpenGL does for

triangles

• Support for heterogeneous hardware

GPU, (multi-core) CPU

• Framework

• Programmable language (Pixel Bender)

for kernels

Application System

Main Program

AIF Kernel Execution

Framework

Kernels Kernels

Page 4: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 4 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Point product support for

OpenGL

Pre-2005

AIF Project Formed

2005

History of Heterogeneous Computing at Adobe

2007 2008 2010 2012

CS3 ships with GPU-accelerated

features

CS4 ships with GPU-accelerated

features

CS5 ships with GPU-accelerated

features

CS6 ships with GPU-accelerated

features

Page 5: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 5 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Point product support for

OpenGL

Pre-2005

AIF Project Formed

2005

History of Heterogeneous Computing at Adobe

2007 2008 2010 2012

CS3 ships with GPU-accelerated

features

CS4 ships with GPU-accelerated

features

CS5 ships with GPU-accelerated

features

CS6 ships with OpenCL-accelerated

features

Page 6: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 7 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Adobe ♥ OpenCL

• Compute API supported across vendors

• Programming model familiar to C programmers

• Demonstrated performance

• Same compute kernels on CPU and GPU!

• Adobe is now active member of OpenCL working group

- Contributing Adobe’s experience and minds to continue OpenCL evolution

Page 7: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 8 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

OpenCL in Photoshop CS6

Sarah Kong Photoshop Engineering Manager

Adobe Systems Inc.

Page 8: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 9 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Blur Gallery Demo

Page 9: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 10 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Why OpenCL

• Only cross-platform GPGPU solution

• Advantages over OpenGL

- Learning curves; data formats; debugging

• Increasing maturity and ubiquity

Page 10: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 11 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

How did we do it?

• OpenCL kernel was naïve port of SSE2 function (scheduled with TBB on

CPU)

• Broken into 2K x 2K blocks for GPU

Page 11: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 12 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Challenges

• Need good candidate algorithms

- Bandwidth, compute, parallel

Page 12: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 13 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Challenges

• Need good candidate algorithms

- Bandwidth, compute, parallel

• Need debugged C algorithm first

Page 13: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 14 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Challenges

• Need good candidate algorithms

- Bandwidth, compute, parallel

• Need debugged C algorithm first

• GPU win over CPU variable and unpredictable

Page 14: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 15 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Challenges

• Need good candidate algorithms

- Bandwidth, compute, parallel

• Need debugged C algorithm first

• GPU win over CPU variable and unpredictable

• Resource limits

- Win/Mac Timeout issues on low end cards.

Page 15: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 16 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Challenges

• Need good candidate algorithms

- Bandwidth, compute, parallel

• Need debugged C algorithm first

• GPU win over CPU variable and unpredictable

• Resource limits

- Win/Mac Timeout issues on low end cards.

- Out of memory issues on low end cards.

Page 16: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 17 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Challenges

• Need good candidate algorithms

- Bandwidth, compute, parallel

• Need debugged C algorithm first

• GPU win over CPU variable and unpredictable

• Resource limits

- Win/Mac Timeout issues on low end cards.

- Out of memory issues on low end cards.

- Used bandwidth test to enable OpenCL acceleration

- Affected by power-gating on mobile GPU

Page 17: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 18 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Challenges

• Need good candidate algorithms

- Bandwidth, compute, parallel

• Need debugged C algorithm first

• GPU win over CPU variable and unpredictable

• Resource limits

- Win/Mac Timeout issues on low end cards.

- Out of memory issues on low end cards.

- Used bandwidth test to enable OpenCL acceleration

- Affected by power-gating on mobile GPU

• Platform variation

- Driver Issues

- Various compiler issues

Page 18: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 19 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Performance Comparison

• Systems of standard configuration show 4-8x gain for typical use-cases

• Gains improve with Blur radii (results from MacBookPro running 10.7.4

listed below)

- General application processing accounts for majority of time in smaller workloads

Radius in Pixels (13 Megapixel image)

Radeon 6750m Core i7 (2.3 GHz)

50 4.7s 16.2s

100 7.0s 31.9s

150 9.4s 47.9s

Page 19: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 20 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Future Plans

• More OpenCL in future versions

• Investigate OpenCL for CPU

Page 20: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 21 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

OpenCL in Premiere Pro CS

David McGavran Premiere Pro Engineering Manager

Adobe Systems Inc.

Page 21: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 22 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Demo

Page 22: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 23 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Pipeline

Disk IO CPU

Processing Upload

GPU Processing

Display/ Export

Page 23: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 24 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Intrinsics Adjustment layers

Color space

conversion

Deinterlacing

Compositing

Blending modes

Nested Sequences

Multicam

Time remapping

Transitions Additive dissolve

Cross dissolve

Dip to black

Dip to white

Film Dissolve

Push

Accelerated Effects Effects

Alpha adjust

Basic 3D

Black & white

Brightness & contrast

Color balance

Color pass

Color replace

Crop

Directional blur

Drop Shadow

Extract

Fast blur

Fast color corrector

Feather edges

Gamma correction

Garbage matte

Gaussian blur

Horizontal flip

Invert

Luma corrector

Luma curve

Noise

Proc amp

RGB color corrector

RGB curves

Sharpen

Three-way color corrector

Timecode

Tint

Track matte

Ultra keyer

Vertical flip

Video limiter

Warp Stabilizer

Page 24: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 25 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Implementation • Pipeline entirely floating point

• 10-bit display supported

• Subtree rendering for non-accelerated effects

• Draw with OpenGL interop

Page 25: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 26 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Filter Concatenation • Entirely manual

• Host kernel for successive pointwise effects

• Read once, apply multiple filters, write once

• Major bandwidth savings

Page 26: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 27 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012

Future • Increase set of supported effects

• Supporting third party effects & codecs

• GPU encoding & decoding

• Multiple GPU support

• GPU Scopes

Page 27: OpenCL @ Adobe - Khronos Group...Basic 3D Black & white Brightness & contrast Color balance Color pass Color replace Crop Directional blur Drop Shadow Extract Fast blur Fast color

Page 28 SIGGRAPH – Khronos OpenCL BOF - August 8, 2012