Задания. Задача 1.Откомпилировать и выполнить программу 3.4.3.2., задающую базовую структуру MPI-программ

Задача 1. Откомпилировать и выполнить программу 3.4.3.2., задающую базовую структуру MPI-программ. Запустить программу на количестве процессоров от 1 до 4.

Задача 2. Написать и отладить MPI-программу, в которой корневой процесс (процесс с рангом 0) выдает на консоль количество запущенных процессов, а также сообщение

Root process: Hello, world”,

а все остальные процессы выдают сообщение

“Slave process: my rank is xxxx”,

где xxx есть ранг соответствующего процесса.

Выполнить запуски программы на разном количестве процессоров.

Задача 3. Оттранслировать и запустить на выполнение программу 3.4.4.1.1. с параметром –np 2, в которой процесс с номером 0 “пингует” (посылает тестовое сообщение, в данном случае, длины 1) процессу с номером 1, и ждет от него ответного сообщения.

Задача 4. Написать программу, в которой процесс с номером 0 пингует все процессы в группе (кроме самого себя), посылая им однобайтовые сообщения и принимая от них такие же ответные сообщения.

Задача 5. Реализоватьпрограмму суммирования элементов вектора на заданном числе процессов (задается через аргументы): мастер-процесс посылает дочерним части вектора, дочерние возвращают суммы частей, после чего мастер-процесс их суммирует и выводит результат, время выполнения. Сравнить с последовательным вариантом суммирования для 5000, 10000, 50000 элементов (для замер времени выполнения использовать функции приложения 2).

Задача 6. Реализоватьпрограмму умножения матрицы A на вектор b: мастер-процесс посылает дочерним часть матрицы A(блок строк) и реплицирует вектор b, каждый процесс обрабатывает части, после чего все собирается мастер-процессом.

Задача 7. Реализоватьпрограмму умножения матрицы A на вектор b: мастер-процесс посылает дочерним части матрицы A(блок строк) и вектора b, дочерние анализируют часть А, определяют необходимые для вычислений части вектора b (случай разреженной матрицы), запрашивают у процессов, производят вычисления, частные результаты собираются мастер-процессом. Сравнить время выполнения с результатом зад.6.

Задача 8. Реализоватьпрограмму ленточного умножения матрицы A на матрицу В. Каждый процесс получает блок строк матрицы А и блок строк матрицы В. Запрашивает необходимые части матрицы В у других процессов. Проводит вычисления. Сбор результатов мастер-процессом.

Задача 10. Реализовать посылку сообщений (например, значений ранга) от всех процессов в группе, процессу с заданным рангом (этот ранг является входным параметром программы) с помощью функции MPI_Gather.

Задача 11. Оттранслировать и выполнить с параметром –np 4 программу 3.4.5.1.4., в которой функция MPI_Scatter используется для рассылки строк матрицы чисел с плавающей точкой по отдельным процессам.

Дополнить эту программу фрагментом, в котором отдельные процессы суммируют все элементы полученной строки и возвращают полученные результаты корневому процессу с помощью функции MPI_Gather.

Задача 13. Реализовать программу, которая

1) рассылает строки исходной прямоугольной матрицы по процессам;

2) находит максимальный элемент в каждом столбце этой матрицы,

3) умножает все элементы i-ой строки матрицы на максимальный элемент i-го столбца,

4) собирает полученную матрицу в процессе с номером 0.

5) сохраняет результат на машине процессора 0.

Приложение 1.

Активизация MPI в Visual C++

  1. Установите mpich2-1.0.7-win32-ia32.msi на все машины предполагаемого кластера. Например, в папку C:\Program Files\.
  2. Используя программу wmpiconfig.exe сконфигурировать рабочие места.
  3. Создать консольное приложение CLR в Microsoft Visual Studio
  4. Установите параметры компиляции проекта:
    1. Откройте диалоговое окно свойств проекта: Project -> <Название проекта> properties.
    2. Раскройте вкладку Configuration properties -> C/C++ -> General.
    3. Установите значение параметра Additional Include Directories: "C:\Program Files\MPICH2\Include".
    4. Раскройте вкладку Configuration properties -> Linker -> General.
    5. Установите значение параметра Additional Library Directories: "C:\Program Files\MPICH2\Lib".
    6. Раскройте вкладку Configuration properties -> Linker -> Input.
    7. Установите значение параметра Additional Dependencies: cxxd.lib mpi.lib.
  5. Скомпилируйте Вашу программу:
    1. Build -> Build <Название проекта>.
  6. Запустите Вашу программу:
    1. Откройте папку Вашего проекта в Far.
    2. Создайте на диске каталог с общим доступом (напр, D:\temp\).
    3. Скопируйте туда полученный ехе-файл (напр, sample.exe).
    4. Добавьте в папку Debug (!!!) файл (Shift + F4) с именем run.bat.
    5. Скопируйте строку ниже в run.bat:

"D:\Program Files\MPICH2\bin\mpiexec.exe" -np 3 "D:\temp\sample.exe" > out.txt

Примечание:
Аттрибут -np означает количество процессов в приложении.

    1. Сохраните изменения в run.bat (F2).
    2. Закройте run.bat (F10).
    3. Выполните run.bat (Enter).
    4. Результат выполнения программы посмотрите в файле out.txt папки Debug.

Приложение 2


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: