Глобальные индексы для локальной части codistributed массива
K = globalIndices(C,dim)
K
= globalIndices(C,dim,lab)
[E,F] = globalIndices(C,dim)
[E,F]
= globalIndices(C,dim,lab)
K = globalIndices(codist,dim,lab)
[E,F] = globalIndices(codist,dim,lab)
globalIndices говорит вам отношение между индексами на локальной части и соответствующей области значений индекса в данной размерности на codistributed массиве. globalIndices метод на объекте codistributor позволяет вам получать это отношение, на самом деле не создавая массив.
K = globalIndices(C,dim) или K
= globalIndices(C,dim,lab) возвращает векторный K так, чтобы getLocalPart(C) = C(...,K,...) в заданном измерении dim из codistributed массива C на заданном рабочем. Если lab аргумент не использован, значением по умолчанию является labindex.
[E,F] = globalIndices(C,dim) или [E,F]
= globalIndices(C,dim,lab) возвращает два целых числа E и F так, чтобы getLocalPart(C) = C(...,E:F,...) из codistributed массива C в заданном измерении dim на заданном рабочем. Если lab аргумент не использован, значением по умолчанию является labindex.
K = globalIndices(codist,dim,lab) совпадает с K = globalIndices(C,dim,lab), где codist codistributor должен использоваться для C, или codist = getCodistributor(C). Это позволяет вам получать глобальные индексы для codistributed массива, не имея необходимость создавать сам массив.
[E,F] = globalIndices(codist,dim,lab) совпадает с [E,F] = globalIndices(C,dim,lab), где codist codistributor должен использоваться для C, или codist = getCodistributor(C). Это позволяет вам получать глобальные индексы для codistributed массива, не имея необходимость создавать сам массив.
Создайте 2 22 codistributed массив среди четырех рабочих и просмотрите глобальные индексы на каждой лаборатории:
spmd C = zeros(2,22,codistributor1d(2,[6 6 5 5])); if labindex == 1 K = globalIndices(C,2) % returns K = 1:6. elseif labindex == 2 [E,F] = globalIndices(C,2) % returns E = 7, F = 12. end K = globalIndices(C,2,3) % returns K = 13:17. [E,F] = globalIndices(C,2,4) % returns E = 18, F = 22. end
Используйте globalIndices загрузить данные из файла и создать codistributed массив, распределенный вдоль его столбцов, т.е. размерности 2. Заметьте как globalIndices делает код не характерным для количества рабочих и облегчает вас от вычисления смещений или разделов.
spmd siz = [1000,1000]; codistr = codistributor1d(2,[],siz); % Use globalIndices to figure out which columns % each worker should load. [firstCol,lastCol] = globalIndices(codistr,2); % Call user-defined function readRectangleFromFile to % load all the values that should go into % the local part for this worker. labLocalPart = readRectangleFromFile(fileName, ... 1,siz(1),firstCol,lastCol); % With the local part and codistributor, % construct the corresponding codistributed array. C = codistributed.build(labLocalPart,codistr); end