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
3
The Biggest Problem: Software
• Parallel programming is hard
• Heterogeneous programming is hard
• Forward compatibility
• Legacy applications
I am afrustrated
programmer
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
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
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
7
MPEG2 Decode
Thies et al. 2007
DecodeBlock
Saturate IDCT
predict andadd block
conv420to422
conv422to424
store ppm
• Example dynamically discovered task graph
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
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
10
Fluid Software System
*.exe
A
B C
D
FPGACPU GPU
TaskMapper
Decompose
TaskManager
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