parallel slave activity

Dear all,
as a follow up of previous emails, i would ask:
which is the best way to set a a parallel workflow with a
synchronization point (with a master component that acts as scheduler)?

say that you have Source1 and Source2 components(two source of data from
hardware interfaces for example), and I want to run them in two separate
activities and possibly in parallel, and then, when both are done a Sink
component that is updated when both are done.

Cheers, Gianni.

parallel slave activity

+1

________________________________________
De : orocos-users-bounces [..] ... <orocos-users-bounces [..] ...> de la part de Gianni Borghesan <gianni [dot] borghesan [..] ...>
Envoyé : vendredi 18 septembre 2015 10:20
À : orocos-users
Objet : [Orocos-users] parallel slave activity

Dear all,
as a follow up of previous emails, i would ask:
which is the best way to set a a parallel workflow with a
synchronization point (with a master component that acts as scheduler)?

say that you have Source1 and Source2 components(two source of data from
hardware interfaces for example), and I want to run them in two separate
activities and possibly in parallel, and then, when both are done a Sink
component that is updated when both are done.

Cheers, Gianni.

--
------------------------------------------------
Gianni Borghesan, PhD
Robot Assisted Surgery group
Robotics Research group
KU Leuven,
Department of Mechanical Engineering,
Division of PMA
Room 02.019
Celestijnenlaan 300B, B-3001 Heverlee, Belgium.
Tel: +32 163 29267
Fax: +32 163 22987
------------------------------------------------
--
Orocos-Users mailing list
Orocos-Users [..] ...
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users

parallel slave activity

> Dear all,
> as a follow up of previous emails, i would ask:
> which is the best way to set a a parallel workflow with a
> synchronization point (with a master component that acts as scheduler)?
>
> say that you have Source1 and Source2 components(two source of data from
> hardware interfaces for example), and I want to run them in two separate
> activities and possibly in parallel, and then, when both are done a Sink
> component that is updated when both are done.

The use case you described is best handled by _evenot handling_ patterns,
not by _activity_ 'scheduling'. In other words, you have _one_ activity
that gets woken up when each of the IO sources that it has to synchronize
has new data ready (each of the sources typically will indeed be a separate
activity), and it then checks the "synchronization dependencies" of your
application to find the right "callback" to execute.
Alternatively, use a stream processing approach with an "event log" as the
mediating data structure:
<https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying>
This is an IPC mechanism that has its place next to the lock-free data
buffers; you would need the latter to implement the former.

I would love to see developments to make/improve lock-free and stream
processing IPC libraries ready for realtime use. (And independent of any
framework.) Any takers...?

> Cheers, Gianni.
>
> Gianni Borghesan, PhD

Herman

parallel slave activity

This is rather straightforward indeed (well at least the event-based solution is, I must admit I did not go through reading the whole paper on logs).

Thanks for the clear explanation.

Antoine.

________________________________________
De : Herman Bruyninckx <Herman [dot] Bruyninckx [..] ...>
Envoyé : dimanche 20 septembre 2015 11:12
À : Antoine Rennuit
Cc : orocos-users [..] ...; Gianni Borghesan
Objet : Re: [Orocos-users] parallel slave activity

> Dear all,
> as a follow up of previous emails, i would ask:
> which is the best way to set a a parallel workflow with a
> synchronization point (with a master component that acts as scheduler)?
>
> say that you have Source1 and Source2 components(two source of data from
> hardware interfaces for example), and I want to run them in two separate
> activities and possibly in parallel, and then, when both are done a Sink
> component that is updated when both are done.

The use case you described is best handled by _evenot handling_ patterns,
not by _activity_ 'scheduling'. In other words, you have _one_ activity
that gets woken up when each of the IO sources that it has to synchronize
has new data ready (each of the sources typically will indeed be a separate
activity), and it then checks the "synchronization dependencies" of your
application to find the right "callback" to execute.
Alternatively, use a stream processing approach with an "event log" as the
mediating data structure:
<https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying>
This is an IPC mechanism that has its place next to the lock-free data
buffers; you would need the latter to implement the former.

I would love to see developments to make/improve lock-free and stream
processing IPC libraries ready for realtime use. (And independent of any
framework.) Any takers...?

> Cheers, Gianni.
>
> Gianni Borghesan, PhD

Herman