static stages for heterogeneous programming - …asampson/media/braid... · apple iphone 6s...

27
Static Stages for Heterogeneous Programming Adrian Sampson, Cornell Kathryn S McKinley, Google Todd Mytkowicz, Microsoft Research

Upload: ledieu

Post on 07-Mar-2018

222 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Static Stagesfor Heterogeneous ProgrammingAdrian Sampson, CornellKathryn S McKinley, GoogleTodd Mytkowicz, Microsoft Research

Page 2: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Apple iPhone 6s Smartphone

Application Processors – Sneak Peak, as promised!

10

APL1022 TSMC 16 nm FinFET APL0898 Samsung 14 nm FinFET

NOTE: False color and image sharpening has been applied to the photos for the purposes of this article. High resolution images in Chipworks reports are not retouched.

Apple A9techinsights.com

Page 3: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Apple iPhone 6s Smartphone

Application Processors – Sneak Peak, as promised!

10

APL1022 TSMC 16 nm FinFET APL0898 Samsung 14 nm FinFET

NOTE: False color and image sharpening has been applied to the photos for the purposes of this article. High resolution images in Chipworks reports are not retouched.

Apple A9techinsights.com

CPUs

GPUsDSP ISP audio codecs video codecs modems

Page 4: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

CPUs

GPUsDSP ISP audio codecs video codecs modems

Mobile SoCs

Microsoft Catapult

Google TPU

Datacenter Servers

Page 5: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

accelerator A

accelerator Caccelerator B

CPU

C++ program

program

program

program

Page 6: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

unified program

CPU code

accelerator A code

accelerator B code accelerator C code

Page 7: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Heterogeneous programming languagesneed support for placement and specialization.

With extensions, multi-stage programmingcan support both concepts.

Current APIs for real-time graphics are especiallyunsafe, verbose, and brittle. We can help.

!<[]>

Page 8: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Heterogeneous programming languagesneed support for placement and specialization.

With extensions, multi-stage programmingcan support both concepts.

Current APIs for real-time graphics are especiallyunsafe, verbose, and brittle. We can help.

!<[]>

Page 9: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

CPU GPUCommands Pixels

Display

Page 10: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

CPU

Rendering Pipelineprogrammable & fixed-function stages

GPU Display

Page 11: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

vertex positions pixel colors

VertexShader

FragmentShader

C, C++,JavaScript GLSL GLSL

CPU

Page 12: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Fragment Shader

in vec4 fragPos; void main() { gl_FragColor = abs(fragPos); }

Vertex Shader

in vec4 position; in float dist; out vec4 fragPos; void main() { fragPos = position; gl_Position = position + dist; }

Page 13: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

static const char *vertex_shader = "in vec4 position; ...";static const char *fragment_shader = "in vec4 fragPos; ..."; GLuint program = compileAndLink(vertex_shader, fragment_shader);// ... more boilerplate ... GLuint loc_dist = glGetUniformLocation(program, "dist");

CPU “Host Code”

glUseProgram(program); glUniform1f(loc_dist, 4.0);// ... assign other "in" parameters ... glDrawArrays(...);

setu

pre

nder

a fr

ame

"dits"

Page 14: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization
Page 15: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Übershader

#ifdef

#endif

#define

#if#endif

#ifndef

GPU shader specialization

Page 16: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Heterogeneous programming today

Separate programs in separate languages

Stringly typed communication

Unscalable, unsafe specialization

Page 17: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization
Page 18: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Heterogeneous programming languagesneed support for placement and specialization.

With extensions, multi-stage programmingcan support both concepts.

Current APIs for real-time graphics are especiallyunsafe, verbose, and brittle. We can help.

!<[]>

Page 19: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Classic multi-stage programming:types for metaprogramming

function pow(x, n) { if (n == 1) { return x; } else { return x * pow(x, n - 1); } }

pow(2, 3) 8

genpow("2", 3) "2 * 2 * 2"

eval(genpow("2", 3)) 8

Page 20: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

function genpow(x, n) { if (n == 1) { return x; } else { return x * pow(x, n - 1); } }

genpow("2", 3) "2 * 2 * 2"

numberexpression (string)

Classic multi-stage programming:types for metaprogramming

Page 21: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

function genpow(x, n) { if (n == 1) { return x; } else { return x + " * " + pow(x, n - 1); } }

genpow("2", 3) "2 * 2 * 2"

number

Classic multi-stage programming:types for metaprogramming

expression (string)

Page 22: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization
Page 23: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Specializing on acompile-time parameter

gl_FragColor = if matte diffuse (diffuse + ...)

gl_FragColor = [ if matte <diffuse> <diffuse + ...> ]

render-time parameter

condition on the GPU

host-side parameter

condition on the host

Page 24: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Performance impactof specialization in BraidGL

fram

e la

tenc

y (m

s)

0

2

4

6

8

10

12

14

original GPU if specialized per-vertex

Page 25: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

fram

e la

tenc

y (m

s)

0

2

4

6

8

10

12

14

original if static if vertex0

2

4

6

8

10

12

14

16

orig no bump0

2

4

6

8

10

12

14

16

18

20

orig s1 s2 s3 s4

phong head couch

Performance impactof specialization in BraidGL

Page 26: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

Heterogeneous programming languagesneed support for placement and specialization.

With extensions, multi-stage programmingcan support both concepts.

Current APIs for real-time graphics are especiallyunsafe, verbose, and brittle. We can help.

!<[]>

Page 27: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization

braidgl.com