Parallel Programming with Models of Computation

Springer
Page 1 sur 44Lecteur de document UniversityLib

Parallel Programming with Models of Computation

Programming, Math, etc. · notes

Browse all programmation documents

Parallel programming with models

of computation

Prof. Dr.-Ing. Jeronimo Castrillon

Tunis, Tunisia. December 2-4, 2015

Chair for Compiler Construction

Georg-Schumann-Str. 7A, 2 OG

[email protected]

Agenda

09:00 AM

12:30 PM

14:00 PM

LB1-I

HO-I

LB2-I

break

LB2-I (cont)

break

LB2-II

HO-II

LB3-I

break

LB3-II

HO-III

LB4/Q&A

LB1-I

17:30 PM

2

© J. Castrillon. Parallel Programming

Lecture 4: KPN programming flow

Parallel programming with models of computation

Prof. Dr.-Ing. Jeronimo Castrillon

Tunis, Tunisia. December 2-4, 2015

Chair for Compiler Construction

Georg-Schumann-Str. 7A, 2 OG

[email protected]

Recall: Lecture 1--3

q The reason for parallelism, fundamentals and mainstream programming models

q Problems with compilers and task based programming models

q The formalisms of MoCs for parallel programming

q In this lecture

q An example of a tool flow for KPN (and its details)

4

© J. Castrillon. Parallel Programming

KPNs – Recall

q Graph representation of applications

q Processes communicate only over FIFO buffers

q Good model for streaming applications

q Good match for signal processing & multi-media

q Stereo digital audio filter

fft_l

filter_l

ifft_l

src

sink

fft_r

filter_r

ifft_r

P n Tran sfo rmSd fTo K p n (D,   S);

P n Tran sfo rmTo ArrayAccess(D,

C o l l ectC h an n el AccessR an ges(D,

S);

S);

P ro p agateC h an n el AccessR an g es(D,

S);

P n StreamFacto ry

streamFacto ry(B as eP a th );

{

swi tch (tran sTarget)

case Tran sM VP :

P n Tran sfo rmTemp l ateIn st an ti at e(D,

S);

EraseP n P ro cessTemp l ate s(D);

P n P ri n tFo rM VP (D,   S);

b reak;

case Tran sP th read :

P n Tran sfo rmP th read s(D,   S,   traces);

EraseP n Defs(D);

b reak;

case Tran sSystemC :

P ri n tFo rSystemC (D,   S,   traces,

streamFacto ry);

EraseP n Defs(D);

b reak;

case Tran sVP Utg:

P ri n tFo rVP Utg(D,   S,

streamFacto ry);

EraseP n Defs(D);

b reak;

case Tran sVP Umap :

P ri n tFo rVP Umap (D,   S,

strM ap p i n gFi l eName,

streamFacto ry);

EraseP n Defs(D);

b reak;

case Tran sIn val i d :

assert(fal se);

b reak;

}

}

5

© J. Castrillon. Parallel Programming

#i n cl u d e "P n Tran sfo rm.h "

#i n cl u d e "P n TVP Utg.h "

#i n cl u d e "P n TVP Umap .h "

#i n cl u d e "cl an g/AST/ASTC o n tex t.h "

#i n cl u d e "P n StreamFacto ry.h "

u si n g n amesp ace

cl an g;

vo i d

cl an g::P n Tran sfo rm(Tran sT arg et

tran sTarget,

b o o l traces,

co n st std ::stri n g &

strM ap p i n gFi l eName,

ASTC o n text

&C tx,

{

!=   Tran sIn val i d );

Sema   &S,   co n st

l l vm::sys::P ath   &B aseP ath )

assert(tran sTarget

Tran sl ati o n Un i tDecl

*D   =

C tx.getTran sl ati o n Un i tDecl();

P n Tran sfo rmSi zeo f(D,   S);

P n Tran sfo rmTask(D,

swi tch (tran sTarget)

case Tran sSystemC :

S);

{

case Tran sVP Utg:

case Tran sVP Umap :

P n TC o p yi n g(D,   S);

b reak;

d efau l t:

;

}

P n Tran sfo rmP th read s(D,   S,   traces);

EraseP n Defs(D);

b reak;

case Tran sSystemC :

P ri n tFo rSystemC (D,   S,   traces,

streamFacto ry);

EraseP n Defs(D);

b reak;

case Tran sVP Utg:

P ri n tFo rVP Utg(D,   S,

streamFacto ry);

EraseP n Defs(D);

b reak;

case Tran sVP Umap :

P ri n tFo rVP Umap (D,   S,

strM ap p i n gFi l eName,

streamFacto ry);

EraseP n Defs(D);

b reak;

case Tran sIn val i d :

assert(fal se);

b reak;

&B aseP ath )

