Вычислительный центр им. А.А. Дородницына РАНРаздел виртуального курса
|
|
Эта работа следует за теорией, изложенной в модуле MPI коллективный обмен сообщениями II. Требуется вначале завершить работу по модулю Основы программирования в MPI , включая упражнения, прежде чем начинать данную лабораторную работу.
Для изучения или получения справки по синтаксису
вызовов MPI, используйте стандарт Message Passing Interface в первоисточнике:
http://www-unix.mcs.anl.gov/mpi/,
для которого имеется перевод на русский язык на странице кластера Белорусского
государственного университета http://www.cluster.bsu.by/MPI_ALL.htm.
В данной лабораторной работе Вам предоставлена возможность изменить код, чтобы использовать расширенные особенности коллективных коммуникаций MPI. Вы будете использовать функцию MPI_Scatterv, чтобы распределить начальные данные среди процессоров, где число точек данных не делится поровну на число процессоров. Здесь представлен типичный случай, когда обычный запрос MPI_Scatter не позволяет решить поставленной задачи. Затем Вы снова измените код, используя подпрограмму MPI_Gatherv, чтобы собрать конечные выходные данные перед записью данных в файл.
Входной файл:
файлы на C для лабораторной работы:
C solution files:
wave_mw_vv.c
cwave_vv_out.data (будет получен после запуска)
Выходной файл Фортрана (для сравнения с результатами программы на C):
Wave_mw решает волновое уравнение, описанное в главе 5 книги Fox и др. (1988), используя модель "мастер-рабочий". Эта программа вычисляет амплитуду точек вдоль вибрирующей струны для указанного числа интервалов времени. Уравнение, которое решает программа, имеет следующий вид:
newval[i] = (2.0 * values[i]) - oldval[i]
+ (sqtau * (values[i-1] - (2.0 * values[i]) + values[i+1]));
Здесь "i" указывает номер точки. Массив значений содержит текущие амплитуды. Заметим, что новая амплитуда для точки будет зависеть от текущих значений в соседних точках.
Декомпозиция изображена на рисунке:
Каждой задаче назначен непрерывный блок точек ("блочная" декомпозиция). Каждая задача имеет все данные, нужные для модификации внутренних точек блока. Чтобы модифицировать граничные токи блока, задача должна получить значения для точек, ограничивающих блок (граничные величины) от задач, которые "владеют" ими. Она должна также отправить значения ее собственных граничных точек к этим задачам. Для этой коммуникации используются неблокирующие отправки (сопровождаемые вызовом MPI_Wait) и блокирующие получения. Таким образом, основной вычислительный цикл обменивает конечные точки и обновляет амплитуды.
В настоящей реализации функции wave_mw, задача-мастер считывает начальные амплитуды из файла. Блоки данных должны быть распределены по рабочим. Точно так же в конце выполнения обновленные данные должны быть собраны хозяином для записи в файл. Эти шаги являются центральными в данной лабораторной работе.
Нижеприведенная схема показывает структуру программы wave_mw. Поля выбора идентифицируют изменения, которые должны быть сделаны в определенных функциях. Эти функции содержат комментарии, информирующие о работе. Кроме того, можно обратиться к фрагменту кода, представленному в модуле MPI Collective Communication II.
Откомпилируйте и запустите модифицированную программу wave_mw_vv.exe на 2-8 процессорах. Не забудьте, что вы должны скопировать входной файл wave_inp.data в вашу локальную директорию.
Код распечатывает несколько значений для проверки правильности. Правильные значения:
1: .00 11:-.20 21:-.32 31:-.32 41:-.19 51: .01
61: .21 71: .32 81: .31 91: .18 100: .00
Полученный в результате файл cwave_vv_out.data можно сравнить с предоставленным выходным файлом (wave_vv_out.data) в каталоге лабораторной работы, чтобы дополнительно удостовериться, что код работает правильно.
Домашнее задание: в данном коде на C - найдите ошибки и исправленный вариант в файле hmwork5.c отправьте на проверку.
Fox, G. et al. (1988) Solving Problems on Concurrent Processors, vol. 1. Prentice Hall.
После завершения работы программ и отправки решения преподавателю не забудьте очистить ваш рабочий каталог на кластерном компьютере ВЦ РАН. Исходные тексты программ можно хранить на сервере Fast в вашем каталоге.
|
╘ 2003 Вычислительный
центр им. А.А.Дородницына Все права защищены. |
|