我对以并行方式运行多个内核参数的不同值进行monte carlo评估的相同函数感兴趣。我还希望确保整个函数在同一个内核上运行,而不在内核之间分配函数内的计算。例如,假设我有一个函数(故意简化)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];
我现在要运行F [M1,M2]中,f [M3,M4]中,f [M5,M6]中,f [M7,M8 ] f [m9,m10],这些内核之间没有信息传递,也就是说,在不同内核之间有一个单独的随机数据流。
在Mathematica中如何做到这一点?
有乐趣的家伙,我坐在这一个。 –
@ Mr.Wizard:当你不在身边时,没有什么好玩的,虽然:) –