协分布数组局部部分的全局索引
K = globalIndices (C,昏暗的)
K = globalIndices (C、昏暗的实验室)
(E, F) = globalIndices (C,昏暗的)
(E, F) = globalIndices (C、昏暗的实验室)
K = globalIndices (codist、昏暗的实验室)
(E, F) = globalIndices (codist、昏暗的实验室)
globalIndices
告诉您在协分布数组的给定维度上,局部部分的索引与相应索引范围之间的关系。的globalIndices
方法允许您在不实际创建数组的情况下获得此关系。
K = globalIndices (C,昏暗的)
或K = globalIndices (C、昏暗的实验室)
返回一个向量K
这getLocalPart (C) = C(…,K,…)
在指定尺寸内昏暗的
codistributed数组C
在指定的worker上。如果实验室
参数时,默认为labindex
.
(E, F) = globalIndices (C,昏暗的)
或(E, F) = globalIndices (C、昏暗的实验室)
返回两个整数E
和F
这getLocalPart (C) = C(…,E, F,…)
codistributed数组C
在指定尺寸内昏暗的
在指定的worker上。如果实验室
参数时,默认为labindex
.
K = globalIndices (codist、昏暗的实验室)
是一样的K = globalIndices (C、昏暗的实验室)
,在那里codist
是否使用共分配器C
,或codist = getCodistributor (C)
.这允许您获得一个协分布数组的全局索引,而不必创建数组本身。
(E, F) = globalIndices (codist、昏暗的实验室)
是一样的(E, F) = globalIndices (C、昏暗的实验室)
,在那里codist
是否使用共分配器C
,或codist = getCodistributor (C)
.这允许您获得一个协分布数组的全局索引,而不必创建数组本身。
在四个工作人员之间创建一个2乘22的协分布数组,并查看每个实验室的全局索引:
spmdC = 0 (2,22,codistributor1d(2,[6 6 5 5]));如果labindex == 1 K = globalIndices(C,2)%返回K = 1:6。elseiflabindex == 2 [E,F] = globalIndices(C,2)%返回E = 7, F = 12。结束K = globalIndices (C、2、3)%返回K = 13:17。(E, F) = globalIndices (C、2、4)E = 18, F = 22。结束
使用globalIndices
从文件加载数据并构造沿其列分布的协分布数组,即维度2。注意globalIndices
使代码不特定于工作人员的数量,并减少计算偏移量或分区。
spmdsiz =(1000、1000);codistr = codistributor1d (2 [] siz);%使用globalIndices来找出哪些列%每个工人应该加载。[firstCol, lastCol] = globalIndices (codistr 2);%调用用户定义函数readRectangleFromFile%加载所有应该进入的值这个工人的本地部分。labLocalPart = readRectangleFromFile(文件名,...1, siz(1)、firstCol lastCol);%与本地部分和共分配器,%构造相应的协分布数组。C = codistributed.build (labLocalPart codistr);结束