{

!=   Tran sIn val i d );

assert(tran sTarget

Tran sl ati o n Un i tDecl

*D   =

C tx.getTran sl ati o n Un i tDecl();

P n Tran sfo rmSi zeo f(D,   S);

P n Tran sfo rmTask(D,

swi tch (tran sTarget)

case Tran sSystemC :

case Tran sVP Utg:

case Tran sVP Umap :

S);

{

P n TC o p yi n g(D,   S);

b reak;

d efau l t:

;

}

Programming flow: Overview

KPN Application

Architecture model

MEM

subsystem

DMAs,

sema-

phores

PMU

L1

A15

L1

A15

L2

A15

L1

A15

L1

VLIW DSP

Advertisement

L1,L2

NoC

Peripherals

Communication

support

HW queues

Network

Processor

Packet DMA

Analysis

Synthesis

Code generation

Non-functional

specification

Property models (timing,

energy, error, …)

6

© J. Castrillon. Parallel Programming

PNargs_ifft_r.ID = 6U;

PNargs_ifft_r.PNchannel_freq_coef = filtered_coef_right

PNargs_ifft_r.PNnum_freq_coef = 0U;

PNargs_ifft_r.PNchannel_time_coef = sink_right

PNargs_ifft_r.channel = 1;

sink_left = IPCllmrf_open(3, 1, 1);

sink_right = IPCllmrf_open(7, 1, 1);

PNargs_sink.ID = 7U;

PNargs_sink.PNchannel_in_left = sink_left

PNargs_sink.PNnum_in_left = 0U;

PNargs_sink.PNchannel_in_right = sink_right

PNargs_sink.PNnum_in_right = 0U;

taskParams.arg0 = (xdc_UArg)&PNargs_src

taskParams.priority = 1;

ti_sysbios_knl_Task_create((ti_sysbios_knl_Task_FuncPtr

&taskParams, &eb);

glob_proc_cnt++;

hasProcess = 1;

taskParams.arg0 = (xdc_UArg)&PNargs_fft_l

taskParams.priority = 1;

ti_sysbios_knl_Task_create((ti_sysbios_knl_Task_FuncPtr

ft_Templ, &taskParams, &eb);

glob_proc_cnt++;

hasProcess = 1;

taskParams.arg0 = (xdc_UArg)&PNargs_ifft_r

taskParams.priority = 1;

ti_sysbios_knl_Task_create((ti_sysbios_knl_Task_FuncPtr

fft_Templ, &taskParams, &eb);

glob_proc_cnt++;

hasProcess = 1;

taskParams.arg0 = (xdc_UArg)&PNargs_sink

taskParams.priority = 1;

Language: C for process networks

q FIFO Channels

typedef struct { int i; double d; } my_struct_t;

__PNchannel my_struct_t S;

__PNchannel int A = {1, 2, 3}; / Initialization /

__PNchannel short C[2], D[2], F[2], G[2];

q Processes & networks

__PNkpn AudioAmp __PNin(short A[2]) __PNout(short B[2])

__PNparam(short boost){

while (1)

__PNin(A) __PNout(B) {

for (int i = 0; i < 2; i++)

B[i] = A[i]*boost;

}}

__PNprocess Amp1 = AudioAmp __PNin(C) __PNout(F) __PNparam(3);

__PNprocess Amp2 = AudioAmp __PNin(D) __PNout(G) __PNparam(10);

[Sheng14]

7

© J. Castrillon. Parallel Programming

Architecture model

q System model including:

q Topology, interconnect, memories

q Computation: cost tables (as backup)

q Communication: cost function (no contention)

q Example: Texas Instruments Keystone

8

© J. Castrillon. Parallel Programming

[Oden13]

Architecture model: Communication

q Piecewise curve-fitting from measurements

9

© J. Castrillon. Parallel Programming

[Oden13]

Architecture model: Communication (2)

q Models for Network on Chips (NoC)

q Channels can be mapped to

q Local scratchpad (producer or consumer)

q Global SDRAM

Cost model & measurement

2 (cid:13)0 0 0

1 (cid:13)5 0 0

1 (cid:13)0 0 0

(cid:84)

(cid:70)

(cid:77)

(cid:68)

(cid:90)

(cid:68)

5 0 0

0

0

(cid:56)(cid:83)(cid:74)(cid:85)(cid:70) (cid:85)(cid:80) (cid:84)(cid:68)(cid:83)(cid:66)(cid:85)(cid:68)(cid:73)(cid:81)(cid:66)(cid:69)

(cid:51)(cid:70)(cid:66)(cid:69) (cid:71)(cid:83)(cid:80)(cid:78) (cid:84)(cid:68)(cid:83)(cid:66)(cid:85)(cid:68)(cid:73)(cid:81)(cid:66)(cid:69)

(cid:56)(cid:83)(cid:74)(cid:85)(cid:70) (cid:85)(cid:80) (cid:51)(cid:34)(cid:46)

(cid:51)(cid:70)(cid:66)(cid:69) (cid:71)(cid:83)(cid:80)(cid:78) (cid:51)(cid:34)(cid:46)

Static access costs

114

140

(cid:45)(cid:80)(cid:68)(cid:66)(cid:77)(cid:77)(cid:90) (cid:68)(cid:80)(cid:79)(cid:84)(cid:86)(cid:78)(cid:70) (cid:85)(cid:80)(cid:76)(cid:70)(cid:79)

(cid:45)(cid:80)(cid:68)(cid:66)(cid:77)(cid:77)(cid:90) (cid:81)(cid:83)(cid:80)(cid:69)(cid:86)(cid:68)(cid:70) (cid:85)(cid:80)(cid:76)(cid:70)(cid:79)

(cid:51)(cid:70)(cid:78)(cid:80)(cid:85)(cid:70)(cid:77)(cid:90) (cid:68)(cid:80)(cid:79)(cid:84)(cid:86)(cid:78)(cid:70) (cid:85)(cid:80)(cid:76)(cid:70)(cid:79)

(cid:51)(cid:70)(cid:78)(cid:80)(cid:85)(cid:70)(cid:77)(cid:90) (cid:81)(cid:83)(cid:80)(cid:69)(cid:86)(cid:68)(cid:70) (cid:85)(cid:80)(cid:76)(cid:70)(cid:79)

[Arnold13]

203

229

1 (cid:13)0 2 4

2 (cid:13)0 4 8

3 (cid:13)0 7 2

4 (cid:13)0 9 6

5 (cid:13)1 2 0

6 (cid:13)1 4 4

7 (cid:13)1 6 8

8 (cid:13)1 9 2

0

5 0

1 0 0

1 5 0

2 0 0

2 5 0

(cid:67)(cid:90)(cid:85)(cid:70)(cid:84)

(cid:68)(cid:90)(cid:68)(cid:77)(cid:70)(cid:84)

10

© J. Castrillon. Parallel Programming

hs-serialhs-serialhs-serialhs-serialhs-serialparallelRouter(1,0)FPGA-InterfaceRouter(1,1)Router(0,1)Router(0,0)Duo-PE0Duo-PE1FECDuo-PE2SDDuo-PE6Duo-PE7Duo-PE5Duo-PE3CMADPLL, PMGTADPLL, PMGTADPLL, PMGTAVS Contr.UART-GPIOADPLL, PMGTADPLL, PMGTADPLL, PMGTADPLL, PMGTADPLL, PMGTADPLL, PMGTADPLL, PMGTADPLL, PMGTADPLLADPLLDDR-SDRAM-InterfaceTomahawk2_coreAPPDuo-PE4ADPLL, PMGTVDSPRISCVDSPRISCVDSPRISCVDSPRISCVDSPRISCVDSPRISCVDSPRISCADPLL, PMGTVDSPRISCConstraints

q Timing constraints

q Process throughput

q Latencies along paths

q Time triggering

q Mapping constraints

q Processes to processors

q Channels to primitives

q Platform constraints

3 ms

1 ms

1 ms

q Subset of resources (processors or memories)

q Utilization

11

© J. Castrillon. Parallel Programming

Algorithmic description

q Extended application specification

q Selected processes are algorithmic kernels with algorithmic parameters

q Extended platform model

q SW/HW accelerated kernels and their implementation parameters

FFT HW

ACC

Points Data

format

12

© J. Castrillon. Parallel Programming

Types & parameters

Latency equations

Interfacing

[Castrill10, Castrill11]

Analysis and synthesis: Overview

CPN

application

Analysis: Instrumentation,

profiling, tracing

Sequential performance

estimation

Time-annotated traces

Architecture

model

Mapping and

scheduling

Parallel perf.

estimation

Mapping

configuration

Non-functional

specification

Increase resources

13

© J. Castrillon. Parallel Programming

Tracing: Dealing with dynamic behavior

q KPNs do not have firing semantics

q White model of processes: source code analysis and tracing

q Tracing: instrumentation, token logging and event recording

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

Advertisement

Elapsed time

between events?

14

© J. Castrillon. Parallel Programming

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

Sequential performance estimation

q Fine-grained: Sometimes within code

basic-blocks

q IR-level instrumentation

q Cost tables for different architectures

q Execution count in between events

q Advanced: Emulate effect of target

compilers and back annotate to IR

15

© J. Castrillon. Parallel Programming

Sequential performance estimation (2)

q Processor models

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

[Eusse14]

16

© J. Castrillon. Parallel Programming

Execution counts, branch stats and execution traces

Processor performance models: Results

± 15%  Error

Average gain:

248x (PD-RISC)

67x (TI DSPs)

(CA vs. profiling + estimation time)

[Eusse14]

17

© J. Castrillon. Parallel Programming

Courtesy: J. Eusse

Parallel performance estimation

Mapping

configuration

Time-annotated traces

Trace Replay

Module

(TRM)

t

t

t

Architecture

model

Context

switch

Blocked

time

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

...

Resources

t

Grantt Chart, platform utilization,

channel profiles, ...

q Discrete event simulator to evaluate a solution

q Replay traces according to mapping

q Extract costs from architecture file (NoC modeling, context switches, communication)

18

© J. Castrillon. Parallel Programming

Trace-based synthesis

Non-functional

specification

Time-annotated traces

Mapping,

scheduling,

buffer sizing

Mapping

configuration

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

t

t

t

Architecture

model

[Castrill10b, Castrill13]

q Synthesis based on code and trace analysis (using simple heuristics)

q Mapping of processes and channels

q Scheduling policies

q Buffer sizing

19

© J. Castrillon. Parallel Programming

Trace-based algorithms

q Event traces can be represented as large dependence graphs

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

Blocking read

Blocking write, size(chan. 2) = 1

Blocking write, size(chan. 2) = 2

20

© J. Castrillon. Parallel Programming

Trace-based algorithms (2)

q Event traces can be represented as large dependence graphs

q Possible to reason about

q Channel sizes and memory allocation

q Mapping and scheduling onto heterogeneous processors

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

...

......

21

© J. Castrillon. Parallel Programming

size(chan. 2) = 2, size(chan. 1,3) = 1

...

Dealing with heterogeneity: group-based mapping (GBM)

1) Initialize: All to all

2) Select element: Trace

graph critical path

3) Reduce group

4) Assess & propagate

