Yes, the automatic detection is done through MKL and a very common reason for an unexpected result is having an environment variable override (such as OMP_NUM_THREADS
or MKL_NUM_THREADS
).
If that does not resolve the issue, you may define $ProcessorCount in any desired way, for example
Unprotect[$ProcessorCount];
$ProcessorCount = 256;
Protect[$ProcessorCount];
in initialization code like init.m. The value does not have any impact on parallel computation except for deciding how many parallel kernels to launch by default via LaunchKernels[].
Other important parameters would be "ParallelThreadNumber"
and "MKLThreadNumber"
in SystemOptions["ParallelOptions"]
, which again can be set to any desired values.