Parallele Programmierung in Mathematica

8

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?

    
asim 29.11.2011, 21:06
quelle

2 Antworten

3

Vielleicht können Sie einzelne Kerne mit $KernelID und $ProcessID säen?

%Vor%

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 %.

    
Arnoud Buzing 30.11.2011 00:22
quelle
2

Ich glaube, was Sie suchen, ist BlockRandom .

Gemäß der Dokumentation

%Vor%

Dann haben Sie vielleicht:

%Vor%     
Mike Bailey 01.12.2011 04:29
quelle

Tags und Links