5) Quasi-homogeneous

22

© J. Castrillon. Parallel Programming

[Castrill12]

Mapping for HW accelerators

q Not only mapping but also configuration

q Match algorithmic parameters with implementation parameters

q Adjust synchronization and communication protocols

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

Algorithm library

Plain code

Plain code

.

.

.

.

.

.

.

.

.

[Castrill10, Castrill11]

Platform model + characterization of special components

N: Algorithmic actors

F: Existing implementation in target platform

23

© J. Castrillon. Parallel Programming

Multiple traces

q Different input à different behavior (traces)

q Characterize behaviors and impact on mapping performance

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

...

...

...

Mapping

configuration

Mapping

configuration

Mapping

configuration

[Goens15]

24

© J. Castrillon. Parallel Programming

Advertisement

Multiple traces (2)

q Different input à different behavior (traces)

q Characterize behaviors and impact on mapping performance

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

)

g

o

l

(

n

o

i

t

u

l

o

v

E

[Goens15]

25

Behavior

© J. Castrillon. Parallel Programming

...

...

...

Mapping

configuration

Mapping

configuration

Mapping

configuration

Multiple traces (3)

q Behavior difference as metric in trace/history monoid

1.9

Random KPNs: Slow down w.r.t.

optimum vs. trace distance

à No correlation

1.8

JPEG application:

Observed trace groups

140

d

d

d

1

2

1

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

d

1d

2

d

1

r

o

t

c

a

F

n

w

o

d

w

o

S

l

1.7

1.6

1.5

1.4

1.3

1.2

1.1

1

[Goens15]

26

s

e

c

a

r

T

f

o

r

e

b

m

u

N

120

100

80

60

40

20

0

0

0.5

0.6

0.7

0.8

0.9

1

Normalized Trace Distance

© J. Castrillon. Parallel Programming

0.5

1

1.5

2

Trace Distance Normalized with d(0,ref)

Increasing resources

q Add resources to the synthesis until constraints are met

Mapping and

scheduling

Parallel perf.

estimation

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

Increase resources

q Add processors and memories

q Easy for homogeneous platforms

q Non trivial for heterogeneous platforms

27

© J. Castrillon. Parallel Programming

Increasing resources: Exploit symmetries

q Identify mapping equivalent classes due to HW symmetries

?

=

Tracing

Mapping

Seq. perf.

estimation

Par. perf.

estimation

Resources

[Goens15]

q Do not evaluate equivalent mappings

q Reduce search space when adding resources

q Multiple traces (revisit)

q Random traces: 5 out of 83 classes account for

50% of all optimal mappings

q Application to multi-application analysis

28

© J. Castrillon. Parallel Programming

Code generation

CPN

application

Mapping

configuration

Code generation

Architecture

model

PNargs_ifft_r.ID = 6U;

PNargs_ifft_r.PNchannel_freq_coef = filtered_coef_right;

PNargs_ifft_r.PNnum_freq_coef = 0U;

PNargs_ifft_r.PNchannel_time_coef = sink_right;

PNargs_ifft_r.channel = 1;

sink_left = IPCllmrf_open(3, 1, 1);

sink_right = IPCllmrf_open(7, 1, 1);

PNargs_sink.ID = 7U;

PNargs_sink.PNchannel_in_left = sink_left;

PNargs_sink.PNnum_in_left = 0U;

PNargs_sink.PNchannel_in_right = sink_right;

PNargs_sink.PNnum_in_right = 0U;

taskParams.arg0 = (xdc_UArg)&PNargs_src;

taskParams.priority = 1;

...

Debugging info

q Take mapping configuration and generate code accordingly

q From architecture model: APIs, configuration parameters, …

29

© J. Castrillon. Parallel Programming

Nucleus programming flow: Code generation

q Bare-metal implementation

cpn-cc (target)

C code for

non-nuclei

Control+config

(HW flavors)

Advertisement

Flavor config

(SW flavors)

C compiler 1

C compiler 1

0x0 def 0x8

0x4 def 0x1000

...

0x- MAC R1,R2,R3

...

Configured

SW flavors

int main() {

...

fft_cfg(...);

...

while (1) {

...

}}

Control code

Linker 2

Linker 1

SW-Flavor

(unconfigured)

0x0 def $STRIDE$

0x4 def $BASE$

...

0x- MAC R1,R2,R3

...

...

Flavor library

30

© J. Castrillon. Parallel Programming

Debugging with virtual platforms

q Interactive debugging

q Get snapshots of the system state

q Full system stop

q Track progress irrespective of mapping

OS-descriptor

Debugging info

Debugging layer

Internal state of the MPSoC schedule:

assigned, blocked and running tasks

31

© J. Castrillon. Parallel Programming

[Castrill11]

Virtual platform

Debugging with virtual platforms (2)

q Deterministic replay and automatic bug exploration

32

[Murillo14]

© J. Castrillon. Parallel Programming

Evaluation and results

q Virtual platforms: SystemC models of full systems

q Explore heterogeneous architectures

q Easier to integrated state-of-the-art accelerators

q Configurable accuracy

q Real platforms for validation

q Speedup on commercial platforms

q Code generation against vendor stacks

33

© J. Castrillon. Parallel Programming

Example: multi-media applications

q Platform: 2 RISCs, 4 VLIW, 7 Memories

34

© J. Castrillon. Parallel Programming

Example: multi-media applications (2)

q Dealing with real-time constraints

Tool: ~1 min. for LP-AF, ~7 min. for MJPEG

Sim.: ~6 days for LP-AF, ~24 for MJPEG ~10 days (~x103)

~10 min.

35

© J. Castrillon. Parallel Programming

Example: With HW acceleration

q Application: MIMO OFDM receiver

q Hardware

q Platform 1: Baseline software

q Platform 2: Optimized software

q Platform 3: Optimized SW + HW

Achieved rate @ 100 MHz

1758241,75

8

7680

128000

)

