Parallel Programming with SystemC for Loosely Timed Models: A - - PowerPoint PPT Presentation

parallel programming with systemc for loosely timed
SMART_READER_LITE
LIVE PREVIEW

Parallel Programming with SystemC for Loosely Timed Models: A - - PowerPoint PPT Presentation

Related Work jTLM, Tasks with Duration sc-during Conclusion Parallel Programming with SystemC for Loosely Timed Models: A Non-Intrusive Approach Matthieu Moy Grenoble University / Verimag France DATE, March 19 th 2013 DATE, March 19 th 2013


slide-1
SLIDE 1

Related Work jTLM, Tasks with Duration sc-during Conclusion

Parallel Programming with SystemC for Loosely Timed Models: A Non-Intrusive Approach

Matthieu Moy

Grenoble University / Verimag France

DATE, March 19th 2013

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 1 / 22 >

slide-2
SLIDE 2

Related Work jTLM, Tasks with Duration sc-during Conclusion

Modern Systems-on-a-Chip

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 2 / 22 >

slide-3
SLIDE 3

Related Work jTLM, Tasks with Duration sc-during Conclusion

Modern Systems-on-a-Chip

Software Hardware

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 2 / 22 >

slide-4
SLIDE 4

Related Work jTLM, Tasks with Duration sc-during Conclusion

Transaction-Level Modeling

(Fast) simulation essential in the design-flow

◮ To write/debug software ◮ To validate architectural choices ◮ As reference for hardware verification Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 3 / 22 >

slide-5
SLIDE 5

Related Work jTLM, Tasks with Duration sc-during Conclusion

Transaction-Level Modeling

(Fast) simulation essential in the design-flow

◮ To write/debug software ◮ To validate architectural choices ◮ As reference for hardware verification

Transaction-Level Modeling (TLM):

◮ High level of abstraction ◮ Suitable for Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 3 / 22 >

slide-6
SLIDE 6

Related Work jTLM, Tasks with Duration sc-during Conclusion

Transaction-Level Modeling

(Fast) simulation essential in the design-flow

◮ To write/debug software ◮ To validate architectural choices ◮ As reference for hardware verification

Transaction-Level Modeling (TLM):

◮ High level of abstraction ◮ Suitable for

Industry Standard = SystemC/TLM

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 3 / 22 >

slide-7
SLIDE 7

Related Work jTLM, Tasks with Duration sc-during Conclusion

Transaction-Level Modeling

(Fast) simulation essential in the design-flow

◮ To write/debug software ◮ To validate architectural choices ◮ As reference for hardware verification

Transaction-Level Modeling (TLM):

◮ High level of abstraction ◮ Suitable for

Industry Standard = SystemC/TLM Issue: SystemC has co-routine semantics ⇒ hard to exploit host parallelism.

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 3 / 22 >

slide-8
SLIDE 8

Related Work jTLM, Tasks with Duration sc-during Conclusion

Outline

1

Existing Parallelization Approaches

2

jTLM, Tasks with Duration

3

sc-during: duration in SystemC

4

Conclusion

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 3 / 22 >

slide-9
SLIDE 9

Related Work jTLM, Tasks with Duration sc-during Conclusion

Issues and Solutions for Parallelization

1

Preserve SystemC scheduling semantics

2

Avoid introducing data-races (e.g. i++ on shared variable)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 4 / 22 >

slide-10
SLIDE 10

Related Work jTLM, Tasks with Duration sc-during Conclusion

Issues and Solutions for Parallelization

1

Preserve SystemC scheduling semantics

(a) Parallelization within instant/δ-cycle (b) Optimistic approaches: require specific coding style

2

Avoid introducing data-races (e.g. i++ on shared variable)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 4 / 22 >

slide-11
SLIDE 11

Related Work jTLM, Tasks with Duration sc-during Conclusion

Issues and Solutions for Parallelization

1

Preserve SystemC scheduling semantics

(a) Parallelization within instant/δ-cycle (b) Optimistic approaches: require specific coding style

2

Avoid introducing data-races (e.g. i++ on shared variable)

