Question
How do I run two benchmarks such that:
- They are both executing concurrently
- Both benchmarks have half their threads on each socket.
- No two threads share the same core.
Background
I have two programs: a benchmark written Fortran and a benchmark written in C. They both implement the OpenMP library, and are set to .
I am currently attempting to spread the threads of both processes across multiple sockets while preventing any two threads from having to share the same core. OpenMP allows for threads to be evenly distributed across multiple sockets using the OMP_PROC_BIND=spread environment variable. However, when executing both programs simultaneously, I end up with both benchmarks sharing the same cores.
I am running these benchmarks on a server that has two 12-core Haswell-E CPUs, and I have the benchmarks set to create 12 threads a piece, so there's no shortage of cores. I'm currently running CentOS 7.3.1611.
Side Note
I'm aware this is a strange configuration, however it is required for performance analysis. Many thanks in advance to all those who have input on this subject.