In a multi-core processor, how can I find the simulation time of the slowest core?

124 views Asked by At

(Sorry if I phrased the question incorrectly)

I am running some applications on a 16-core Parallella board and I was wondering if there was a way to calculate the amount of time taken by the slowest core?

I think that if I add the user + sys times, I will get the sum of the execution times for all the cores, correct?

These are some of the results:

real        0m1.927s
user        0m3.190s
sys         0m0.080s
1

There are 1 answers

0
user3666197 On

Disambiguation

There is a strong difference between a multi-core based mode of operations, arranged in a "concurrent" manner and a parallel mode processing.

On Parallella board, if speaking about Zynq -- a dual-core ARM Cortex-A9 CPU / Xilinx 7-series on chip FPGA -- for that you can get user + sys values from on-board linux. Not the same for the Epiphany MPPA ( Massive Parallel Processor Array ) hardware device or additional parallelisable FPGA-hardware loadable soft-CPU-cores.

Also note, that on a truly parallel system, the word "slower" or "slowest" core, loses its meaning as all processors start and finish in a parallel manner, for details kindly see the PAR syntax constructor in occam-pi ( even at a cost of waiting for a divergent alternative path of processing, so as they all finish in parallel ).

How to?

One may include some signalling data to store during MPPA code-execution a clock counter value / later retrieved from Linux/ARM-side and use these telemetry-records data to evaluate ex-post the code-execution timing pre-recorded "inside-MPPA".

Doing the same in-real-time might be possible for in-vivo Tracing / State-Diagnostics / Inspect-Analyse-Tool but would require a lot of system specific engineering efforts for such a Real-Time-SysMONITOR.

However this is doable. Similar approach was used for visual inspection of state-transitions in FSA-design / validation.

A good explanation of conceptual and performance difference between a PARALLEL, SERIAL and CONCURRENT mode of code-execution.