Specialized systems are Inevitable Already the norm Practical
Heterogeneous parallelism
4 Virtual Worlds Personal Robotics Data informatics Scientific Engineering Applications Heterogeneous Hardware New Arch. Programming Heterogeneous Parallelism
MPI Hadoop Verilog VHDL CUDA OpenCL Threads OpenM P Architecture Specific Programming Models
High Performance But Low Productivity
Virtual Worlds Personal Robotics Data informatics Scientific Engineering Applications Heterogeneous Hardware New Arch. Scal a Jav a Python Ruby C++ Clojure Not enough semantic knowledge to compile automatically No restrictions General-Purpose Languages
Make Specialized PL Practical Inevitable Already the norm Practical
Domain Specific Languages Domain Specific Languages (DSLs) Programming language with restricted expressiveness for a particular domain High-level, usually declarative, and deterministic Most popular parallel PL Most Science apps start with this PL Enabled GPU innovation
Virtual Worlds Personal Robotics Data informatics Scientific Engineering Physics (Liszt) Data Analytics (OptiQL) Graph Alg. (Green Marl) Machine Learning (OptiML) Statistics (R) Applications Domain - Specific Languages Heterogeneous Hardware DSL Compiler DSL Compiler DSL Compiler DSL Compiler DSL Compiler New Arch. High Performance Domain- Specific Languages
HP DSLs Will Be Practical Embedded DSLs Flexible embedding languages: Scala, F# Metaprogramming (aka staging) Blurring line between libraries and languages DSL Frameworks Support domain specific optimizations Support parallelism and locality optimizations Multiple backends e.g. Spoofax, Rose, Delite, Terra/Lua