Published November 27, 2023 | Version 1.0.0
Software Open

puzzlef/core-performance-openmp: Measure the performance of individual cores with OpenMP

Creators

  • 1. IIIT Hyderabad

Description

Measure the performance of individual cores with OpenMP.

You can use this program to measure the performance of individual CPU cores of a system. It works by running a pleasingly parallel workload on each core and measuring the time it takes to complete. The workload is a simple loop that find the sum of all the elements of an array (1 billion 64-bit floating point numbers by default). The program is written in C++ and uses OpenMP to parallelize the workload. To prevent the operating system from moving threads between cores, the program uses the OpenMP affinity API to pin each thread to a specific core.

[!NOTE] You can just copy main.sh to your system and run it.
For the code, refer to main.cxx.

<br>

$ ./main.sh
# OMP_NUM_THREADS=64
# {run=000, thread=000, node=0, core=000, time=2407.0969ms, flops=4.1544e+08}
# {run=000, thread=001, node=0, core=032, time=2407.0779ms, flops=4.1544e+08}
# {run=000, thread=002, node=1, core=001, time=2407.0649ms, flops=4.1544e+08}
# ...

<br>

I run this program on nodes 1, 2, and 4 of our cluster - no core-specific faults are present.

Also below is runtime stabilisation plot (I perform 100 runs of summing a billion elements on each core).

<br> <br>

References

<br> <br>

<br>

Files

puzzlef/core-performance-openmp-1.0.0.zip

Files (9.0 kB)

Name Size Download all
md5:ce06e5e7047282ad198593753bf48457
9.0 kB Preview Download

Additional details

Related works