s

p

b

(

e

t

a

R

1,00E+06

1,00E+04

1,00E+02

1,00E+00

1)

bsp1 (sw,

unoptimized)

2)

bsp2 (sw,

optimized)

3)

bsp3 (hw)

ARM

src

sink

Mem

VLIW VLIW VLIW

Library 1: SW

implementations

Library 2: SW

optimized

ARM

src

sink

MemMem

Mem

Demap

Library 3:

SW+HW accel.

Custom Interconnect

VLIW

FFT

FFT

Viterbi

36

© J. Castrillon. Parallel Programming

Manual vs. Automatic: TI Keystone

Image processing

Audio filtering application

[Aguilar14]

37

© J. Castrillon. Parallel Programming

LTE digital

receiver

TRM vs. Actual execution: TI Keystone

Makespan error < 20% (Avg. 7%)

Speedup error < 8% (Avg. 5%)

38

© J. Castrillon. Parallel Programming

Other topics and further reading

q Impact on resource management and HW-support

q Dealing with adaptability and energy efficiency

q Dealing with multiple applications

q Better support for multiple traces

q …

39

© J. Castrillon. Parallel Programming

References

[Castrill14] J. Castrillon , et al., “Programming Heterogeneous MPSoCs: Tool Flows to Close the Software Productivity Gap”, Springer, 2014

