I was wondering if the WolframMark Benchmark uses more than one core. This becomes relevant when comparing Benchmark scores between, say, 4-core and 8-core machines.
I looked at Benchmark's code, and none of it has any functions containing the word "Parallel" (e.g., Parallelize, Parallel Evaluate, ParallelTry ParallelMap, etc.). It has been my understanding that, unless you explicitly ask MMA to execute code in parallel (using a function such as those), it will run the process on only one core at a time*. Is that correct? If so, it would mean the Benchmark is indeed single-core.
[*I say "one core at a time" rather than "on only one core" because MMA computations may shift between cores while they are running.]
Relatedly, I'm wondering what happens when you execute LaunchKernels prior to running Benchmark. You get a higher score doing this, but I assume that is because it's running multiple versions of Benchmark simultaneously and combining them into a composite score, not because it is actually parallelizing any of the Benchmark calculations. Is that correct? If so, any score you get after using LaunchKernels isn't meaningful. [Consistent with this, using LaunchKernels significantly increases, rather than decreases, the wall clock time needed to run Benchmark.]
ParallelThreadNumber -> 1
andMKLThreadNumber -> 1
options, what those actually mean are "run on 1 core", not "run with 1 thread", right? Because if those options really are referring to the number of threads then, e.g.,ParallelThreadNumber -> 2
would mean: "Run on 1 core, with Hyperthreading enabled" andParallelThreadNumber -> 1
would mean "Run on 1 core, with Hyperthreading disabled". And I don't think that's how those work—particularly since the default configuration with my 4-kernel license isParallelThreadNumber -> 4
. $\endgroup$