The eMesh Function

Any technical questions about the Epiphany chip and Parallella HW Platform.

Moderator: aolofsson

The eMesh Function

Postby adeshpande » Thu Jul 17, 2014 9:46 pm

Hi everyone,

For the eMesh functions like emesh_bandwidth_all2one, emesh_read_latency, etc ( ... ster/emesh), do those outputs change if you had another program running alongside it.

If so, is there a way to run the emesh and another program at the same time?

Posts: 40
Joined: Wed Jul 02, 2014 7:20 pm

Re: The eMesh Function

Postby greytery » Sat Jul 19, 2014 5:38 pm

adeshpande wrote: do those outputs change if you had another program running alongside it.

If so, is there a way to run the emesh and another program at the same time?

The emesh examples are effectively 'test' programs. They illustrate and test the throughput of the eMesh on-chip network under different simple traffic loads. Illustrative - but not actually doing anything 'real'.
Run the examples several times and you should get the same results, +/- msecs. Run a 'real' application workload and the throughput will be very different, as the traffic profile changes, as with any system.

Each of the examples loads and kicks off a program onto ALL 16 cores to generate traffic - so you can't load another program 'alongside' an example as they stand.

But the eMesh is actually three separate data networks. The eMesh examples, it seems to me, simply exercise one type of read/write traffic and effectively only block on one of the data networks. The dma examples do something similar.

There's nothing to stop you having 'a bit of fun' and creating your own versions of the examples, e.g. to run combined eMesh and dma throughput tests on different combinations of cores (aka 'workgroups) and different read/write traffic to use more than one part of the eMesh.
NB: You need to look carefully at the source of each example, get to understand what it's doing, before branching out!

Starting with the examples as they are, you would need to load and run this new mixed bag of programs from one host program (main) because part of the initialisation is to reset the epiphany chip from scratch before firing up all programs together.
Running and loading different workgroups with different subsets of programs at different times is a bit more tricky. In principle, you can partially reset the chip (by core/workgroup) and then load new programs onto different cores while the others are running ... but that's a higher level of hacking.
I haven't gone through all the examples but I haven't seen a multi-workgroup scheduler example - which would be a Good Thing!

IMHO, the eMesh is probably one of the most important features of the Epiphany - so getting to know how it does or doesn't function will be key to getting the best out of the wee beastie.

User avatar
Posts: 205
Joined: Sat Dec 07, 2013 12:19 pm
Location: ^Wycombe, UK

Return to Epiphany and Parallella Q & A

Who is online

Users browsing this forum: No registered users and 14 guests