par lab: where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/where we ended...

50
BERKELEY PAR LAB Par Lab: Where we ended up Krste Asanovic, Ras Bodik, Jim Demmel, Armando Fox, Tony Keaveny, Kurt Keutzer, John Kubiatowicz, Nelson Morgan, Dave Patterson, Koushik Sen, David Wessel, and Kathy Yelick UC Berkeley Par Lab End-of-Project Party May 30, 2013

Upload: others

Post on 22-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB BERKELEY PAR LAB

Par Lab: Where we ended up

Krste Asanovic, Ras Bodik, Jim Demmel, Armando Fox, Tony Keaveny,

Kurt Keutzer, John Kubiatowicz, Nelson Morgan, Dave Patterson, Koushik Sen,

David Wessel, and Kathy Yelick UC Berkeley

Par Lab End-of-Project Party May 30, 2013

Page 2: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Par Lab Timeline

2

Initial Meetings

“Berkeley View” Techreport

Win UPCRC Competition

UPCRC Phase-I

UPCRC Phase-II

You are here!

Page 3: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Personal Health

Image Retrieval

Hearing, Music Speech Parallel

Browser Computational Patterns/Dwarfs

Sketching

Legacy Code Schedulers Communication &

Synch. Primitives Efficiency Language Compilers

Initial Par Lab “Lasagna” Stack

Easy to w rite correct programs that run efficiently on manycore

Legacy OS

Multicore/GPGPU

OS Libraries & Services

ParLab Manycore/RAMP

Hypervisor

Cor

rect

ness

Composition & Coordination Language (C&CL)

Parallel Libraries

Parallel Frameworks

Static Verification

Dynamic Checking

Debugging with Replay

Directed Testing

Autotuners

C&CL Compiler/Interpreter

Efficiency Languages

Type Systems

Dia

gnos

ing

Pow

er/P

erfo

rman

ce

3

Page 4: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

4

Dominant Application Platforms

4

Laptop/Handheld (“Mobile Client”) Par Lab focuses on mobile clients

Data Center or Cloud (“Cloud”) RAD Lab/AMPLab focuses on Cloud

Both together (“Client+Cloud”) ParLab-AMPLab collaborations

Page 5: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Manycore

Original predictions, 2x cores every 2 years 256 cores by 2013

Reality was <2+ cores every 2 years 8-16 cores in 2013

But real growth was in SIMD performance Wider, more capable SIMD units on multicore GP-GPUs

5

Recent GPUs have up to 2,048 vector lanes!

Page 6: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

GPU/SIMD Effectiveness

Many of the parallel patterns are amenable to data-parallel execution

Despite limited memory capacity and cumbersome programming model, GPUs were surprisingly effective on wide range of apps Easier to get higher speedups than multicore Apps developers voted with their feet

Prediction: Better CPU SIMD extensions and integrated GPUs having to use same memory system will blur/narrow CPU/GPU difference

6

Page 7: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Performance/Energy Counters

We architected our bare minimum requirements for accurate performance/energy counters

Bad news: In 2013, commercial processors still don’t meet our bare minimum

Good news: Energy counters have started appearing

Prediction: Counters should be given higher priority but will continue to be “unloved” parts of future architectures

7

Page 8: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

RAMP Gold

Rapid accurate simulation of manycore architectural ideas using FPGAs Initial version models 64 cores of SPARC v8 with shared memory system on $750 board Hardware FPU, MMU, boots our OS and Par Lab stack! Cost Performance

(MIPS) Time per 64 core

simulation

Software Simulator $2,000 0.1 - 1 250 hours

RAMP Gold $2,000 + $750 50 - 100 1 hour

8 Download at: https://sites.google.com/site/rampgold/

Page 9: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Architecture FPGA Emulation

RAMP Gold design forms core of DIABLO “Datacenter-In-A-Box at LOw cost” Execution-driven model of entire 2,000-node

datacenter including network switches Now, generate FPGA emulations (FAME-0) of

own RISC-V processors from Chisel code Future, developing techniques for automatic

generation of efficient FPGA models from RTL Chisel automatically generating higher FAME New DREAMER emulation architecture

9

Page 10: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB RISC-V ISA A new clean-slate open-source ISA to support

research and education Ports of Tessellation, Akaros, Linux OS, gcc,

LLVM,.. Multiple implementations including “Rocket” in-

order research core, plus “Sodor” family of educational processors

New vector-thread architecture designs FPGA emulations + tapeouts of real chips To be released soon at:

http://www.riscv.org

10

Page 11: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Chisel: Constructing Hardware In a Scala Embedded Language

Embed a hardware-description language in Scala, using Scala’s extension facilities

A hardware module is just a data structure in Scala Different output routines can generate different

types of output (C, FPGA-Verilog, ASIC-Verilog) from same hardware representation

Full power of Scala for writing hardware generators Object-Oriented: Factory objects, traits, overloading etc Functional: Higher-order funcs, anonymous funcs,

currying Compiles to JVM: Good performance, Java interoperability

Download from http://chisel.eecs.berkeley.edu 11

Page 12: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

“Agile Hardware” Development

12

Clock test site

SRAM test site

DCDC test site

Processor Site

Multiple 28nm and 45nm GHz-class processor tapeouts

Page 13: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Operating Systems

Pursued our original approach of very thin hypervisor layer managing partitions

Many ideas swirling in early days of project, concrete implementations on real x86 hardware and RAMP Gold helped provide focus

OS group split into cloud team that moved to AMPLab (Akaros) and client team in Par Lab (Tessellation)

13

Page 14: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Tessellation OS: Space-Time Partitioning + 2-Level Scheduling

1st level: OS determines coarse-grain allocation of resources to jobs over space and time

2nd level: Application schedules component tasks onto available “harts” (hardware thread contexts) using Lithe

Time Sp

ace

2nd-level Scheduling

Address Space A

Address Space B Task

Tessellation Kernel (Partition Support)

CPU L1

L2 Bank

DRAM

DRAM & I/O Interconnect

L1 Interconnect

CPU L1

L2 Bank

DRAM

CPU L1

L2 Bank

DRAM

CPU L1

L2 Bank

DRAM

CPU L1

L2 Bank

DRAM

CPU L1

L2 Bank

DRAM 14

Page 15: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

PACORA: Resource Management using Convex Optimization

La = RUa(r(0,a), r(1,a), …, r(n-1,a)) La

Pa(La)

Continuously Minimize

(subject to restrictions on the total amount of

resources)

Lb = RUb(r(0,b), r(1,b), …, r(n-1,b)) Lb

Pb(Lb)

Penalty Function Reflects the app’s

importance

Convex Surface Performance Metric (L), e.g., latency

Resource Utility Function Performance as function of

resources

Each process receives a vector of basic resources dedicated to it e.g., fractions of cores, cache slices, memory pages, bandwidth

Allocate minimum for QoS requirements Allocate remaining to meet some system-level objective

e.g., best performance, lowest energy, best user experience

QoS Req.

Page 16: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

16

App 2

“Harts”: Hardware Threads A Better Resource Abstraction

App 1

Virtualized Threads

• Merged resource and computation abstraction.

OS 0 1 2 3

Hardware

App1

OS 0 1 2 3

Hardware

Harts (HW Thread Contexts)

App2

• More accurate resource abstraction. • Let apps provide own computation abstractions

Hardware Partitions

Page 17: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Lithe: “Liquid Thread Environment”

Lithe is an ABI to allow application components to co-operatively share hardware threads. Each component is free to map computational to

hardware threads in any way they see fit No mandatory thread or task abstractions

Components request but cannot demand harts, and must yield harts when blocked or finished with task

17

Page 18: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Types of Programming (or “types of programmer”)

Hardware/OS

Efficiency-Level (MS in CS) C/C++/FORTRAN

assembler

Java/C# Uses hardware/OS primitives, builds programming frameworks (or apps)

Productivity-Level (Some CS courses)

Python/Ruby/Lua

Scala

Uses programming frameworks, writes application frameworks (or apps)

Haskell/OCamL/F#

Domain-Level (No formal CS)

Max/MSP, SQL, CSS/Flash/Silverlight, Matlab, Excel

Builds app with DSL and/or by customizing app framework

Provides hardware primitives and OS services

Example Languages Example Activities

18 18

Page 19: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

How to make parallelism visible?

In a new general-purpose parallel language? An oxymoron? Won’t get adopted Most big applications written in >1 language

Par Lab bet on Computational and Structural Patterns at all levels of programming (Domain thru Efficiency) Patterns provide a good vocabulary for domain experts Also comprehensible to efficiency-level experts or

hardware architects Lingua franca between the different levels in Par Lab

19 19

Page 20: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Computational Patterns Common Across Applications

App 1 App 2 App 3

Dense Sparse Graph Trav. Berkeley View

“Dwarfs”

