forsyde / IDeSyDe

Design space identification and exploration
https://forsyde.github.io/IDeSyDe
4 stars 4 forks source link

Throughput and execution times #35

Closed BeethovenKodar closed 5 months ago

BeethovenKodar commented 5 months ago

When investigating the solution's throughput in e.g. inbody_0_AperiodicAsynchronousDataflowToPartitionedMemoryMappableMulticoreAndPL_Orchestratror.json, there are no values in process_minimum_throughput. It's not a big deal however, it can be derived from idesyde's stdout through invThroughput. However, I wonder: what is the unit? Tokens (of channel's element size) per second?

Also, for best/average/worst_execution_times, what is the unit? Cycles?

Rojods commented 5 months ago

There are no values in these examples because the SDF application arrives with no declaration of minimum throughput! Therefore they have nothing. The unit in this case is "Firings of the actor per second", specifically. This is because SDF has a constant ratio between firing of a an actor and data produced/consumed.

The unit is seconds! I basically try to use SI (international units) everywhere possible because it eliminates problems of questions etc. Of course we sometimes bastardize the numbers so that they become clock cycles, but that is our "abuse" of it :).

BeethovenKodar commented 5 months ago

Okay! Are they located somewhere else if not in that desicion model?

Rojods commented 5 months ago

In ForSyDe IO there must be a way to specify this design constraint of having a throughput... we need to check the identification rules to see what (if anything) is being used as a demarcation of a minimum throughput. Once I am done with #34 , then I can come back on this one.

BeethovenKodar commented 5 months ago

I meant, the json file I posted as a decision model as one possible location for the resulting value. I don't want to specify a min th constraint I just want to access invThroughput via some file, if there is one somewhere after exploration. If there is no such data to collect I can read it from stdout no problem!

BeethovenKodar commented 5 months ago

Is the invThroughput here actually the throughput? Otherwise, it is extremely bad performing right? 1/6980 firings of the actor per second seems off?

Written dominant AperiodicAsynchronousDataflowToPartitionedMemoryMappableMulticoreAndPL with objectives: invThroughput(Actor_2): 6980, nUsedPEs: 2, invThroughput(Actor_1): 6980

However, it seems like this is the inverse after all given these two solutions that constitute the Pareto front:

[2024-05-23T16:53:53Z DEBUG] Written dominant AperiodicAsynchronousDataflowToPartitionedMemoryMappableMulticoreAndPL with objectives: invThroughput(Actor_2): 11, invThroughput(Actor_1): 11, nUsedPEs: 2

[2024-05-23T16:53:53Z DEBUG] Written dominant AperiodicAsynchronousDataflowToPartitionedMemoryMappableMulticoreAndPL with objectives: invThroughput(Actor_2): 46, nUsedPEs: 1, invThroughput(Actor_1): 46

BeethovenKodar commented 5 months ago

Closing in favor of #37