OpenMPLab2015_2bg (811090)
Текст из файла
Задание 2. Алгоритм релаксации Якоби.
Разработка параллельной программы и исследование ее эффективности.
Постановка задачи.
Дана последовательная программа, реализующая алгоритм релаксации Якоби.
Требуется разработать параллельную программу с использованием технологии OpenMP и провести исследование ее эффективности.
Цель.
Получить навыки распараллеливания существующих программ на языке Си с использованием технологии OpenMP.
Распараллеливание осуществляется с помощью анализа последовательной программы, аналогично анализу распараллеливающего компилятора. Поэтому не предполагается знания указанного алгоритма.
Требуется.
-
Разработать параллельную версию программы с использованием технологии OpenMP
-
Исследовать время выполнения разработанной программы в зависимости от размера сетки и количества используемых ядер на вычислительном комплексе IBM Blue Gene/P.
-
Построить таблицу:
Размер системы | Последовательный алгоритм | Параллельный алгоритм | |||||
1 ядро | 2 ядра | 4 ядра | |||||
Время | Ускорение | Время | Ускорение | Время | Ускорение | ||
256x256x256 | |||||||
384x384x384 |
Ускорение (speedup), получаемое при использовании параллельного алгоритма для p процессоров, определяется величиной:
Speedup(n) = T1(n)/Tp(n),
где T1(n)- время последовательного выполнения задачи,
Tp(n)- время параллельного выполнения задачи при использовании p ядер.
-
Построить графики - зависимость ускорения от количества процессоров для разных размеров систем линейных уравнений.
-
Сделать выводы по полученным результатам (объяснить убывание или возрастание производительности параллельной программы при увеличении числа используемых ядер, сравнить поведение параллельной программы в зависимости от размера сетки).
-
Отчет о выполнении задания, включающий таблицу c временами, графики, текст программы и выводы отправить на omplab@gmail.com
Методические указания.
-
Трансляция OpenMP программ.
-
Запуск программы на счет.
-
Последовательная программа.
-
Литература.
-
Для компиляции OpenMP-программы c используйте команду:
mpixlc_r -qsmp=omp <имя_программы>.c -o <имя_программы>
-
Для запуска программы на счет используйте следующие команды.
2.1 Запуск программы на 1-ой нити:
mpisubmit.bg -n 1 -e "OMP_NUM_THREADS=1" ./<имя_программы>
2.2 Запуск программы на 2-х нитях:
mpisubmit.bg -n 1 -e "OMP_NUM_THREADS=2" ./<имя_программы>
2.3 Запуск программы на 4-х нитях:
mpisubmit.bg -n 1 -e "OMP_NUM_THREADS=4" ./<имя_программы>
-
Последовательная программа.
#include <math.h> #include <stdlib.h> #include <stdio.h> #define Max(a,b) ((a)>(b)?(a):(b)) #define N 512 double maxeps = 0.1e-7; int itmax = 10; int i,j,k; double eps; double A [N][N][N], B [N][N][N]; void relax(); void resid(); void init(); void verify(); void wtime(double *t); int main(int an, char **as) { int it; double time0, time1; init(); /* time0=omp_get_wtime (); */ wtime(&time0); for(it=1; it<=itmax; it++) { eps = 0.; relax(); resid(); printf( "it=%4i eps=%f\n", it,eps); if (eps < maxeps) break; } wtime(&time1); /* time1=omp_get_wtime (); */ printf("Time in seconds=%gs\t",time1-time0); verify(); return 0; } void init() { for(i=0; i<=N-1; i++) for(j=0; j<=N-1; j++) for(k=0; k<=N-1; k++) { if(i==0 || i==N-1 || j==0 || j==N-1 || k==0 || k==N-1) A[i][j][k]= 0.; else A[i][j][k]= ( 4. + i + j + k) ; } } void relax() { for(i=1; i<=N-2; i++) for(j=1; j<=N-2; j++) for(k=1; k<=N-2; k++) { B[i][j][k]=(A[i-1][j][k]+A[i+1][j][k]+A[i][j-1][k]+A[i][j+1][k]+A[i][j][k-1]+A[i][j][k+1])/6.; } } void resid() { for(i=1; i<=N-2; i++) for(j=1; j<=N-2; j++) for(k=1; k<=N-2; k++) { double e; e = fabs(A[i][j][k] - B[i][j][k]); A[i][j][k] = B[i][j][k]; eps = Max(eps,e); } } void verify() { double s; s=0.; for(i=0; i<=N-1; i++) for(j=0; j<=N-1; j++) for(k=0; k<=N-1; k++) { s=s+A[i][j][k]*(i+1)*(j+1)*(k+1)/(N*N*N); } printf(" S = %f\n",s); } void wtime(double *t) { static int sec = -1; struct timeval tv; gettimeofday(&tv, (void *)0); if (sec < 0) sec = tv.tv_sec; *t = (tv.tv_sec - sec) + 1.0e-6*tv.tv_usec; } |
-
Литература.
-
Презентация «Технология параллельного программирования OpenMP»:
ftp://ftp.keldysh.ru/K_student/Academy2015/OpenMP.ppt
-
Антонов А.С. "Параллельное программирование с использованием технологии 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
-
Быстрый старт работы на системе Blue Gene/P
http://hpc.cmc.msu.ru/bgp/quickstart
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.