Главная » Просмотр файлов » Вторая версия

Вторая версия (1158279), страница 7

Файл №1158279 Вторая версия (Параллельное программирование на языке Fortran DVM) 7 страницаВторая версия (1158279) страница 72019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 7)

По окончании моделирования для каждого интервала вычисляются и выдаются на HTML-странице интегральные характеристики выполнения программы на данном интервале в виде “голубого поля”.

Xарактеристики “зеленого поля” – это характеристики коллективных операций (I/O, Reduction, Shadow, Remote access и Redistribution); по каждой из операций выдаются: число операций, время, затраченное операцией на коммуникации, время потерь из-за рассинхронизации коммуникационных операций и время перекрытия обменов сообщениями и вычислений

4.3.2.5Рекомендации по анализу характеристик

Главным критерием является коэффициент эффективности распараллеливания. Если коэффициент эффективности невысокий, то необходимо анализировать потерянное время и его компоненты.

Сначала следует оценить три компоненты потерянного времени для основного интервала (как правило, в качестве такого интервала выделяется итерационный цикл в программе). Наиболее вероятно, что основная доля потерянного времени приходится на одну из первых двух компонент (недостаточный параллелизм или коммуникации).

В случае если причиной оказался недостаточный параллелизм, необходимо уточнить, на каких участках он обнаружен – последовательных или параллельных. В последнем случае причина может быть очень простой – неверное задание матрицы процессоров при запуске программы или неверное распределение данных и вычислений. Если же недостаточный параллелизм обнаружен на последовательных участках, то причиной этого, скорее всего, является наличие последовательного цикла, выполняющего большой объем вычислений. Устранение этой причины может потребовать больших усилий.

В том же случае, если основной причиной потерь являются коммуникации, тонеобходимо, прежде всего, обратить внимание на реальные потери из-за рассинхронизации (Real synchronization). Если ее значение близко к размерам потерь из-за коммуникаций, то необходимо рассмотреть потенциальные потери из-за разбалансировки (Load_Imbalance), поскольку именно разбалансировка вычислений в параллельном цикле является наиболее вероятной причиной рассинхронизации и больших потерь на коммуникациях. Если величинаразбалансировки намного меньше величины потенциальных потерь из-засинхронизации (Synchronization) , то необходимо обратить внимание на величину потенциальных потерь из-за разброса времен (Time_variation) коллективных операций. Если рассинхронизация не является следствием разброса времен завершения коллективных операций, то ее возможной причиной могут быть разбалансировки некоторых параллельных циклов, которые на рассматриваемом интервале выполнения программы могли взаимно компенсироваться. Поэтому имеет смысл перейти к рассмотрению характеристик разбалансировки на интервалах более низкого уровня.

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

Основной причиной потерь из-за коммуникаций может быть и просто большое количество операций редукции или загрузки требуемых данных с других процессоров (обновление теневых граней или удаленный доступ). В этом случае необходимо проверить спецификации удаленных данных. Наличие лишних спецификаций – одна из причин потерь из-за коммуникаций.

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

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

dvm f -s <имя DVM-программы>

и команду запуска программы:

dvm run 1 <имя DVM-программы>

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

Подробнее с отладкой эффективности DVM-программ можно познакомиться в документе [4].

5 Пример задачи

5.1 Пример задачи на Fortran DVM

Алгоритм Якоби

PROGRAM JACOB

PARAMETER (K=8, ITMAX=20)

REAL A(K,K), B(K,K), EPS, MAXEPS

CDVM$ DISTRIBUTE A ( BLOCK, BLOCK)

CDVM$ ALIGN B( I, J ) WITH A( I, J )

C массивы A и B распределяются блоками

PRINT *, '********** TEST_JACOBI **********'

MAXEPS = 0.5E - 7

CDVM$ PARALLEL (J,I) ON A(I, J)

C гнездо из двух параллельных циклов, итерация (i,j) выполняется,

C на том процессоре, где размещен элемент A(i,j)

DO 1 J = 1, K

DO 1 I = 1, K

A(I, J) = 0.

IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.K .OR. J.EQ.K) THEN

B(I, J) = 0.

ELSE

B(I, J) = ( 1. + I + J )

ENDIF

1 CONTINUE

DO 2 IT = 1, ITMAX

EPS = 0.

CDVM$ PARALLEL (J, I) ON A(I, J), REDUCTION ( MAX( EPS ))

C переменная EPS используется для вычисления максимального значения

DO 21 J = 2, K-1

DO 21 I = 2, K-1

EPS = MAX ( EPS, ABS( B( I, J) - A( I, J)))

A(I, J) = B(I, J)

21 CONTINUE

CDVM$ PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A)

C копирование теневых элементов массива A

C с соседних процессоров перед выполнением цикла

DO 22 J = 2, K-1

DO 22 I = 2, K-1

B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J) + A( I, J+1 )) / 4

22 CONTINUE

PRINT *, 'IT = ', IT, ' EPS = ', EPS

IF ( EPS . LT . MAXEPS ) GO TO 3

