90 likes | 217 Views
So What’s Exascale Again?. The Architects Did Their Best…. And this is the result . Scale of parallelism Multiple kinds of parallelism in HW Too little memory Data transfer too slow It’s going to take a while to sort this out…. Compilers. We implement Fortran, C and C++
E N D
The Architects Did Their Best… And this is the result Scale of parallelism Multiple kinds of parallelism in HW Too little memory Data transfer too slow It’s going to take a while to sort this out…
Compilers • We implement Fortran, C and C++ • We provide OpenMP, CUDA, UPC, CAF, accelerator directives • We could add more: • Languages (would you use them?) • Enhancements to existing languages and directives • Assertions (assertions of facts) • Annotations (new kinds of control)
Compiler-Based Tools • Provide more information to application developer • Perform “clerical” tasks • Help relate information (e.g. performance data) to source • Pass information to runtime • Generate information and pass it to runtime (e.g. to support scheduling) • Help collect performance data BT NAS Benchmark
Compiler-Based Tools Call Graph Array Regions Flow Graph Dragon Analysis Tool
Compilers • The best thing since sliced bread • A few minor limitations • Can’t reconfigure the hardware if the hardware is not reconfigurable • But… don’t like to guess about what you are trying to do • So only work with information you gave them • Or obtained via a tool or the runtime • Require heavy investment • Compiler-based tools very powerful
Why Isn’t It Business as Usual? Heterogeneity in our systems Scale of parallelism Too many kinds of parallelism in HW Too little memory Data transfer too slow
Performance monitoring and abstraction workload PerfSuite High-end systems Architectural parameters KOJAK Executables Problem feedback Open64 Static compilation module Dynamic compilation module Graphical interface Applications Instrumentation DRAGON Editing, OMP insertion Runtime, Dynamic Tuning, Adaptation, … Compilers, their runtime systems and dynamic (re)optimizers can be a very powerful infrastructure for translating and adapting code