I have the following Mathematica plan: 2 activation keys (2 licences/kernels I guess) and 4 subkernels on each kernel.
I'm trying to understand how it works with sockets.
On the same machine I've launched 2 MathKernels. To each kernel I attached 2 pairs of "push-pull" sockets.
I push LaunchKernels[4]
on each kernel. First kernel completes the operation successfully, but the second one outputs Unable to communicate with LinkObject
. I thought that each kernel has 4 subkernels and kernels run independently but it appears that there are 4 total subkernels.
Also, I thought that Mathematica will use parallelization automatically. Let's take the first kernel. I push Pause[10]
with the first socket and then, after a while, I push Pause[10]
. I thought that both commands will end in 10 seconds (if kernel is busy, the second command will be passed to free subkernel). But no. Two commands run sequentially and take 20 seconds.
What is the problem with subkernels? How do they work? And how to properly tell the kernel to parallelize the commands?