Как реплицировать переменные в нескольких локалях в часовне
Мне интересно, есть ли простой способ сделать копию глобальной переменной в каждой локали, чтобы впоследствии каждая локаль получала прямой доступ к своей локальной копии вместо доступа к исходной переменной, хранящейся в locale0?
Спасибо
1 ответ
Вы можете использовать ReplicatedDist
распределение, чтобы получить копию переменной для локали. Есть модуль UtilReplicatedVar
упростить его использование.
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);