37
LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe Dubach David F. Bacon Steven Fink Sunil Shukla Yu Zhang 2011 FCCM WORKSHOP ON HIGH-LEVEL SYNTHESIS AND PARALLEL COMPUTATION MODELS

OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

LIQUID METAL OBJECT-ORIENTED PROGRAMMING

OF HETEROGENEOUS MACHINES

Joshua AuerbachPerry Cheng

Rodric Rabbah

Christophe Dubach

David F. BaconSteven FinkSunil Shukla

Yu Zhang

2011 FCCM WORKSHOP ON HIGH-LEVEL SYNTHESIS AND PARALLEL COMPUTATION MODELS

Page 2: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

THE HETEROGENEOUS ERA

GPU FPGA

Cell BE IBM PowerEN

Tilera 64

Page 3: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe
Page 4: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

HETEROGENEOUS PROGRAMMING TODAY

GPUCPU PowerEN FPGA

CPU

Com

pile

r

binary

GPU

Com

pile

r

binaryNo

de C

ompi

ler

binary

Synt

hesi

s

bitfile

JavaC++

Python

CudaOpenCL C+Intrinsics

VHDLVerilog

SystemC

Page 5: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

GPUCPU PowerEN FPGA

CPU

Back

end

bytecode

GPU

Back

end

binaryNo

de B

acke

ndbinary

Veril

og B

acke

nd

bitfile

THE LIQUID METAL PROGRAMMING LANGUAGE

Lime

Lime Compiler

Page 6: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

Artifact Store

THE ARTIFACT STORE & EXCLUSION

GPUCPU PowerEN FPGA

bytecode binary binary bitfile

Lime

Lime Compiler

bitfilebitfile

FPGA

Page 7: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

Lime Virtual Machine (LVM)

“Bus”

Artifact Store

HETEROGENEOUS EXECUTION OF LIME

GPUCPU PowerEN FPGA

bytecode binary bitfile

Lime

Lime Compiler

bitfilebitfilebytecode binary

bitfile

Page 8: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

LVM

EXECUTION, COMMUNICATION, AND REPLACEMENT

Page 9: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

THE LIME LANGUAGE

Page 10: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

LIME: JAVA IS (ALMOST) A SUBSET

% javac MyClass.java% java MyClass

% mv MyClass.java MyClass.lime% limec MyClass.lime% java MyClass

INCREMENTALLY USE LIME FEATURES

Page 11: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

LIME LANGUAGE OVERVIEW

Core FeaturesProgrammable PrimitivesMap & Reduce Operations

Stream Programming

Immutable TypesBounded TypesBounded Arrays

Primitive Supertypes

Graph Construction Isolation EnforcementClosed World Support

Rate MatchingMessaging

Reifiable GenericsRanges, Bounded “for”User-defined operators

TypedefsLocal type inference

Tuples

Supporting Features

BIT-LEVEL PARALLELISM PIPELINE PARALLELISM

DATA PARALLELISM

Page 12: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

STREAMING COMPUTATIONPIPELINE PARALLELISM

Page 13: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

local char work(char c) { return toUpper(c);}

stream

primitive filter

workermethod

port

char char

porttype

streamtype

TASK CREATION (STATELESS) var uppercaser = task work;

Isolation Keywords

Task Creation

Page 14: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

PIPELINES

worker1(…) { … }

port-to-streamconnection

worker2(…) { … } worker3(…) { … }

port-to-streamconnection

compound filter

char intchar int[[5]]

var pipeline = task worker1 => task worker2 => task worker3;

Graph Construction

Page 15: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

SOURCES AND SINKS

Heap

reader(…) { … } worker(…) { … } writer(…) { … }

source

File System

sink

char char

/tmp/mydata /dev/tty

filter

Page 16: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

HELLO WORLD, STREAMING STYLE

public static void main(string[[]] args) {

char[[]] msg = { 'H','E','L','L','O',',',' ', 'W','O','R','L','D','!','\n' };

var hello = msg.source(1) => task Character.toLowerCase(char) => task System.out.print(char);

hello.finish(); }

Page 17: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

DEMOHELLO WORLD

LIME/ECLIPSE ENVIRONMENT

Page 18: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe
Page 19: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

STATEFUL TASKS

double avg(double x) { total += x; return total/++count;}

instance variables(local state)

double total;long count;

primitive filter

double double

var averager = task Averager().avg;

Page 20: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

RATE MATCHING

int[[2]] work1(int i) { int r = i+x; x = i/2; return { r, i };}

int x;Buffer

int work2(int i) { return i*3;}

rate matcher(rate 1:2)