[Castrill09] J. Castrillon, et al., “Task management in MPSoCs: an ASIP approach”, Proceedings of ICCAD '09, IEEE/ACM, 2009, 587-594

[Awile13] O. Awile, et al., “A Domain-Specific Programming Language for Particle Simulations on Distributed-Memory Parallel Computers”, In Proc. III Intl. Conference on

Particle-based Methods, 2013

[Karol15] S. Karol, et al. “Towards a Next-Generation Parallel Particle-Mesh Language, in Domain-Specific Language Design and Implementation”, (DSLDI). July 2015

[Rink15] N. A. Rink, “Compiling for Resilience: the Performance Gap”, in Proceedings of the Mini-Symposium on Energy and Resilience in Parallel Programming (ERPP),

Sept. 2015.

[Sheng14] W. Sheng, et al., “A compiler infrastructure for embedded heterogeneous MPSoCs”, Parallel Comput. 40, 2, 51-68, 2014

[Oden13] M. Odendahl, et al., “Split-cost communication model for improved MPSoC application mapping”, In International Symposium on System on Chip pp. 1-8, 2013

[Arnold13] O. Arnold, et al. “Tomahawk - Parallelism and Heterogeneity in Communications Signal Processing MPSoCs”. TECS, 2013

[Castrill10] J. Castrillon, , et al., “Component-based waveform development: The nucleus tool flow for efficient and portable SDR,” Wireless Innovation Conference and

