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

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

Mar 07, 2018

Download

Documents

ledieu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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