(c) Assume no shared variables (d) Semantics-preserving: don’t run two processes accessing the same variables

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 4 / 22 >

slide-12
SLIDE 12

Related Work jTLM, Tasks with Duration sc-during Conclusion

Issues and Solutions for Parallelization

1

Preserve SystemC scheduling semantics

(a) Parallelization within instant/δ-cycle (b) Optimistic approaches: require specific coding style

2

Avoid introducing data-races (e.g. i++ on shared variable)

(c) Assume no shared variables (d) Semantics-preserving: don’t run two processes accessing the same variables

Most approaches work for RTL/cycle-accurate:

◮ Clocks ⇒ many processes executing at the same time (a) ◮ sc_signal ⇒ avoids shared variables (c) Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 4 / 22 >

slide-13
SLIDE 13

Related Work jTLM, Tasks with Duration sc-during Conclusion

Issues and Solutions for Parallelization

1

Preserve SystemC scheduling semantics

(a) Parallelization within instant/δ-cycle (b) Optimistic approaches: require specific coding style

2

Avoid introducing data-races (e.g. i++ on shared variable)

(c) Assume no shared variables (d) Semantics-preserving: don’t run two processes accessing the same variables

Most approaches work for RTL/cycle-accurate:

◮ Clocks ⇒ many processes executing at the same time (a) ◮ sc_signal ⇒ avoids shared variables (c)

Problems with loosely timed TLM:

◮ Loose timing ⇒ few processes runnable at the same time (a) ◮ Communication using function calls ⇒ many shared variables (c) ◮ Few wait statements ⇒ 1 SystemC transition touches many

variables (d)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 4 / 22 >

slide-14
SLIDE 14

Related Work jTLM, Tasks with Duration sc-during Conclusion

Our Approach: SC-DURING

Goals:

◮ Efficient for loosely timed SystemC/TLM ◮ Existing code should continue working ◮ Work with any SystemC implementation

Principle:

◮ Library (adds constructs, feel free not to use them) ◮ Notion of duration

Source of inspiration: jTLM (Java simulator)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 5 / 22 >

slide-15
SLIDE 15

Related Work jTLM, Tasks with Duration sc-during Conclusion

Outline

1

Existing Parallelization Approaches

2

jTLM, Tasks with Duration

3

sc-during: duration in SystemC

4

Conclusion

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 5 / 22 >

slide-16
SLIDE 16

Related Work jTLM, Tasks with Duration sc-during Conclusion

(Simulated) Time in SystemC and jTLM

SystemC jTLM A B P Q

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 6 / 22 >

slide-17
SLIDE 17

Related Work jTLM, Tasks with Duration sc-during Conclusion

(Simulated) Time in SystemC and jTLM

SystemC jTLM A B P Q Process A: // computation f(); // time taken by f wait(20, SC_NS);

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 6 / 22 >

slide-18
SLIDE 18

Related Work jTLM, Tasks with Duration sc-during Conclusion

(Simulated) Time in SystemC and jTLM

SystemC jTLM A B P Q Process A: // computation f(); // time taken by f wait(20, SC_NS); f() wait(20)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 6 / 22 >

slide-19
SLIDE 19

Related Work jTLM, Tasks with Duration sc-during Conclusion

(Simulated) Time in SystemC and jTLM

SystemC jTLM A B P Q Process A: // computation f(); // time taken by f wait(20, SC_NS); f() wait(20) Process P: g(); awaitTime(20); g() awaitTime

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 6 / 22 >

slide-20
SLIDE 20

Related Work jTLM, Tasks with Duration sc-during Conclusion

(Simulated) Time in SystemC and jTLM

SystemC jTLM A B P Q Process A: // computation f(); // time taken by f wait(20, SC_NS); f() wait(20) Process P: g(); awaitTime(20); consumesTime(15) { h(); } g() awaitTime h()

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 6 / 22 >

slide-21
SLIDE 21

Related Work jTLM, Tasks with Duration sc-during Conclusion

(Simulated) Time in SystemC and jTLM

