Estoy interesado en ejecutar la misma función que realiza algunas evaluaciones de monte carlo con diferentes valores de los argumentos en múltiples núcleos de forma paralela. También quiero asegurarme de que toda la función se ejecute en el mismo kernel, sin que los cálculos dentro de la función se distribuyan entre los kernels. Por ejemplo, supongamos que tengo una función (deliberadamente simplificado)Programación paralela en Mathematica
f[a_, b_] := Module[{}, RandomReal[{a, b}]]
In[1]:= LaunchKernels[]
Out[1]= {KernelObject[1, "local"], KernelObject[2, "local"],
KernelObject[3, "local"], KernelObject[4, "local"],
KernelObject[5, "local"], KernelObject[6, "local"],
KernelObject[7, "local"]}
SeedRandom[795132, Method -> "ParallelGenerator"];
m1 = 1; m2 = 2; m3 = 3; m4 = 4; m5 = 5; m6 = 6; m7 = 7; m8 = 8;
DistributeDefinitions[f, m1, m2, m3, m4, m5, m6, m7, m8];
ahora Quiero correr f [m1, m2], F [m3, m4], f [m5, m6], f [m7, m8 ] f [m9, m10] en cinco núcleos diferentes sin transferencia de información a través de estos núcleos, es decir, con una secuencia separada de números aleatorios en los diferentes núcleos.
¿Cómo se puede hacer esto dentro de Mathematica?
Tener diversión chicos, estoy sentado éste hacia fuera. –
@ Mr.Wizard: No es divertido cuando no estás cerca para competir con :) :) –