20

Page 21: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

21

How do compelling apps relate to 13 dwarfs?

Dwarf/Patterns Popularity (Red Hot Blue Cool)

Computation

Page 22: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

22

Graph-Algorithms

Dynamic-Programming

Dense-Linear-Algebra

Sparse-Linear-Algebra

Unstructured-Grids

Structured-Grids

Model-View-Controller

Iterative-Refinement

Map-Reduce

Layered-Systems

Arbitrary-Static-Task-Graph

Pipe-and-Filter

Agent-and-Repository

Process-Control

Event-Based/Implicit-Invocation

Puppeteer

Graphical-Models

Finite-State-Machines

Backtrack-Branch-and-Bound

N-Body-Methods

Circuits

Spectral-Methods

Monte-Carlo

Applications

Structural Patterns Computational Patterns

Task-Parallelism Divide and Conquer

Data-Parallelism Pipeline

Discrete-Event Geometric-Decomposition Speculation

SPMD Data-Par/index-space

Fork/Join Actors

Distributed-Array Shared-Data

Shared-Queue Shared-map Partitioned Graph

MIMD SIMD

Parallel Execution Patterns

Concurrent Algorithm Strategy Patterns

Implementation Strategy Patterns

Message-Passing Collective-Comm.

Thread-Pool Task-Graph

Data structure Program structure

Point-To-Point-Sync. (mutual exclusion) collective sync. (barrier)

Loop-Par. Task-Queue

Transactions

Thread creation/destruction Process creation/destruction

Concurrency Foundation constructs (not expressed as patterns)

“Our” Pattern Language (OPL-2010)

A = M x V

Refine Towards Implementation

Page 23: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Mapping Patterns to Hardware

App 1 App 2 App 3

Dense Sparse Graph Trav.

Multicore GPU “Cloud”

Only a few types of hardware platform

23

Page 24: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

High-level pattern constrains space of reasonable low-level mappings

(Insert latest OPL chart showing path)

24

Page 25: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Specializers: Pattern-specific and platform-specific compilers

Multicore GPU “Cloud”

App 1 App 2 App 3

Dense Sparse Graph Trav.

Allow maximum efficiency and expressibility in specializers by avoiding mandatory intermediary layers

25

aka. “Stovepipes”

Page 26: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

SEJITS: “Selective, Embedded, Just-In Time Specialization”

SEJITS bridges productivity and efficiency layers through specializers embedded in modern high-level productivity language (Python, Ruby) Embedded “specializers” use language facilities to map

high-level pattern to efficient low-level code (at run time, install time, or development time)

Specializers can incorporate or package autotuners Two ParLab SEJITS projects: Copperhead: Data-parallel subset of Python, development

continuing at NVIDA Asp: “Asp is SEJITS in Python” general specializer

framework Provide functionality common across different specializers

26

Page 27: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

SEJITS In A Nutshell

27

Non-DSL Code

Program Code in DSL A

Code in DSL B

Interpreter Data

Com

pile

Ph

ase DSL

Codegen

External Compiler

Data Code in DSL A

Dynamic Link Library

Result Ex

ecut

e Ph

ase

Page 28: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Current Par Lab Stack

28

Lithe User-Level Scheduling ABI

Tessellation OS Hardware Resources (Cores, Cache/Local Store, Bandwidth)

Module 1 Scheduler

TBB Scheduler

Efficiency Level Code TBB Code

OpenMP Scheduler

Legacy OpenMP

Application 1

Module 3

Module 2 Module 1

Application 2

Page 29: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Supporting QoS inside Apps

29

Lithe

Tessellation OS Hardware Resources (Cores, Cache/Local Store, Bandwidth)

Module 1 Scheduler

TBB Scheduler

Efficiency Level Code TBB Code

Real-Time Scheduler

Real-Time Cell

Application

Module 3

Module 2 Module 1

Best-Effort Cell

Page 30: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Communication-Avoiding Algorithms

Past algorithms: FLOPs expense, Moves cheap New theory: proves lower bounds on data movement; both

serial (memory hierarchy) and parallel data movement New practice: codes achieve lower bound and speedups Widely applicable: all linear algebra, Health app…

30

Idea #1: read a piece of a sparse matrix (= graph) into fast memory and take multiple steps of higher-level algorithm

Idea #2: replicate data (including left-hand side arrays, as in C in C=A*B) and compute partial results, reduce later

Page 31: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

A few examples of speedups Matrix multiplication