SystemC jTLM A B P Q Process A: // computation f(); // time taken by f wait(20, SC_NS); f() wait(20) Process P: g(); awaitTime(20); consumesTime(15) { h(); } g() awaitTime h() i() j()

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 6 / 22 >

slide-22
SLIDE 22

Related Work jTLM, Tasks with Duration sc-during Conclusion

Execution of consumesTime(T)

Slow computation

Simulated time

10 20 30 40

Wall-clock time Task starts Simulated time blocked Task finishes

Fast computation

Simulated time

10 20 30 40

Wall-clock time Task starts Computation ends Task finishes Rest of the platform drives time idle

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 7 / 22 >

slide-23
SLIDE 23

Related Work jTLM, Tasks with Duration sc-during Conclusion

Parallelization

P1 P2 P3 P4 jTLM’s Semantics Simultaneous tasks run in parallel

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 8 / 22 >

slide-24
SLIDE 24

Related Work jTLM, Tasks with Duration sc-during Conclusion

Parallelization

P1 P2 P3 P4 jTLM’s Semantics Simultaneous tasks run in parallel Non-simultaneous tasks don’t

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 8 / 22 >

slide-25
SLIDE 25

Related Work jTLM, Tasks with Duration sc-during Conclusion

Parallelization

P1 P2 P3 P4 jTLM’s Semantics Simultaneous tasks run in parallel Non-simultaneous tasks don’t Overlapping tasks do

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 8 / 22 >

slide-26
SLIDE 26

Related Work jTLM, Tasks with Duration sc-during Conclusion

Outline

1

Existing Parallelization Approaches

2

jTLM, Tasks with Duration

3

sc-during: duration in SystemC

4

Conclusion

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 8 / 22 >

slide-27
SLIDE 27

Related Work jTLM, Tasks with Duration sc-during Conclusion

jTLM is cool ...

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 9 / 22 >

slide-28
SLIDE 28

Related Work jTLM, Tasks with Duration sc-during Conclusion

jTLM is cool ... ... but nobody will use it.

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 9 / 22 >

slide-29
SLIDE 29

Related Work jTLM, Tasks with Duration sc-during Conclusion

jTLM is cool ... ... but nobody will use it.

⇒ Implement the duration idea in SystemC:

◮ Keep the SystemC scheduler ◮ let SystemC processes delegate computation to a separate thread Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 9 / 22 >

slide-30
SLIDE 30

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Sketch of Implementation

