110 likes | 222 Vues
Fluid Software aims to enhance programmer productivity by optimizing applications for heterogeneous many-core architectures. It addresses the challenging aspects of parallel and heterogeneous programming, offering a runtime optimizer that adapts to current system capabilities, supports legacy code, and automates task decomposition, mapping, and management. By improving software efficiency and scalability, Fluid Software ensures effective utilization of diverse processing units such as CPUs, GPUs, and FPGAs. This approach empowers programmers to write better code and achieve significant performance gains with minimal complexity.
E N D
Fluid Software: Handling Heterogeneous Many-Core for Programmer Productivity Nate Clark
Heterogeneous Many-Core • Need more performance, have many transitors • Power limited → Efficiency in designs • Domain-specific design/many simpler cores
The Biggest Problem: Software • Parallel programming is hard • Heterogeneous programming is hard • Forward compatibility • Legacy applications I am a frustrated programmer
What Do We Want: Fluid Software • Program adjusts to whatever system has • Many-core/accelerators/whatever • Automatic, works on legacy code *.c Compiler *.exe Runtime Optimizer
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
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
Saturate IDCT conv420 to422 conv422 to424 Decode Block predict and add block store ppm MPEG2 Decode • Example dynamically discovered task graph Thies et al. 2007
Saturate IDCT conv420 to422 conv422 to424 Decode Block predict and add block store ppm Task Mapping • Place each task on best processor • Predict most effective processor • Generate code (runtime/quality tradeoff) • Forward compatible CPU GPU FPGA
Saturate IDCT conv420 to422 conv422 to424 Decode Block predict and add block store ppm 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
B C A D CPU GPU FPGA Fluid Software System *.exe Decompose Task Manager Task Mapper
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 programmer