Docstoc

Chemistry Update - ROSE compiler infrastructure

Document Sample
Chemistry Update - ROSE compiler infrastructure Powered By Docstoc
					A node-level programming model framework for
             exascale computing*




 By Chunhua (Leo) Liao, Stephen Guzik, Dan Quinlan

                                     LLNL-PRES-539073


                    Lawrence Livermore National Laboratory
     * Proposed for LDRD FY’12, initially funded by ASC/FRIC and now being moved back to LDRD   1
We are building a framework for creating node-level parallel
programming models for exascale

§ Problem:
  • Exascale machines: more challenges to programming models
  • Parallel programming models: important but increasingly lag
    behind node-level architectures
§ Goal:
  • Speedup designing/evolving/adopting programming models for
    exascale
§ Approach:
  • Identify and implement common building blocks in node-level
    programming models so both researchers and developers can
    quickly construct or customize their own models
§ Deliverables:
  • A node-level programming model framework (PMF) with
    building blocks at language, compiler, and library levels
  • Example programming models built using the PMF
                                                                  2
Programming models bridge algorithms and machines and are
implemented through components of software stack

                                         Algorithm
          Programming Model

                              Express
              Abstract
              Machine

             Software Stack                           Measures of success:
              Language                                • Expressiveness
                                        Application   • Performance
                                                      • Programmability
                              Compile/link
               Compiler                               • Portability
                                        Executable    • Efficiency
                Library                               •…
                              Execute
                  …




                                         Real
                                        Machine

                                                                             3
  Parallel programming models are built on top of sequential ones
  and use a combination of language/compiler/library support


                                                            Parallel
Programming
                  Sequential
   Model                           Shared Memory (e.g. OpenMP) Distributed Memory (e.g. MPI)

                                                                           Interconnect
 Abstract          Memory                 Shared Memory
 Machine
  (overly                                                              Memory            Memory
                     CPU                  CPU   … CPU                            …
simplified)
                                                                        CPU               CPU

              General purpose
Software      Languages (GPL)            GPL + Directives               GPL + Call to MPI libs
Stack:         C/C++/Fortran
1. Language
2. Compiler      Sequential              Seq. Compiler
                  Compiler             + OpenMP support                   Seq. Compiler
3. Library
              Optional Seq. Libs       OpenMP Runtime Lib                  MPI library



                                                                                                  4
Problem: programming models will become a limiting factor for
exascale computing if no drastic measures are taken

§ Future exascale architectures
   • Clusters of many-core nodes, abundant threads
   • Deep memory hierarchy, CPU+GPU, …
   • Power and resilience constraints, …
§ (Node level) programming models:
   • Increasingly complex design space
   • Conflicting goals: performance, power, productivity,
     expressiveness
§ Current situation:
   • Programming model researchers: struggle to design/build
     individual models to find the right one in the huge design space
   • Application developers: stuck with stale models: insufficient
     high-level models and tedious low-level ones


                                                                        5
 Solution: we are building a programming model framework (PMF)
 to address exascale challenges

          A three-level, open framework to facilitate building node-level
                 programming models for exascale architectures
                                                               Programming model 1

                             Directive 1   Reuse & Customize
                                                                  Language Ext.
Level 1
              Language           …
              Extensions                                          Compiler Sup.
                             Directive n
                                                                   Runtime Lib.

                               Tool 1
              Compiler                                         Programming model 2
Level 2                         …
              Support
              (ROSE)           Tool n                             Compiler Sup.

                                                                   Runtime Lib.
                             Function 1
               Runtime          …                                      …
Level 3
               Library                                         Programming model n
                             Function 1

                                                                   Runtime Lib.


                                                                                     6
 We will serve both researchers and developers, engage lab
 applications, and target heterogeneous architectures

§ Users:
 • Programming model
   researchers: explore design
   space
 • Experienced application
   developers: build custom
   models targeting current and
   future machines
§ Scope of this project            The programming model framework vastly increases
                                   the flexibility in how the HPC stack can be used for
 • DOE/LLNL applications           application development.

 • Heterogeneous architectures: CPUs + GPUs
 • Example building blocks: parallelism, heterogeneity, data locality,
   power efficiency, thread scheduling, etc.
 • Two major example programming models built using PMF
                                                                                          7
Example 1: researchers use the programming model framework
to extend a higher-level model (OpenMP) to support GPUs

§ OpenMP: a high level, popular node-level programming
  model for shared memory programming
   • High demand for GPU support (within a node)
§ PMF: provides a set of selectable, customizable
  building blocks
   • Language: directives, like #acc_region,
     #data_region, #acc_loop, #data_copy, #device, etc.
   • Compiler: parser builder, outliner, loop tiling, loop
     collapsing, dependence analysis, etc. , based on
     ROSE
   • Runtime: thread management, task scheduling, data
     transferring, load balancing, etc.
                                                             8
 Using PMF to extend OpenMP for GPUs


          Programming model framework                 OpenMP Extended for GPUs



                            Directive 1                 #pragma omp acc region

Level 1
            Language            …                       #pragma omp acc_loop
            Extensions                                  #pragma omp acc_region_loop
                            Directive n
                                          Reuse &
                                                             Pragma_parsing()
                                          Customize
                              Tool 1                       Outlining_for_GPU()
             Compiler
Level 2                        …                           Insert_runtime_call()
             Support
             (ROSE)           Tool n                        Optimize_memory()


                            Function 1                       Dispatch_tasks()
Level 3
             Runtime           …                             Balancing_load()
             Library
                            Function 1                        Transfer_data()




                                                                                      9
Example 2: application developers use PMF to explore a lower
level, domain-specific programming model

§ Target lab application:
   • Lattice-Boltzmann algorithm with adaptive-mesh
     refinement for direct numerical simulation studies on how
     wall-roughness affects turbulence transition.
   • Stencil operations on structured arrays
§ Requirements:
   • Concurrent, balanced execution on CPU & GPU
   • Users do not like translating OpenMP to GPU
   • Want to have the power to express lower level details like
     data decomposition
   • Exploit domain features: a box-based approach for
     describing data-layout and regions for numerical solvers
   • Target current and future architectures


                                                                  10
Using the PMF to implement the domain-specific programming
model (ongoing work with many unknown details)

• C++ (main                Compiler
algorithm                                                 Source-code
                           Support
infrastructure)                                            that can be
• Pragmas (gluing                                           compiled
and supplemental                                          using native
semantics)                                                  compilers

• Cuda (describe           Building blocks
kernels)
                           Architecture A
                           Architecture B                  Executable

Language feature                                     Final compilation using
                      Compiler (first compilation)
•Use a sequential                                    native compilers,
                      •Generate code to help
language, CUDA, and                                  linking with a runtime
                      chores
pragmas to describe                                  library
                      •Custom code generation
algorithms                                           * Scheduling among
                      for multiple architectures
                                                     CPUs and GPUs
                                                                               11
Summary

§ We are building a framework instead of a single
  programming model for exascale node architectures
   • Building blocks : language, compiler, runtime
   • Two major example programming models
§ Programming model researchers
   • Quickly design and implementation solutions to
     exascale challenges
   • Eg. Explore OpenMP extensions for GPUs
§ Experienced application developers
   • Ability to directly change the software stack
   • Eg. Compose domain-specific programming models

                                                      12
Thank you!




             13

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:7
posted:4/30/2014
language:Unknown
pages:13