1 / 11

Revolutionizing Programmer Productivity with Fluid Software for Heterogeneous Many-Core Systems

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.

aminia
Télécharger la présentation

Revolutionizing Programmer Productivity with Fluid Software for Heterogeneous Many-Core Systems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 a frustrated 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 Runtime Optimizer

  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. 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

  8. 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

  9. 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

  10. B C A D CPU GPU FPGA Fluid Software System *.exe Decompose Task Manager Task Mapper

  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 programmer

More Related