static stages for heterogeneous programming - …asampson/media/braid... · apple iphone 6s...
TRANSCRIPT
![Page 1: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/14.jpg)
![Page 15: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/15.jpg)
Ü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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/17.jpg)
![Page 18: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/22.jpg)
![Page 23: Static Stages for Heterogeneous Programming - …asampson/media/braid... · Apple iPhone 6s Smartphone Application Processors ... Stringly typed communication Unscalable, unsafe specialization](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022021509/5a9fd8087f8b9a67178d63f4/html5/thumbnails/27.jpg)
braidgl.com