Up to 12x on IBM 64K-core BG/P for n=8K; 95% less communication QR decomposition (used in least squares, data mining, …)

Up to 8x on 8-core dual-socket Intel Clovertown, for 10M x 10 Up to 6.7x on 16-proc. Pentium III cluster, for 100K x 200 Up to 13x on Tesla C2050 / Fermi, for 110k x 100 “infinite speedup” for out-of-core on PowerPC laptop

• LAPACK thrashed virtual memory, didn’t finish

Eigenvalues of band symmetric matrices Up to 17x on Intel Gainestown, 8 core, vs MKL 10.0

Iterative sparse linear equations solvers (GMRES) Up to 4.3x on Intel Clovertown, 8 core

N-body (direct particle interactions with cutoff distance) Up to 10x on Cray XT-4 (Hopper), 24K particles on 6K procs.

31 Next: automatically xform code; new “HBL” theory just out!

Page 32: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Autotuning: Computers, Rather than People Tune Code

Autotuners are code generators plus search Avoids two unsolved compiler problems: dependence analysis and

accurate performance models New: particles, stencils, graphs,… and manylane/core optimizations New roofline model to aid in performance understanding

Work by Williams, Oliker, Shalf, Madduri, Kamil, Im, Ethier,…

512

256

128

64

32

16

8

4

2

1024

1/16 1 2 4 8 16 32 1/8 1/4

1/2 1/32

512

256

128

64

32

16

8

4

2

1024

1/16 1 2 4 8 16 32 1/8 1/4

1/2 1/32

RTM/wave eqn.

RTM/wave eqn.

7pt Stencil 27pt Stencil

Xeon X5550 (Nehalem) NVIDIA C2050 (Fermi)

SpMV SpMV

7pt Stencil

27pt Stencil DGEMM

DGEMM

GTC/chargei

GTC/pushi

GTC/chargei

GTC/pushi

Algorithmic intensity: Flops/Word Algorithmic intensity: Flops/Word

Peak compute

32

Page 33: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Parallel Correctness: Testing and Debugging

Some Results Active Testing: for finding non-deterministic bugs such as data races,

deadlocks, atomicity violations • Open-source [BSD-licensed] CalFuzzer for Java • Thrille for C/Pthreads and UPC

Specification and assertion framework for parallelism correctness • Introduced Bridge Predicates • Nondeterministic Sequential Specification to separate parallel correctness

from functional correctness Concurrit: A testing framework for concurrent programs

• JUnit or xUnit for concurrent programs • Applied to Chrome and Firefox browsers

Concolic testing: for automated test input generation • Java • Javascript (ongoing)

33 33

Page 34: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

34

Parallel Browser

2007 Vision: desktop-quality browsing on mobiles. Now: yes, but only 200 web pages / battery charge. 2007 Vision: browser as an app platform. Now: Google Glass is a browser app.

Page 35: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Parallel Browser

Parallelism improves responsiveness, energy use. 2007: parallel browser controversial 2013: Mozilla Servo & Google Blink browsers

Some of our results:

• First scalable parser (in Qualcomm browser) • Synthesizer of parallel layout engines • Parallel layout retrofitted to Safari via WebCL • Collaboration with Mozilla on parallel Servo

Page 36: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Program Synthesis

36

Synthesis: search a huge space for a program that is semantically correct and high-performance alternative to classical AST-rewrite compilers search implemented as constraint solving

Some of our synthesizers: FTL: parallel layout engines Programming for ULP spatial manycore SQL query programming by demonstration

Page 37: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

37

Music Application

New user interfaces with pressure-sensitive multi-touch gestural interfaces

Programmable virtual instrument and audio processing

120-channel speaker array

Page 38: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

More Applications: “Beating down our doors!”

5 Original Apps: Parallel Browser (Ras Bodik), Music (David Wessel), Speech (Nelson Morgan), Health (Tony Keavney), Image Retrieval (Kurt Keutzer)

New external application collaborators: Pediatric MRI (Michael Lustig, Shreyas Vassanwala @Stanford) Multimedia and Speech (Dorothea Kolossa @TU Berlin) Computer Vision (Jitendra Malik, Thomas Brox) Computational Finance (Matthew Dixon @UCD) Natural Language Translation (Dan Klein) Programming multitouch interfaces (Maneesh Agrawala) Protein Docking (Henry Gabb, Intel)

38

Page 39: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Pediatric MRI Typical exam ~ 1 hour Motion blurs the images Scanner is a small loud tunnel Difficult for children to stay still! Traditional Solution: Anesthesia

