further developing gramps - computer graphicsyoel/notes/090127-gramps-flashg.pdfreyes is the third...

22
Further Developing GRAMPS Jeremy Sugerman FLASHG January 27, 2009

Upload: others

Post on 03-Aug-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

Further Developing GRAMPS

Jeremy Sugerman

FLASHG

January 27, 2009

Page 2: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

2

Introduction

� Evaluation of what/where GRAMPS is today

� Planned next steps

– New graphs: MapReduce and Cloth Sim

� Speculative potpourri, outside interests, issues

Page 3: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

33

Background: Context

Problem Statement:

� Many-core systems are arising in many flavours: homogenous, heterogeneous, programmable cores, and fixed-function units.

� Build a programming model / run-time system / tools that enable efficient development for and usage of these hardware architectures.

Status Quo:

� GPU Pipeline (GPU-only, Good for GL, otherwise hard)

� CPU / C run-time (No programmer guidance, fast is hard)

� GPGPU / CUDA / OpenCL (Good for data-parallel, regular)

Page 4: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

44

Background: History

� GRAMPS: A Programming Model for Graphics

Pipelines, ACM TOG, January 2009

� Chips combining future CPU and GPU cores

� Renderers for Larrabee and future ‘normal’ GPUs

� Collaborators: Kayvon Fatahalian, Solomon Boulos,

Kurt Akeley, Pat Hanrahan

� My current interest: (continue) convincing people a

GRAMPS-like organization should inform future app

and hardware designs.

Page 5: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

55

� Express apps as graphs of stages and queues

� Expose Producer-consumer parallelism

� Facilitate task and data-parallelism

� GRAMPS handles inter-stage scheduling, data-flow

GRAMPS 1.0Input

Fragment

Queue

Output

Fragment

Queue

= Thread Stage

= Shader Stage

= Fixed-func Stage

= Queue

= Stage Output

Ray Tracer

Ray

Queue

Ray Hit

Queue Fragment

Queue

Camera Intersect

Shade FB Blend

Raster Graphics

Shade FB BlendRasterize

Page 6: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

6

Design Goals

� Large Application Scope– Preferable to roll-your-own

� High Performance– Competitive with roll-your-own

� Optimized Implementations– Informs HW design

� Multi-Platform– Suits a variety of many-core systems

Also:

� Tunable– Expert users can optimize their apps

Page 7: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

77

GRAMPS’s Role

� Target users: engine, middleware, SDK, etc. systems savvy

developers

� Example: A ‘graphics pipeline’ is now an app!

Developer owns:

– Identifying a good separation into stages

– Implementing optimized kernels for each stage

GRAMPS owns:

– Handling all inter-stage interaction (e.g., queues, buffers)

– Filling the machine while controlling working set

Page 8: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

88

What We’ve Built (System)

Page 9: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

9

What We’ve Built (Run-time)

� Setup API; Thread, Shader, Fixed stage environments

� Basic scheduler driven by static inputs

– Application graph topology

– Per-queue packet (‘chunk’) size

– Per-queue maximum depth / high-watermark

– Ignores: online queue depths, execution history

– Policy: run consumers, pre-empt producers

Page 10: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

10

What We’ve Built (Apps)

Direct3D Pipeline (with Ray-tracing Extension)

Ray-tracing Graph

IA 1 VS

1 RO Rast

Trace

IA N

VS N

PS

Sample

Queue Set

Ray

Queue

Primitive

Queue

Input Vertex

Queue 1

Primitive

Queue 1

Input Vertex

Queue N

OM

PS2

Fragment

Queue

Ray Hit

Queue

Ray-tracing Extension

Primitive

Queue N

Tiler

Shade FB Blend

Sample

Queue

Tile

Queue

Ray

Queue

Ray Hit

Queue

Fragment

Queue

CameraSampler Intersect

= Thread Stage

= Shader Stage

= Fixed-func

= Queue

= Stage Output

= Push Output

Page 11: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

1111

Taking Stock: What Did We Learn?

� At a high level, the whole thing seems to work!

– Nontrivial proof-of-concept apps are expressible

– Heterogeneity works

– Performance results do not preclude viability

� Stage scheduling is an arbitrarily hard problem.

� There are many additional details it would help to simulate.

� (Conventional) GPU vendors want much more comprehensive analysis.

� Role of producer-consumer is often overlooked

Page 12: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

12

Digression: Some Kinds of Parallelism

Task (Divide) and Data (Conquer)

� Subdivide algorithm into a DAG (or graph) of kernels.

