Definieren globaler Variablen in mpi

8

Ich habe unten einen Beispielcode geschrieben:

%Vor%

Wie zu bemerken ist, definiert dieses Programm tatsächlich eine globale Variable namens x und der nullte Thread versucht, ihm einen Wert zuzuweisen. Wenn ich dieses Programm auf einem SMP-Rechner (Symmetric Multiprocessing) mit 4 Kernen laufen lasse, bekomme ich folgende Ergebnisse:

%Vor%

Interessanterweise, wenn ich meinen Code so ändere, dass jeder Thread die Adresse der Variablen x ausdruckt, d. h. & amp; x, drucken sie alle dasselbe.

Meine Frage ist, wie es möglich ist, dass mehrere Threads in einem SMP-System den gleichen Wert für die Adresse einer Variablen haben, während sie nicht den gleichen Wert teilen?

und meine zweite Frage ist, wie ich den obigen Code ändern sollte, damit ich die folgenden Ergebnisse bekomme?

%Vor%     
Mehrdad 21.05.2013, 14:30
quelle

1 Antwort

5

Sie könnten Broadcast verwenden:

%Vor%

Dies sendet den Wert von x auf Prozess 0 an alle anderen Prozesse.

    
tune2fs 21.05.2013, 14:35
quelle

Tags und Links