Compressed Sensing reduces each scan to 15

seconds But takes too long (hours) to

reconstruct image

Page 40: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Compressed Sensing for Pediatric MRI

• Image reconstruction from 1-2 hours down to < 1 min • In use in clinical trials

Page 41: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Today’s Demos

Personal Health

Image Retrieval

Hearing, Music Speech Parallel

Browser Motifs/Dwarfs

Sketching

Legacy Code Schedulers Communication &

Synch. Primitives Efficiency Language Compilers

Legacy OS

Multicore/GPGPU

OS Libraries & Services

RAMP Manycore

Hypervisor

Cor

rect

ness

Composition & Coordination Language (C&CL)

Parallel Libraries

Parallel Frameworks

Static Verification

Dynamic Checking

Debugging with

Replay

Directed Testing

Autotuners

C&CL Compiler/Interpreter

Efficiency Languages

Type Systems

Legacy Code

Legacy OS

Multicore/GPGPU

Efficiency Language Compilers

Page 42: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

42

BERKELEY PAR LAB

Demo: The Parallel Meeting Diarist Gerald Friedland

International Computer Science Institute (ICSI) Work together with

primarily: Katya Gonina David Sheffield Adam Janin Brian Hill Jike Chong Nelson Morgan Kurt Keutzer Ganapati S. Mishali N.

Page 43: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

43

BERKELEY PAR LAB

Components of the Meeting Diarist

Created a fully integrated, very fast meeting diarist SEJITized that is currently tech-transfered to Intel.

Page 44: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

44

BERKELEY PAR LAB

Diarizer Results and Impacts

Created a fully integrated, very fast meeting diarist using SEJITs:

Before Par Lab After Par Lab “who spoke when”

~10k LOC 0.3 x RT

~100 LOC 250 x RT

“what was said”

~100k LOC 0.1 x RT

~ 5k LOC 1 x RT

Online=Offline processing for “who spoke when” Diarization used for BIG DATA video processing Tech-transfer to Intel

Page 45: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Par Lab Publications Tally

193 Conference Papers 28 Journal Papers 94 Technical Reports 12+ Best Paper Awards

Berkeley View TR, >1,300 citations Par Lab papers, >8,000 citations

45

Page 46: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Par Lab Educational Impact Par Lab summer bootcamps

2009-2012: >1300 attendees including >300 from industry CS61C Reworked intro architecture class with parallelism

480 students in Fall 2012 semester Revised 5th edition of undergrad text (used at 400 universities)

CS152 Undergrad Architecture using Chisel processors CS164 Students design and own DSLs, implement a browser CS194 Undergrad parallel patterns class

3rd offering, co-taught with Tim Mattson, Intel 3 posters here from successful undergrad projects

CS250 Graduate VLSI Design using Chisel/Agile Hardware CS267 Graduate parallel computing class

Added material on dwarfs, patterns, autotuning, apps Homeworks ported to .net with Microsoft NSF-funded MOOC XSEDE launched spring 2013

46

Page 47: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Par Lab Students

PhD students 91 total PhD participants, 23 of which graduated by 2013 MS Students 35 total MS participants, 13 of which graduated by 2013 Post-Docs 5 current

47

Page 48: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Par Lab Book

18 chapters Overview + 1-2

research papers ≈ 600 pages Expected by June 30 Amazon Ebook $0.99

Print book signup page

48

Page 49: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Multiple Follow-On Projects Underway

OS and Music work continuing in new SWARM Lab, programming the “swarm” of environmental devices http://swarmlab.eecs.berkeley.edu

Software synthesis, Correctness -> Chaperone, ExCape NSF Expedition

ASPIRE: patterns, communication-avoiding algorithms, SEJITS, RISC-V, specialized architectures, Chisel, Agile Hardware http://aspire.eecs.berkeley.edu

49

Page 50: Par Lab: Where we ended upparlab.eecs.berkeley.edu/sites/all/parlab/files/Where We Ended Up_0.… · programming frameworks (or apps) Productivity-Level (Some CS courses) Python/Ruby/Lua

BERKELEY PAR LAB

Thanks to our sponsors!

Research supported by Microsoft (Award #024263) and Intel (Award #024894) funding and by matching funding by U.C. Discovery (Award #DIG07-10227).

Additional support comes from Par Lab affiliates National Instruments, NEC, Nokia, NVIDIA, Samsung, and Oracle/Sun.

50