2 CONTINUE

3 OPEN (3, FILE='JACOBI.DAT', FORM='FORMATTED')

WRITE (3,*) B

CLOSE (3)

END

5.2 Пример задачи на Fortran OpenMP/DVM

Алгоритм Якоби

PROGRAM JACOB

PARAMETER (K=8, ITMAX=20)

REAL A(K,K), B(K,K), EPS, MAXEPS

CDVM$ DISTRIBUTE A ( BLOCK, BLOCK)

CDVM$ ALIGN B( I, J ) WITH A( I, J )

C массивы A и B распределяются блоками

PRINT *, '********** TEST_JACOBI **********'

MAXEPS = 0.5E - 7

CDVM$ PARALLEL (J,I) ON A(I, J)

C гнездо из двух параллельных циклов, итерация (i,j) выполняется,

C на том процессоре, где размещен элемент A(i,j)

C$OMP PARALLEL DO PRIVATE (J,I) SHARED ( A,B)

DO 1 J = 1, K

DO 1 I = 1, K

A(I, J) = 0.

IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.K .OR. J.EQ.K) THEN

B(I, J) = 0.

ELSE

B(I, J) = ( 1. + I + J )

ENDIF

1 CONTINUE

DO 2 IT = 1, ITMAX

EPS = 0.

CDVM$ PARALLEL (J, I) ON A(I, J), REDUCTION ( MAX( EPS ))

C переменная EPS используется для вычисления максимального значения

C$OMP PARALLEL DO PRIVATE (J,I) SHARED ( A,B) REDUCTION (MAX: EPS)

DO 21 J = 2, K-1

DO 21 I = 2, K-1

EPS = MAX ( EPS, ABS( B( I, J) - A( I, J)))

A(I, J) = B(I, J)

21 CONTINUE

CDVM$ PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A)

C копирование теневых элементов массива A

C с соседних процессоров перед выполнением цикла

C$OMP PARALLEL DO PRIVATE (J,I) SHARED ( A,B)

DO 22 J = 2, K-1

DO 22 I = 2, K-1

B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J) + A( I, J+1 )) / 4

22 CONTINUE

PRINT *, 'IT = ', IT, ' EPS = ', EPS

IF ( EPS . LT . MAXEPS ) GO TO 3

2 CONTINUE

3 OPEN (3, FILE='JACOBI.DAT', FORM='FORMATTED')

WRITE (3,*) B

CLOSE (3)

END

6. Литература

Вся указанная литература содержится на сайте www.keldysh.ru/dvm и доступна локально по директивам dvm doc ur, dvm doc sr

  1. Описание языка Fortran DVM.

  2. Компиляция программ на языке Fortran DVM.

  3. Запуск и отладка DVM-программ.

4. Отладка производительности DVM-программ.

5. Lib-DVM - детальный дизайн

Приложение 1. Синтаксис директив Fortran OpenMP/DVM



directive-line

is CDVM$ dvm-directive

or *DVM$ dvm-directive

or C$OMP openmp-directive

or !$OMP openmp-directive

dvm-directive

is specification-directive

or executable-directive

specification-directive

is align-directive

or distribute-directive

or template-directive

or shadow-directive

or inherit-directive

or asyncid-directive

executable-directive

is parallel-directive

or remote-access-directive

or f90-directive

or asynchronous-directive

or end-asynchronous-directive

or asyncwait-directive

or omp-parallel-directive

or omp-do-directive

or omp-paralleldo-directive

Ограничения:

  • Cпецкомментарий directive-line подчиняется правилам написания комментария в фиксированной форме.

  • Директивы спецификации должны находиться в разделе спецификаций.

  • Исполняемые директивы должны находиться среди исполняемых операторов.

  • Любое выражение, входящее в директиву спецификации, должно быть выражением спецификации.

Выражение спецификации – это выражение, в котором каждое первичное должно быть одной из следующих форм:

  1. константа,

  2. переменная, которая является формальным аргументом,

  3. переменная из COMMON блока,

  4. ссылка на встроенную функцию, где каждый аргумент является выражением спецификации,

  5. выражение спецификации, заключенное в скобки.

Директива DISTRIBUTE

distribute-directive

is DISTRIBUTE distributee dist-directive-stuff

dist-directive-stuff

is dist-format-list

distributee

is array-name

or template-name

dist-format

is BLOCK

or MULT_BLOCK (int-expr)

or *

Ограничения:

  • Длина списка dist-format-list должна быть равна количеству измерений массива. Т.е. для каждого измерения должен быть задан формат распределения.

Директива ALIGN

align-directive

is ALIGN alignee align-directive-stuff

align-directive-stuff

is ( align-source-list ) align-with-clause

alignee

is array-name

align-source

is *

or align-dummy

align-dummy

is scalar-int-variable

align-with-clause

is WITH align-spec

align-spec

is align-target ( align-subscript-list )

align-target

is array-name

or template-name

align-subscript

is int-expr

or align-dummy-use

or *

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее