Индекс этого рабочего
id = labindex
id = labindex возвращает индекс выполняющегося в данного момента рабочего функция. labindex присвоен каждому рабочему, когда задание начинает выполнение и применяется только на время того задания. Значение labindex промежутки от 1 к n, где n количество рабочих, запускающих текущее задание, заданное numlabs.
Просмотрите labindex в spmd блоки и parfor- циклы.
p = parpool('local',2); spmd labindex end
Lab 1:
1
Lab 2:
2Используя тот же пул 2D рабочего, p:
parfor a=1:4 [a,labindex] end
ans =
3 1
ans =
2 1
ans =
1 1
ans =1
4 1
В spmd блокируйтесь, потому что вы имеете доступ ко всем рабочим индивидуально и управляете тем, что выполняется на них, у каждого рабочего есть уникальный labindex.
Однако в parfor- цикл, labindex всегда возвращает значение 1 на всех рабочих во всех итерациях.