REPORT (Практикум)
Описание файла
Файл "REPORT" внутри архива находится в следующих папках: Практикум, 2010 Практикум. Отчёт (Ткаченко). Документ из архива "Практикум", который расположен в категории "". Всё это находится в предмете "суперкомпьютерное моделирование и технологии" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "REPORT"
Текст из документа "REPORT"
Московский Государственный Университет имени М.В. Ломоносова
Факультет Вычислительной Математики и Кибернетики
Отчет по практикуму
"Суперкомпьютерные технологии"
Выполнил студент 501 группы
Ткаченко Максим Сергеевич
Москва, 2010
Оглавление
Формулировка задачи 3
Внесенные изменения в программу 5
Гибридная реализация программы 5
Regatta p690 6
Blue Gene/P 7
Часть 1. Изучение эффективности гибридной реализации 7
Часть 2. Изучение эффективности алгоритмов из пакета PETSc 10
Формулировка задачи
Для заданной MPI-программы метода сопряженных градиентов без предобусловливания реализовать гибридную MPI/OpenMP программу с диагональным предобусловливанием.
Замерить эффективность работы программы на двух высокопроизводительных компьютерных комплексах представленных ниже.
-
Regatta p690 (исследование только MPI реализации).
-
Для платформы Regatta необходимо построить график ускорения MPI-программы для числа процессоров np = 1, 2, 4, 8 и СЛАУ размерности N = 1024, 2048, 4096.
-
-
Blue Gene/P (исследование MPI/OpenMP реализации), сравнить эффективность MPI-программы с полученной гибридной реализацией.
-
Построить таблицу, содержащую время решения, число итераций при решении системы линейных уравнений размерности N = 1024, 2048, 4096 для числа узлов np = 1, 2, 4, 8, 16, 32, 64, 128 в режиме mode = SMP с 3 нитями.
-
Построить графики ускорения программы для числа узлов np = 1, 2, 4, 8, 16, 32, 64, 128 для режима выполнения задач mode = SMP с тремя OpenMP-нитями для размерности системы уравнений N = 1024, 2048, 4096.
-
Построить график нормы невязки в зависимости от номера итерации для 128 процессоров, режима выполнения задачи mode = SMP c 3 нитями и матриц размеров: 1024, 2048, 4096.
-
-
Провести исследование эффективности параллельной программы решения системы линейных уравнений, использующей параллельную математическую библиотеку PETSc. Размеры матриц и число узлов такие же, как в пункте 2, mode = VN.
Начальное приближение решения задается по формуле:
x[i] = size/2, где size – размер матрицы коэффициентов.
Порог точности решения: 1.010-100.
Максимальное число итераций: 1100.
Внесенные изменения в программу
Гибридная реализация программы
Добавлены новые переменные, отвечающие за инициализацию многонитевого режима: int required = MPI_THREAD_FUNNELED, provided;
Изменена строка инициализации MPI:
MPI_Init_thread(&argc, &argv, required, &provided);
В код добавлены следующие строки с подчеркнутые строки перед циклами:
1) #pragma omp parallel for
for(index=0; index<VectorSize; index++)
Vector_X[index] = 0.0;
2) #pragma omp parallel for
for(index=0; index<Bloc_VectorSize; index++)
Bloc_Direction_Vector[index] = 0 - Bloc_Residue_Vector[index];
3) #pragma omp parallel for
for(index=0; index<NoofRows_Bloc; index++)
Buffer[index] = ComputeVectorDotProduct(...);
4) #pragma omp parallel for
for(index = 0; index<Bloc_VectorSize; index++) {
Bloc_Vector_X[index] = Vector_X[MyRank*Bloc_VectorSize+index] + Tau*Bloc_Direction_Vector[index];
Bloc_Residue_Vector[index] = Bloc_Residue_Vector[index] + Tau*Buffer[index];
}
5) #pragma omp parallel for
for(index=0; index<Bloc_VectorSize; index++)
Bloc_Direction_Vector[index] = -Bloc_Residue_Vector[index] + Beta*Bloc_Direction_Vector[index];
6) Функция CalculateResidueVector переписана следующим образом:
int irow, index, GlobalVectorIndex;
double value;
GlobalVectorIndex = MyRank * NoofRows_Bloc;
#pragma omp parallel for private(index, value, irow)
for(irow=0; irow<NoofRows_Bloc; irow++) {
index = irow * VectorSize;
value = ComputeVectorDotProduct(...);
Bloc_Residue_Vector[irow] = value - Input_B[GlobalVectorIndex+irow];
}
Regatta p690
Исследование MPI реализации. График ускорения MPI-программы для числа процессоров np = 1, 2, 4, 8 и СЛАУ размерности N = 1024, 2048, 4096.
Ограничение: 1100 итераций. Точность: 1.0E-100.
Blue Gene/P
Часть 1. Изучение эффективности гибридной реализации
Число узлов | Размерность СЛАУ N | Время решения T | Ускорение S | Количество итераций I | |
1 | 1024 | 3.154385 | 1.00 | 1100 | |
2 | 1024 | 1.707341 | 1.85 | 1100 | |
4 | 1024 | 1.076477 | 2.93 | 1100 | |
8 | 1024 | 0.514398 | 6.13 | 1100 | |
16 | 1024 | 0.305834 | 10.31 | 1100 | |
32 | 1024 | 0.204877 | 15.40 | 1100 | |
64 | 1024 | 0.155813 | 20.24 | 1100 | |
128 | 1024 | 0.136072 | 23.18 | 1100 | |
1 | 2048 | 12.855942 | 1.00 | 1100 | |
2 | 2048 | 6.690211 | 1.92 | 1100 | |
4 | 2048 | 3.931581 | 3.27 | 1100 | |
8 | 2048 | 1.91093 | 6.73 | 1100 | |
16 | 2048 | 0.999089 | 12.87 | 1100 | |
32 | 2048 | 0.595434 | 21.59 | 1100 | |
64 | 2048 | 0.392409 | 32.76 | 1100 | |
128 | 2048 | 0.288079 | 44.63 | 1100 | |
1 | 4096 | 54.931365 | 1.00 | 1100 | |
2 | 4096 | 26.129344 | 2.10 | 1100 | |
4 | 4096 | 14.475097 | 3.79 | 1100 | |
8 | 4096 | 7.272063 | 7.55 | 1100 | |
16 | 4096 | 3.859215 | 14.23 | 1100 | |
32 | 4096 | 2.059823 | 26.67 | 1100 | |
64 | 4096 | 1.215567 | 45.19 | 1100 | |
128 | 4096 | 0.984567 | 55.79 | 1100 |
Количество итераций: 150. 128 процессоров. 3 нити OpenMP.
Часть 2. Изучение эффективности алгоритмов из пакета PETSc
Ограничение: 1100 итераций. Точность: 1.0E-100.