� Data is long lived, manipulated in-place.

� Kernels are ephemeral and stateless.

� Kernels only get input at entry/creation.

Producer-Consumer (Pipeline) Parallelism

� Data is ephemeral: processed as it is generated.

� Bandwidth or storage costs prohibit accumulation.

Page 13: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

13

Possible Next Steps

� Increase persuasiveness of graphics applications

– Model texture, buffer bandwidth

– Sophisticated scheduling

– Robust overflow / error handling

– Handle multiple passes / graph state change

– …

� Follow-up other ideas and known defects

– Model locality / costs for cross-core migration

– Prototype on real hardware

– Demonstrate REYES, non-rendering workloads

Page 14: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

14

Design Goals (Revisited)

� Application Scope: okay– only (multiple) renderers

� High Performance: so-so– only (simple) simulation

� Optimized Implementations: good

� Multi-Platform: good

� (Tunable: good, but that’s a separate talk)

� Strategy: Broad, not deep. Broader applicability

means more impact for optimized implementations.

Page 15: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

15

Broader Applicability: New Graphs

� “App” 1: MapReduce

– Popular parallelism-rich idiom

– Enables a variety of useful apps

� App 2: Cloth Simulation (Rendering Physics)

– Inspired by the PhysBAM cloth simulation

– Demonstrates basic mechanics, collision detection

– The graph is still very much a work in progress…

Page 16: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

16

MapReduce Specification

“ProduceReduce”: Minimal simplifications / constraints

� Produce/Split (1:N)

� Map (1:N)

� (Optional) Combine (N:1)

� Reduce (N:M, where M << N or M=1 often)

� Sort (N:N conceptually, implementations vary)

(Aside: REYES is MapReduce, OpenGL is MapCombine)

Page 17: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

17

MapReduce Graph

� Map output is a dynamically instanced queue set.

� Combine might motivate a formal reduction shader.

� Reduce is an (automatically) instanced thread stage.

� Sort may actually be parallelized.

= Thread Stage

= Shader Stage

= Queue

= Stage Output

= Push Output

Intermediate

Tuples

Map

Output

ProduceCombine

(Optional)Reduce Sort

Initial

Tuples

Intermediate

Tuples

Final

Tuples

Page 18: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

18

� Update is not producer-consumer!

� Broad Phase will actually be either a (weird) shader

or multiple thread instances.

� Fast Recollide details are also TBD.

Cloth Simulation Graph

= Thread Stage

= Shader Stage

= Queue

= Stage Output

= Push Output

ResolutionProposed Update

Update

Mesh

Fast

Recollide

Resolve

Narrow

Collide

Broad

Collide

Collision Detection

BVH

Nodes

Moved

Nodes

Collisions

Candidate

Pairs

Page 19: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

19

Potpourri Projects

� Dynamic Scheduling– at least current queue depths

� Memory system– more real access times, compute /

cap memory bandwidth

� Locality/Scalability (maybe)– validate the overheads

of the run-time, model data/core migration costs.

� Standalone GRAMPS– decouple run-time from

simulated hardware, perhaps port to real hardware

Page 20: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

20

Outside Interests

� Many PPL efforts are interested in GRAMPS:

– Example consumer for the OS / Run-time interface

research.

– Example workload for (hardware) scheduling of

many-threaded chips.

– Example implementation of graphics and irregular

workloads to challenge Sequoia II.

� Everyone wants to fit it above/below their layer (too

many layers!)

� All would profit from Standalone GRAMPS

Page 21: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

21

Overlapping Interests

� REYES is the third major rendering scheme (in

addition to OpenGL/Direct3D and ray tracing).

� During GRAMPS 1.0, “Real-time REYES” was always

on our minds.

� Forked into the micropolygon pipeline project

– (Kayvon, Matt, Ed, etc.)

� Expect overlap in discussion and/or implementation

as they consider parallelization.

Page 22: Further Developing GRAMPS - Computer Graphicsyoel/notes/090127-gramps-flashg.pdfREYES is the third major rendering scheme (in addition to OpenGL/Direct3D and ray tracing). During GRAMPS

22

That’s All Folks

� Thank you for listening. Any questions?

� Actively interested in collaborators

– (Future) Owners or experts in some parallel

application, engine, toolkit, pipeline, etc.

– Anyone interested in scheduling or porting to /

simulating interesting hardware configurations

� http://graphics.stanford.edu/papers/gramps-tog/

� http://ppl.stanford.edu/internal/display/Projects/GRAMPS