fluid software: handling heterogeneous many-core for programmer productivity nate clark

11
Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

Upload: juniper-blake

Post on 05-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity

Nate Clark

Page 2: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

2

Heterogeneous Many-Core

• Need more performance, have many transitors• Power limited → Efficiency in designs• Domain-specific design/many simpler cores

Page 3: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

3

The Biggest Problem: Software

• Parallel programming is hard

• Heterogeneous programming is hard

• Forward compatibility

• Legacy applications

I am afrustrated

programmer

Page 4: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

4

What Do We Want: Fluid Software

• Program adjusts to whatever system has– Many-core/accelerators/whatever

• Automatic, works on legacy code

*.c Compiler *.exe RuntimeOptimizer

Page 5: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

5

What Does This RTO Need to Do?

• Task Decomposition– Break application into parallelizable pieces

• Task Mapping– Place them on a processor/accelerator

• Task Management– Evaluate solution and dynamically adjust

Page 6: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

6

Task Decomposition

• Didn’t this fail in the 80’s?– Hard for programmer to reason about programs– Impossible for compiler

• Dynamic behavior easily predictable– Find probable data/pipeline parallelism

*.exe

Page 7: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

7

MPEG2 Decode

Thies et al. 2007

DecodeBlock

Saturate IDCT

predict andadd block

conv420to422

conv422to424

store ppm

• Example dynamically discovered task graph

Page 8: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

8

Task Mapping

• Place each task on best processor– Predict most effective processor– Generate code (runtime/quality tradeoff)– Forward compatible

DecodeBlock

Saturate IDCT

predict andadd block

conv420to422

conv422to424

store ppm

FPGACPU GPU

Page 9: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

9

Task Management

• Monitor and refine task mapping– What to do when new tasks appear– Understand what’s going on– Scalable control algorithm– Architectural support to help monitoring

DecodeBlock

Saturate IDCT

predict andadd block

conv420to422

conv422to424

store ppm

Page 10: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

10

Fluid Software System

*.exe

A

B C

D

FPGACPU GPU

TaskMapper

Decompose

TaskManager

Page 11: Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark

11

Fluid Software Summary

• RTO adjusts software for any architecture– Task decomposition– Task mapping– Task management

• Provide feedback to help programmers write better code

I’m a happy programme

r