OpenMPLab2015_3 (811091)
Текст из файла
Задание 3. «Проблема обедающих философов». Разработка параллельной программы.
Постановка задачи.
«Проблема обедающих философов» — классический пример, используемый в информатике для иллюстрации проблем синхронизации при разработке параллельных алгоритмов и техник решения этих проблем.
Пять безмолвных философов сидят вокруг круглого стола, перед каждым философом стоит тарелка спагетти. Вилки лежат на столе между каждой парой ближайших философов.
Каждый философ может либо есть, либо размышлять. Приём пищи не ограничен количеством оставшихся спагетти — подразумевается бесконечный запас. Тем не менее, философ может есть только тогда, когда держит две вилки — взятую слева и справа.
Каждый философ может взять ближайшую вилку (если она доступна), или положить — если он уже держит её. Взятие каждой вилки и возвращение её на стол являются раздельными действиями, которые должны выполняться одно за другим.
Суть проблемы заключается в том, чтобы разработать модель поведения (параллельный алгоритм), при котором ни один из философов не будет голодать, то есть будет вечно чередовать приём пищи и размышления.
Дана последовательная программа, моделирующая поведение обедающих философов.
Требуется разработать параллельную программу с использованием технологии OpenMP и исследовать корректность ее работы.
Цель.
Получить навыки решения классических задач на синхронизацию с использованием технологии OpenMP.
Требуется.
-
Разработать параллельную версию программы с использованием технологии OpenMP.
-
Исследовать корректность работы параллельной программы на суперкомпьютере “Ломоносов” (убедиться в работоспособности программы при использовании различного числа нитей).
-
Отчет о выполнении задания, включающий описание разработанного алгоритма, текст программы отправить на omplab@gmail.com
Методические указания.
-
Трансляция OpenMP программ.
-
Запуск программы на счет.
-
Последовательная программа.
-
Литература.
-
Трансляция OpenMP-программ.
-
Для входа в среду компиляции на суперкомпьютере «Ломоносов» введите команду
-
ssh compiler
-
Для компиляции OpenMP-программы c использованием компилятора GCС:
/usr/bin/gcc -fopenmp [-mcmodel=medium] -o <имя_программы> <имя_программы>.c
-
Для компиляции OpenMP-программы c использованием компилятора Intel:
/opt/intel/composerxe/bin/icc [-mcmodel=medium] -openmp -o <имя_программы> <имя_программы>.c
-
Для компиляции OpenMP-программы c использованием компилятора Portland Group:
/opt/pgi/linux86-64/2012/bin/pgcc –mp [-m64] [-mcmodel=medium]-o <имя_программы> <имя_программы>.c
Для компиляции
-
Запуск OpenMP-программы на счет.
-
Для запуска OpenMP-программы на счет на суперкомпьютере “Ломоносов”:
-
установите количество нитей, которые требуются для выполнения программы:
export OMP_NUM_THREADS=<количество нитей>
и используйте команду:
sbatch –p <раздел системы очередей> run ./<имя_программы>
Например,
export OMP_NUM_THREADS=4
sbatch –p test run ./sor_omp
Текущая конфигурация суперкомпьютера "Ломоносов" доступна:
http://parallel.ru/cluster/actual-T500.html
-
Последовательная программа.
#include <unistd.h> #define N 5 void think(int id) { printf("Philosopher #%d is thinking %d\n", id, rand()); sleep(rand() % 10 / 100.0); } void eat(int id) { printf("Philospoher #%d is eating\n", id); sleep(rand() % 20 / 100.0); } main() { parfor (int id = 0; id < N; id++) { for (;;) { think(id); printf("Philosopher #%d is hungry\n", id); eat(id); printf("Philosopher #%d is satisfied\n", id); } } } |
-
Литература.
-
Антонов А.С. "Параллельное программирование с использованием технологии OpenMP: Учебное пособие".-М.: Изд-во МГУ, 2009. - 77 с. http://parallel.ru/info/parallel/openmp/
-
OpenMP Application Program Interface. Version 3.1 July 2011
http://www.openmp.org/mp-documents/OpenMP3.1.pdf
-
Презентация «Технология параллельного программирования OpenMP»:
ftp://ftp.keldysh.ru/K_student/Academy2015/OpenMP.ppt
-
sИнструкция по использованию вычислительного комплекса «Ломоносов»
http://parallel.ru/sites/default/files/cluster/T500_user_guide-3.pdf
-
Статья из Википедии
http://ru.wikipedia.org/wiki/Проблема_обедающих_философов
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.