Индекс этого рабочего
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 на всех рабочих во всех итерациях.