我對以並行方式運行多個內核參數的不同值進行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:當你不在身邊時,沒有什麼好玩的,雖然:) –