next up previous contents
След.: Упражнение Выше: Операторы цикла Пред.: Упражнения   Содержание

Параллельный цикл

В Fortran-2008 введен параллельный цикл DO CONCURRENT. Он аналогичен обычному циклу со счетчиком, но итерации не могут быть зависимыми. В случае зависимости итераций возникает ошибка. Диапазон изменения счетчика аналогичен оператору FORALL. Пример:

DO CONCURRENT (I=1:M)

A(IND(I)) = I

END DO

Еще пример из [13]

DO CONCURRENT (i=1:m)

a(k+i) = a(k+i) + factor*a(l+i)

END DO

Имеются разумные ограничения: в теле параллельного цикла не может осуществляться выход из процедуры (оператор RETURN), не должно быть операторов управления образами (по сути, синхронизации), запрещен вызов нестерильных процедур из тела параллельного цикла; если некоторую переменную модифицирует более одной итерации, она становится неопределенной по завершении цикла; это же относится и к указателям, и к размещению массивов; не допускается файловый вывод в некоторую позицию в одной итерации и чтение из этой же позиции в другой; последовательный файловый вывод, осуществляемый более, чем в одной итерации, расположен непредсказуемо.



Ilya A. Chernov 2012-12-19
X