Проверяйте, задан ли Составной объект на рабочих
h = exist(C,labidx)
h = exist(C)
h = exist(C,labidx) возвращает true если запись в Составном объекте C имеет заданное значение на рабочем с labindex labidxложь в противном случае. В общем случае, где labidx массив, выход h массив одного размера с labidx, и h(i) указывает ли Составная запись labidx(i) имеет заданное значение.
h = exist(C) эквивалентно h = exist(C, 1:length(C)).
Если exist(C,labidx) возвращает true, C(labidx) не выдает ошибку, при условии, что значения C на тех рабочих являются сериализуемыми. Функция выдает ошибку если любой labidx недопустимо.
Задайте переменную на случайном числе рабочих. Начните работу, какие рабочие Составные записи заданы и получают все те значения:
spmd if rand() > 0.5 c = labindex; end end ind = exist(c); cvals = c(ind);