void during(sc_core::sc_time duration, boost::function<void()> routine) {

boost::thread t(routine); // create thread

sc_core::wait(duration); // let SystemC execute

t.join(); // wait for thread completion } A B C thread

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 10 / 22 >

slide-31
SLIDE 31

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Sketch of Implementation

void during(sc_core::sc_time duration, boost::function<void()> routine) {

boost::thread t(routine); // create thread

sc_core::wait(duration); // let SystemC execute

t.join(); // wait for thread completion } A B C thread during(5, f);

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 10 / 22 >

slide-32
SLIDE 32

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Sketch of Implementation

void during(sc_core::sc_time duration, boost::function<void()> routine) {

boost::thread t(routine); // create thread

sc_core::wait(duration); // let SystemC execute

t.join(); // wait for thread completion } A B C thread

during(5, f); create thread routine

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 10 / 22 >

slide-33
SLIDE 33

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Sketch of Implementation

void during(sc_core::sc_time duration, boost::function<void()> routine) {

boost::thread t(routine); // create thread

sc_core::wait(duration); // let SystemC execute

t.join(); // wait for thread completion } A B C thread

during(5, f); create thread routine

➁ wait(d)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 10 / 22 >

slide-34
SLIDE 34

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Sketch of Implementation

void during(sc_core::sc_time duration, boost::function<void()> routine) {

boost::thread t(routine); // create thread

sc_core::wait(duration); // let SystemC execute

t.join(); // wait for thread completion } A B C thread

during(5, f); create thread routine

➁ wait(d)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 10 / 22 >

slide-35
SLIDE 35

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Sketch of Implementation

void during(sc_core::sc_time duration, boost::function<void()> routine) {

boost::thread t(routine); // create thread

sc_core::wait(duration); // let SystemC execute

t.join(); // wait for thread completion } A B C thread

during(5, f); create thread routine

➁ wait(d)

join thread

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 10 / 22 >

slide-36
SLIDE 36

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Sketch of Implementation

void during(sc_core::sc_time duration, boost::function<void()> routine) {

boost::thread t(routine); // create thread

sc_core::wait(duration); // let SystemC execute

t.join(); // wait for thread completion } A B C thread

during(5, f); create thread routine

➁ wait(d)

join thread

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 10 / 22 >

slide-37
SLIDE 37

Related Work jTLM, Tasks with Duration sc-during Conclusion

Wait ... are you saying that parallelization is just about fork/join?

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 11 / 22 >

slide-38
SLIDE 38

Related Work jTLM, Tasks with Duration sc-during Conclusion

Wait ... are you saying that parallelization is just about fork/join?

Well, sometimes it is ...

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 11 / 22 >

slide-39
SLIDE 39

Related Work jTLM, Tasks with Duration sc-during Conclusion

When Things are Easy: Pure Function Before

compute_in_systemc(); // my profiler says it’s // performance critical. // does not communicate // with other processes. big_computation(); wait(10, SC_MS); next_computation();

After

compute_in_systemc(); // Won’t be a performance // bottleneck anymore during(10, SC_MS, big_computation); next_computation();

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 12 / 22 >

slide-40
SLIDE 40

Related Work jTLM, Tasks with Duration sc-during Conclusion

Wait ... are you saying that parallelization is just about fork/join?

Well, sometimes it is ...

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 13 / 22 >

slide-41
SLIDE 41

Related Work jTLM, Tasks with Duration sc-during Conclusion

Wait ... are you saying that parallelization is just about fork/join?

Well, sometimes it is ... ... and sometimes it isn’t

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 13 / 22 >

slide-42
SLIDE 42

Related Work jTLM, Tasks with Duration sc-during Conclusion

Wait ... are you saying that parallelization is just about fork/join?

Well, sometimes it is ... ... and sometimes it isn’t: Time synchronization: make sure things are executed at the right simulated time Data/scheduler synchronization: avoid data-race between tasks, processes and the SystemC scheduler.

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 13 / 22 >

slide-43
SLIDE 43

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Synchronization

extra_time(t): increase current task duration P wait(5) initial duration extra time

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 14 / 22 >

slide-44
SLIDE 44

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Synchronization

extra_time(t): increase current task duration P wait(5) initial duration extra time catch_up(t): block task until SystemC’s time reaches the end of the current task while (!c) { extra_time(10, SC_NS); catch_up(); // ensures fairness }

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 14 / 22 >

slide-45
SLIDE 45

Related Work jTLM, Tasks with Duration sc-during Conclusion

extra_time(): Sketch of Implementation

SystemC side: void during(duration, routine) { end = now() + duration; boost::thread t(routine); // used to be just sc_core::wait(duration) while (now() != end) sc_core::wait(end - now()); t.join(); }

SC-DURING task side:

void extra_time(duration) { end += duration; } void catch_up() { while (now() != end) // avoid busy-waiting condition.wait(); }

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 15 / 22 >

slide-46
SLIDE 46

Related Work jTLM, Tasks with Duration sc-during Conclusion

Temporal decoupling and SC-DURING Plain SystemC

f(); // instead of wait(42) t_local += 42; g(); t_local += 12; // Re-synchronize with // SystemC time wait(t_local); t_local = 0; i();

Inside SC-DURING tasks

f(); // instead of wait(42) extra_time(42); g(); extra_time(12); // Re-synchronize with // SystemC time catch_up(); i();

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 16 / 22 >

slide-47
SLIDE 47

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): be cooperative for a while

sc_call(f): call function f in the context of SystemC e.notify(); // Forbidden in during tasks sc_call("e.notify()"); // OK (modulo syntax) sc_call("i++"); // implicit big lock, // no data-race

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 17 / 22 >

slide-48
SLIDE 48

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f);

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-49
SLIDE 49

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f); create thread wait(d or sync_ev)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-50
SLIDE 50

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f); create thread wait(d or sync_ev)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-51
SLIDE 51

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f); create thread wait(d or sync_ev) sc_call(g)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-52
SLIDE 52

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f); create thread wait(d or sync_ev) sc_call(g) notify sync_ev g

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-53
SLIDE 53

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f); create thread wait(d or sync_ev) sc_call(g) notify sync_ev g

sc_call_f

= 0

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-54
SLIDE 54

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f); create thread wait(d or sync_ev) sc_call(g) notify sync_ev g

sc_call_f

= 0 wait

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-55
SLIDE 55

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call(): Sketch of Implementation

A B C thread during(5, f); create thread wait(d or sync_ev) sc_call(g) notify sync_ev g

sc_call_f

= 0 wait join thread

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 18 / 22 >

slide-56
SLIDE 56

Related Work jTLM, Tasks with Duration sc-during Conclusion

sc_call: Sketch of Implementation

void during(duration, f) { end = now() + duration; boost::thread t(f); while (now() != end) { // wait sync_ev // with timeout: sc_core::wait (sync_ev,// <-- end - now()); if (sc_call_f) { sc_call_f();// <-- sc_call_f = 0; condition.notify(); } } t.join(); } void sc_call(f) { sc_call_f = f; // Implemented // with SystemC 2.3’s // async_request_update() async_notify_event (sync_ev); while(sc_call_f != 0) { condition.wait(); } }

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 19 / 22 >

slide-57
SLIDE 57

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Actual Implementation

SC_THREAD_1 SC_THREAD_2 . . . SC_THREAD_N sync_task_1 OS thread_1 sync_task_2 OS thread_2 sync_task_N OS thread_N SystemC OS Threads Possible strategies: SEQ Sequential (= reference) THREAD Thread created/destroyed each time POOL Pre-allocated worker threads pool ONDEMAND Thread created on demand and reused later

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 20 / 22 >

slide-58
SLIDE 58

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Results

2 4 6 8 10 12 14 10 20 30 40 50 60

Speedup Number of CPU in the platform

thread, during_quant thread, during_sync

  • ndemand, during_quant
  • ndemand, during_sync

Loosely-Timed Models Fine-grain Timing Test machine has 4 × 12 = 48 cores

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 21 / 22 >

slide-59
SLIDE 59

Related Work jTLM, Tasks with Duration sc-during Conclusion

Outline

1

Existing Parallelization Approaches

2

jTLM, Tasks with Duration

3

sc-during: duration in SystemC

4

Conclusion

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 21 / 22 >

slide-60
SLIDE 60

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Conclusion

New way to express concurrency in the platform Allows parallel execution of loosely-timed (clockless) systems Future work: performance optimizations (e.g. atomic operations + polling instead of system calls)

Try it:

https://forge.imag.fr/projects/sc-during/

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 22 / 22 >

slide-61
SLIDE 61

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Conclusion

New way to express concurrency in the platform Allows parallel execution of loosely-timed (clockless) systems Future work: performance optimizations (e.g. atomic operations + polling instead of system calls)

Try it:

https://forge.imag.fr/projects/sc-during/

Questions?

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 22 / 22 >

slide-62
SLIDE 62

Related Work jTLM, Tasks with Duration sc-during Conclusion

SC-DURING: Conclusion

New way to express concurrency in the platform Allows parallel execution of loosely-timed (clockless) systems Future work: performance optimizations (e.g. atomic operations + polling instead of system calls)

Try it:

https://forge.imag.fr/projects/sc-during/

Questions? Thank You!

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 22 / 22 >

slide-63
SLIDE 63

Related Work jTLM, Tasks with Duration sc-during Conclusion

Sources

http://en.wikipedia.org/wiki/File:Diopsis.jpg (Peter John Bishop, CC Attribution-Share Alike 3.0 Unported) http://www.fotopedia.com/items/flickr-367843750 (oskay@fotopedia, CC Attribution 2.0 Generic)

Matthieu Moy (Verimag) Parallel Programming with SystemC DATE, March 19th 2013 < 22 / 22 >