intint[[2]]intint

compound filter(rate 1:2)

var matchedpipe = task AddStuff().work1 => # => task work2;

Page 21: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

DEMON-BODY SIMULATION: CPU VS. GPU

Page 22: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

9X SPEEDUP (9.26 GFLOPS) ON LAPTOP

Page 23: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

VIRTUALIZATION OF DATA MOVEMENT

=>

Page 24: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

MAP & REDUCE OPERATIONSDATA PARALLELISM

Page 25: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

ARRAY PARALLELISM

float[ ] a = ...;float[ ] b = ...;

float[ ] c = a @+ b;

float sum = + ! c;

Indexable<int,float>

Collectable<int,float>

Page 26: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

MAP & REDUCE OPERATIONS IN ACTIONpackage lime.util.synthesizable;

public class FixedHashMap<K extends Value, V extends Value, BUCKETS extends ordinal<BUCKETS>, LINKS extends ordinal<LINKS>> extends AbstractMap<K,V>{ protected final nodes = new Node<K,V>[BUCKETS][LINKS];

nodes

LINKS = 2

BUCK

ETS

= 3 Node K V1 Node K V1

Node K V0 Node K V1

Node K V0 Node K V0

Page 27: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

row

nodes

LINKS = 2

BUCK

ETS

= 3

Node K V0 Node K V1

Node K V0 Node K V0

GET OPERATION, STEP 1: SELECT ROW

public local V get(K key) { Node[LINKS] row = nodes[hash(key)]; boolean[LINKS] selections = row @ compareKey(key); V[LINKS] vals = row @ getValueOrDefault(selections); return | ! vals; }

Node K V1 Node K V1

public local V get(K key) { Node[LINKS] row = nodes[hash(key)];

key

Page 28: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

STEP 2: COMPARE ALL KEYS

public local V get(K key) { Node[LINKS] row = nodes[hash(key)]; boolean[LINKS] selections = row @ compareKey(key); V[LINKS] vals = row @ getValueOrDefault(selections); return | ! vals; }

boolean[LINKS] selections = row @ compareKey(key);

row Node K V1 Node K V1

selections

falsetrue

keykey

Page 29: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

STEP 3: GET VALUES/ZEROS

public local V get(K key) { Node[LINKS] row = nodes[hash(key)]; boolean[LINKS] selections = row @ compareKey(key); V[LINKS] vals = row @ getValueOrDefault(selections); return | ! vals; }

V[LINKS] vals = row @ getValueOrDefault(selections);

row Node K V1 Node K V1

selections falsetrue

vals

V V

0

Page 30: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

STEP 4: OR-REDUCE FOR RESULT

public local V get(K key) { Node[LINKS] row = nodes[hash(key)]; boolean[LINKS] selections = row @ compareKey(key); V[LINKS] vals = row @ getValueOrDefault(selections); return | ! vals; }

vals

selections falsetrue

row Node K V1 Node K V1V V

0

return | ! vals;

V 0V

Page 31: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

VIRTUALIZATION OF DATA PARALLELISM

@ !

Page 32: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

CURRENT RESULTS

Page 33: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

HOW DO WE EVALUATE PERFORMANCE?• Speedup for Naïve Users

• How much faster than Java?

• Slowdown for Expert Users?

• How much slower than hand-tuned low-level code?

•Our methodology:

• Write/tune/compare 4 versions of each benchmark:

• Java, Lime, OpenCL, Verilog

• Doesn’t address flops/watt, flops/watt/$, productivity

Page 34: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

EXPERT VS NAÏVE SPEEDUP: KERNEL TIME (JAVA BASELINE)

Lime

Expert37x 193x 10x 150x

26x126x

GPU GPU FPGA FPGA

10x

92x

Page 35: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

Lime

Expert

EXPERT VS NAÏVE SPEEDUP: END-TO-END (JAVA BASELINE)

6.67x 136x 1.06x 1.0x

6.10x

66x

GPU GPU FPGA FPGA

1.06x

0.04x

Page 36: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

LIQUID METAL: SUMMARY

• Can we program HW with an object-oriented language?

• Yes we can!

• Steadily increasing feature set (e.g. dynamic allocation/GC)

•Many hurdles remain

• Quality of code, area, predictability, …

• FPGA tool flow, culture, and business model (vs. GPU)

•We’re hiring! Permanent staff, post-docs, and interns

Page 37: OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS … · 2011-05-17 · LIQUID METAL OBJECT-ORIENTED PROGRAMMING OF HETEROGENEOUS MACHINES Joshua Auerbach Perry Cheng Rodric Rabbah Christophe

Questions?