EEMBC & CoreMark Blog

June 8, 2009

Using Coremark on Multiple Cores

Filed under: EEMBC — shay@eembc.org @ 09:00

Although we don’t recommend using this because it will only yield a linear performance increase, CoreMark standard allows for execution of multiple copies on multiple cores, and in fact already contains 3 common implementations (PThreads, Fork(with shared memory) and Sockets). The portable layer allows extension to other proprietary mechanisms as well. E5405 scores posted recently for 1,2 and 4 cores show a linear speedup with the number of cores used. How come?

CoreMark aims at measuring core efficiency, and nothing else. Multiple copies of coremark would (assuming decent scheduling by the underlying scheduler or OS) each operate on a single core. There is no interaction between multiple copies of CoreMark, and synchronization only occurs at the end of the run. Thus we would expect execution of multiple copies to simply result in linear speedup – and indeed the posted scores show linear speedup (or as close as makes no difference). When comparing CoreMark scores, make sure to check the compiler flags and parallel options.

For true analysis of multi-core devices, system factors such as cache coherency and bus arbitrations mechanisms also need to be considered, as does the efficiency of synchronization primitives and the underlying scheduler (or OS). Head to the EEMBC website and check out MultiBench for more comprehensive analysis of multi-core systems.

E5405 Speedup

E5405 Speedup

3 Comments »

  1. I tried to run coremark with total data size set to 32 k so that I could see performance impact when data size is more than available cache size, but core mark gives error “Cannot validate operation for these seed values, please compare with results on a known platform.” Is their a way to do what I am trying?

    Comment by VIKAS KUMAR — November 20, 2009 @ 18:38

  2. Changing any of the seeds values creates a configuration that does not self validate. The message does not say the run is invalid, simply that it cannot self validate. You should compare the CRC values you got with a run using the same seeds on a validated production platform to make sure that the benchmark executed correctly.
    Also, if you really want to avoid cache usage, I would suggest a bigger data size…

    Comment by Shay Gal-On — November 20, 2009 @ 23:05

  3. That’s very true.
    On dual-core system CoreMark linearly scaled to 2 times of single-core performance.

    Comment by Suresh Shukla — June 30, 2010 @ 22:31

RSS feed for comments on this post.

Leave a comment

Powered by WordPress