Mathematica's parallel processing is very good for the right task. But I have been watching Mathematica use all 6 processors of my i7 chip with 6 kernels and thinking what about the other idle 6 threads? My license is for 8 subprocesses (kernels) but Mathematica thinks that 6 processors is all that can be used and there's no way to communicate that to Mathematica - or is there? I tried this with grid Mathematica in mind - why not?
CloseKernels[];
$DefaultKernels = {
RemoteKernelObject["localhost", "KernelCount" -> 8]
}
I invoked the usual Parallel tools and they worked. I had 8 kernels working in parallel. I start with this to check
ParallelEvaluate[{$KernelCount}]
and get
{{8}, {8}, {8}, {8}, {8}, {8}, {8}, {8}}
On a test of the same data the wall clock times were
- 8 Kernels 27.23 Minutes
- 6 Kernels 35.32 Minutes
The latter is what you get with the default Mathematica setup. (If only I had a license for 12!) NB: I had a session with a MacBook Air. The Mac had a great official Mathematica Benchmark, but a run of parallel processing took 59 Minutes.