Переменные цикла

Переменная цикла задает индексное значение цикла для каждой итерации. Вы устанавливаете его в первой строке оператора parfor.

parfor p=1:12

Для значений через все итерации переменная цикла должна оценить к возрастающим последовательным целым числам. Каждая итерация независима от всех других, и у каждого есть ее собственное индексное значение цикла.

Необходимые (помехи): Присвоения на переменную цикла не позволены.

Это ограничение требуется, потому что изменение p в теле parfor не может гарантировать независимость итераций.

Этот пример пытается изменить значение переменной цикла p в теле цикла, и таким образом недопустим.

parfor p = 1:n
   p = p + 1;
   a(p) = i;
end

Необходимые (помехи): Вы не можете индексировать или преобразовать переменную цикла в нижний индекс в любом случае.

Это ограничение требуется, потому что ссылка на поле переменной цикла не может гарантировать независимость итераций.

Следующий код пытается сослаться на поле (b) переменной цикла (p), как будто это была структура. Обе строки в цикле недопустимы.

parfor p = 1:n
    p.b = 3
    x(p) = fun(p.b)
end

Точно так же следующий код недопустим, потому что он пытается индексировать переменную цикла как матрицу 1 на 1:

parfor p = 1:n
    x = p(1)
end

Необходимые (помехи): Вы не можете использовать шаг области значений в for - циклах, вложенных в parfor - цикл.

Рассмотрите следующий пример:

N = 10; 
T = 3; 
A = zeros(N,T); 
B = zeros(N,T); 

Следующий код недопустим.

parfor i = 1:1:N 
    for t = 1:1:T 
        A(i,t) = t; 
    end 
end 

Следующий код допустим.

parfor i = 1:1:N 
    for t = 1:T 
        B(i,t) = t; 
    end 
end 

Смотрите также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте