Ich bin daran interessiert, die gleiche Funktion auszuführen, die einige Monte-Carlo-Auswertungen mit unterschiedlichen Werten der Argumente auf mehreren Kernen parallel durchführt. Ich möchte auch sicherstellen, dass die gesamte Funktion auf demselben Kernel ausgeführt wird, ohne dass die Berechnungen innerhalb der Funktion über die Kernel verteilt werden. Angenommen, ich habe eine Funktion (absichtlich vereinfacht)
%Vor%Ich möchte nun f [m1, m2], f [m3, m4], f [m5, m6], f [m7, m8] f [m9, m10] auf fünf verschiedenen Kernen ohne Informationstransfer laufen lassen diese Kernel, dh mit einem separaten Strom von Zufallszahlen über die verschiedenen Kernel.
Wie kann man das innerhalb von Mathematica machen?
Vielleicht können Sie einzelne Kerne mit $KernelID
und $ProcessID
säen?
Und das sollte zu fünf verschiedenen Kernels gehen (die FinestGrained-Option nimmt jede Bewertung zu einem neuen Kernel):
%Vor% Wenn i
(max 5) größer als die Anzahl der Kernel (8) ist, wird dies allerdings zu Problemen führen, dh f[13,14]
darf den gleichen Startwert wie% co_de verwenden %.
Ich glaube, was Sie suchen, ist BlockRandom
.
Gemäß der Dokumentation
%Vor%Dann haben Sie vielleicht:
%Vor%Tags und Links wolfram-mathematica