domain specific languages to high performance code
play

Domain-Specific Languages to High Performance: Code Generation and - PowerPoint PPT Presentation

Outline Software Overview Domain-Specific Languages to High Performance: Code Generation and Transformation in Python Part 1: Introduction Andreas Kl ockner Computer Science University of Illinois at Urbana-Champaign uiuc-logo.pdf


  1. Outline Software Overview Domain-Specific Languages to High Performance: Code Generation and Transformation in Python Part 1: Introduction Andreas Kl¨ ockner Computer Science University of Illinois at Urbana-Champaign uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  2. Outline Software Overview Outline 1 Outline 2 Software Overview uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  3. Outline Software Overview Setting High-performance code is challenging : designed to push machines, models, and methods to the limits of their capabilities often repurposed → high demands on flexibility uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  4. Outline Software Overview Goals Recipe: Split ‘ math work ’ from ‘ performance work ’ Build Mathematically-oriented mini-languages (‘DSLs’) Apply domain-specific optimizations and transformations Leverage tools to generate GPU/multi-core code from DSL Create glue that ties components together uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  5. Outline Software Overview Goals Recipe: Split ‘ math work ’ from ‘ performance work ’ Build Mathematically-oriented mini-languages (‘DSLs’) Apply domain-specific optimizations and transformations Leverage tools to generate GPU/multi-core code from DSL Create glue that ties components together Necessary consequence: The computation itself is now data that we will manipulate programmatically. uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  6. Outline Software Overview Introduction Case studies IPython Python numpy : einsum UFL numpy Building languages Generating C Syntax trees Using templating engines Expression languages Types and hybrid code Operations on expression Structured code trees generation (ASTs) A first glimpse of code Code generation via Loopy generation Loop polyhedra OpenCL as a vehicle for Instructions and ordering code generation Loop transformation, and Execution model data layout OpenCL + Python Generating instructions High-performance from DSLs primitives uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  7. Outline Software Overview Outline 1 Outline 2 Software Overview uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  8. Outline Software Overview Getting the software Core packages: Python: https://www.python.org numpy: https://www.numpy.org pymbolic: https://github.com/inducer/pymbolic PyOpenCL: https://github.com/pyopencl/pyopencl loopy: https://github.com/inducer/loopy All open-source under MIT/BSD licenses. uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

  9. Outline Software Overview DEMO TIME uiuc-logo.pdf Andreas Kl¨ ockner DSL to High Performance

Recommend


More recommend