Product Exposition (SDR), 2010

[Castrill11] J. Castrillon, , et al., “Component-based waveform development: The nucleus tool flow for efficient and portable software defined radio”, Analog Integrated

Circuits and Signal Processing, vol. 69, no. 2–3, pp. 173–190, 2011

[Eusse14] J.F. Eusse, , et al., "Pre-architectural performance estimation for ASIP design based on abstract processor models," In SAMOS 2014 pp.133-140, 2014

[Castrill10b] J. Castrillon, et al., “Trace-based KPN composability analysis for mapping simultaneous applications to MPSoC platforms”, In DATE 2010, pp. 753-758

[Castrill13] J. Castrillon, et al., “MAPS: Mapping concurrent dataflow applications to heterogeneous MPSoCs,” IEEE Transactions on Industrial Informatics, vol. 9, 2013

[Castrill12] J. Castrillon, et al. , “Communication-aware mapping of KPN applications onto heterogeneous MPSoCs,” in DAC 2012

[Goens15] A. Goens, et al., “Analysis of Process Traces for Mapping Dynamic KPN Applications to MPSoCs”, In IFIP International Embedded Systems Symposium (IESS),

2015, Foz do Iguaçu, Brazil (Accepted for publication), 2015

[Aguilar14] M. Aguilar, et al., "Improving performance and productivity for software development on TI Multicore DSP platforms," in Education and Research Conference

(EDERC), 2014 6th European Embedded Design in , vol., no., pp.31-35, 11-12 Sept. 2014

40

© J. Castrillon. Parallel Programming

Course summary

41

© J. Castrillon. Parallel Programming

About this course

Parallel programming with models of computation

q Structure: Four lecture blocks and exercises + final exam

q Lecture blocks

q Introduction to parallel programming

q Compilers and task-based programming models

q Models of Computation & Dataflow

q KPN programming flow

q Exercises

q Different tools/frameworks (some not available, dependency on your system)

q Little guidance à Allow exploration

q Skeletons for some exercises will be provided

42

© J. Castrillon. Parallel Programming

About the exam…

43

© J. Castrillon. Parallel Programming

Thanks!

Questions?