Vous pouvez utiliser la distribution ReplicatedDist
pour obtenir une copie d'une variable locale par. Il y a un module UtilReplicatedVar
pour simplifier son utilisation.
use UtilReplicatedVar;
var regularInt = 42;
// rcDomain is declared in UtilReplicatedVar. It maps
// one int value to each locale
var repInt: [rcDomain] int;
// Other types can be replicated as well. Here a
// heterogeneous tuple containing an integer,
// real, and complex is replicated
var repTuple: [rcDomain] (int, real, complex);
// Assign 42 to the replicated int on all locales
rcReplicate(repVar, regularInt);
// Access the local copy of the replicated var.
// The first form must use 1 as the index.
repVar[1] = 0;
writeln(rcLocal(repVar));
// Access the local complex component of the tuple
writeln(repTuple[1](3));
// Access a remote copy.
rcRemote(repVar, remoteLocale);
Qu'avez-vous essayé, et pourquoi voulez-vous faire cela? Assurons-nous que nous n'essayons pas de [raser un yak] (http://sethgodin.typepad.com/seths_blog/2005/03/dont_shave_that.html) ici ... – dcsohl
J'essaye de localiser certains globaux fréquemment utilisés variables pour gagner un avantage de performance. (Je suppose que les variables globales sont allouées dans locale0 et l'accès à partir d'autres locales entraîne une communication, n'est-ce pas?) Cependant, après les avoir localisées, cela ne m'a pas accéléré (peut-être 1%) les variables globales d'autres paramètres régionaux n'entraînent pas trop de frais généraux? @dcsohl – BruceTerp
Si les variables globales peuvent être déclarées comme des constantes plutôt que des variables, elles seront répliquées entre les locales au moment du démarrage du programme (au moins pour les types simples). – Brad