Понимание параллельного использования Fortran 90 - PullRequest
0 голосов
/ 08 августа 2011
y(1:n-1) = a*y(2:n) + x(1:n-1)
y(n) = c

В приведенном выше коде Fortran 90 я хочу знать, как он выполняется с точки зрения синхронизации, связи и арифметики.

Что я понимаю:

Связь - это необходимость в разных заданиях для связи друг с другом. Например. если есть какая-то переменная, которая имеет зависимости с другой переменной. Но приведенный выше код не показывает, что есть связь. Как кажется, нет никаких зависимостей, я прав?

Синхронизация в некоторой степени связана с коммуникацией, но она также включает в себя использование барьеров. Но в приведенном выше коде нет барьера. Поэтому единственная синхронизация, которая используется, - это наличие каких-либо зависимостей данных.

Арифметика Я понятия не имею по этому поводу, и был бы рад, если бы кто-то мог мне это объяснить.

Ответы [ 2 ]

2 голосов
/ 21 августа 2011

Правило в Фортране довольно простое: правая часть полностью оценивается, прежде чем результат будет присвоен левому. Таким образом, вы можете утверждать, что при назначении (отправке результата y) есть сообщение, которое одновременно является точкой синхронизации. Фактическая оценка правой стороны может быть векторизована / распараллелена компилятором, что приведет к произвольным порядкам оценок для всех записей в массиве, кроме последней, которая устанавливается только после первого назначения. Однако, за исключением конвейерной обработки, здесь нет реального параллелизма, вводимого обычными компиляторами.

0 голосов
/ 08 августа 2011

Не останавливаясь слишком сильно на данном фрагменте, похоже, вы, возможно, заинтересуетесь (скажите, если я ошибаюсь), например, Использование книги OpenMP (презентация здесь ).Это приятное нежное введение в мир параллельных вычислений (память совместно используется).Для более крупных систем вам бы неплохо было гуглить «MPI» и связанные с ним темы.На самом деле существует множество материалов по этому вопросу (многие из них имеют дело с fortran + mpi / fortran + openmp), поэтому я пропущу здесь примеры.

Это то, к чему вы стремились?

...