Skip to content

Repository files navigation

Параллельные вычисления с MPI

О проекте

Данный проект демонстрирует эффективность параллельных вычислений с использованием MPI (Message Passing Interface) на примере двух задач:

  1. Вычисление числа π методом Монте-Карло
  2. Умножение матрицы на вектор с различными схемами распределения данных

Результаты тестирования

Данные в таблицах представлены в формате: время(ускорение)

Вычисление числа π методом Монте-Карло

Сводная таблица производительности

Количество точек Последовательный алгоритм 2 процессора 3 процессора 4 процессора
100 000 000 0,806 с (1,00x) 0,410 с (1,97x) 0,275 с (2,93x) 0,228 с (3,53x)
500 000 000 4,191 с (1,00x) 2,052 с (2,04x) 1,333 с (3,14x) 1,000 с (4,19x)
1 000 000 000 8,068 с (1,00x) 4,059 с (1,99x) 2,769 с (2,91x) 2,066 с (3,91x)

Анализ эффективности

  • Лучшее ускорение: 4.19x при 500M точек на 4 процессах
  • Эффективность: 85-105% (очень высокая)
  • Стабильность: Ускорение сохраняется при увеличении объема данных

Умножение матрицы на вектор

Сравнение методов распределения

Метод ROWS
Размер матрицы 1 Процесс 2 Процесса 3 Процесса 4 Процесса
1000 0,0113 с (1,00x) 0,0061 с (1,87x) 0,0045 с (2,51x) 0,0036 с (3,16x)
2000 0,0054 с (1,00x) 0,0028 с (1,96x) 0,0020 с (2,69x) 0,0018 с (2,97x)
3000 0,0112 с (1,00x) 0,0059 с (1,91x) 0,0043 с (2,62x) 0,0035 с (3,21x)
Метод COLUMNS
Размер матрицы 1 Процесс 2 Процесса 3 Процесса 4 Процесса
1000 - 0,0060 с (1,90x) 0,0042 с (2,70x) 0,0036 с (3,13x)
2000 - 0,0031 с (1,76x) 0,0020 с (2,71x) 0,0016 с (3,30x)
3000 - 0,0061 с (1,83x) 0,0044 с (2,52x) 0,0036 с (3,13x)
Метод BLOCKS
Размер матрицы 1 Процесс 2 Процесса 3 Процесса 4 Процесса
1000 - 0,0064 с (1,77x) 0,0043 с (2,65x) 0,0037 с (3,03x)
2000 - 0,0029 с (1,86x) 0,0019 с (2,83x) 0,0017 с (3,16x)
3000 - 0,0062 с (1,80x) 0,0039 с (2,87x) 0,0037 с (3,06x)

Рейтинг методов по эффективности

  1. ROWS - лучшая производительность и масштабируемость
  2. COLUMNS - хороший баланс производительности
  3. BLOCKS - немного отстает из-за сложности коммуникаций

Ключевые выводы

Сильные стороны параллелизации

  1. Высокое ускорение: До 4.19x на 4 процессах
  2. Хорошая масштабируемость: Ускорение растет с объемом задач
  3. Стабильность: Результаты предсказуемы и воспроизводимы

Оптимальные конфигурации

Задача Рекомендуемые процессы Лучший метод
Вычисление π 4 процесса Distribution 0
Матрицы 1000x1000 4 процесса Метод ROWS
Матрицы 2000x2000 4 процесса Метод COLUMNS
Матрицы 3000x3000 4 процесса Метод ROWS

Эффективность параллелизации

Количество процессов Среднее ускорение Эффективность
2 1.92x 96%
3 2.75x 92%
4 3.58x 90%

Инструкция по запуску

# Компиляция программ
mpicc -O3 -o pi_calculation pi_calculation_mpi.c -lm
mpicc -O3 -o matrix_vector matrix_vector_multiply.c -lm

# Запуск тестов
chmod +x test.sh
./test.sh

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages