O Mathematica implementa computação paralela usando vários kernels (vários processos) que podem até mesmo rodar em máquinas diferentes. Existe um kernel principal com o qual você interage diretamente, e vários subkernels (controlados pelo kernel principal) que fazem o trabalho.
Então, em resumo: você não pode ter acesso direto à memória das outras máquinas, mas você pode explorá-lo totalmente executando um subkernel em cada máquina.
Você não mencionou o problema específico que está tentando resolver, mas se precisar processar um conjunto de dados grande que não cabe na memória de uma máquina em paralelo, faça o seguinte:
- Primeiro, divida os dados em partes gerenciáveis.
-
Faça com que cada um dos subkernels carregue um trecho e o processe, obtendo um resultado que não ocupa muita memória.
Existem várias maneiras de controlar os subkernels de totalmente manuais para totalmente automáticos.
ParallelEvaluate[]
lhe dará um controle refinado sobre cada kernel. Você também pode usar a variável$KernelID$
para decidir qual parte do conjunto de dados deve ser carregada em cada kernel. Consulte a documentação para obter detalhes. -
Finalmente, os resultados serão coletados no kernel principal (se o resultado não ocupar muita memória), ou serão gravados no disco de cada sub-kernel (se o resultado for tão grande quanto o dados de entrada)
Um ponto importante: para impedir explicitamente que algumas variáveis sejam automaticamente compartilhadas entre os kernels (e ocupar memória valiosa), é necessário colocá-las em um contexto separado, como descrito aqui e os links nele .