
Среда программирования: Visual C++ .NET 2012
Название работы: Технология MPI - 6 заданий. Технология OpenMP - 11 заданий.
Вид работы: Лабораторная работа
Тематика работы: Технологии
Объем программы: 5 (по десятибалльной шкале)
Уровень сложности: 5 (по десятибалльной шкале)
Разработчик (автор):
Программист сайта kursovik.com
(письмо автору)
Данная работа написана ЧЕЛОВЕКОМ без использования ИИ
Ключевые слова: технология MPI, MPI, MPICH2, процесс, MPI-функция, нить, thread, reduction, schedule, параллельно, параллельное вычисление, параллельный цикл
Функции программы:
Задание 1. Установить и настроить MPI.
Задание 2. Настроить среду MS Visual Studio для работы с MPI. Написать программу вывода на экран строки «Hello World!». Протестировать работу программы с помощью среды MPICH2.
Задание 3. Напишите программу, в которой каждый процесс выводит на экран свой номер и общее количество процессов в приложении в формате:
I am <Номер процесса> process from <Количество процессов> processes!
Задание 4. Напишите программу, в которой каждый процесс с четным номером выводит на экран строку «I am <Номер процесса>: FIRST!», а каждый процесс с нечетным номером – «I am <Номер процесса>: SECOND!». Процесс с номером 0 должен вывести на экран общее количество процессов в приложении в формате «<Количество процессов> processes.».
Задание 5. Изучите основные MPI-функции блокирующей передачи сообщений точка-точка MPI_Send и MPI_Recv. Напишите MPI-программу, в которой с помощью данных функций процесс с номером 0 отправляет сообщение процессу с номером 1. Процесс 1 выводит полученное сообщение на экран.
Технология OpenMP
Задание 1. Создайте проект в среде MS Visual Studio 2010 с поддержкой OpenMP.
Задание 2. Напишите OpenMP-программу, в которой создается 4 нити и каждая нить выводит на экран строку «Hello World!».
Задание 3. Посетите сайт http://www.openmp.org/ найдите текущую версию OpenMP. Опишите модель параллельных вычислений с помощью технологии OpenMP (в тетради).
Задание 4. Напишите программу, в которой создается k нитей, и каждая нить выводит на экран свой номер и общее количество нитей в параллельной области в формате: I am <Номер нити> thread from <Количество нитей> threads!
Задание 5. Модифицируйте программу таким образом, чтобы строку I am <Номер нити> thread from <Количество нитей> threads! выводили только нити с четным номером.
Задание 6. Изучите конструкции для управления работой с данными shared и private. Напишите программу, в которой создается k нитей, и каждая нить выводит на экран свой номер через переменную rank следующим образом:
rank = omp_get_thread_num();
printf("I am %d thread.\n", rank);
Экспериментами определите, общей или частной должна быть переменная rank.
Задание 7. Напишите программу, в которой две нити параллельно вычисляют сумму чисел от 1 до N. Распределите работу по нитям с помощью оператора if языка С. Для сложения результатов вычисления нитей воспользуйтесь OpenMP-параметром reduction.
Задание 8. Изучите OpenMP-директиву параллельного выполнения цикла for. Напишите программу, в которой k нитей параллельно вычисляют сумму чисел от 1 до N. Распределите работу по нитям с помощью OpenMP-директивы for. При этом каждая нить выводит свою частичную сумму в формате «[Номер_нити]: Sum = <частичная_сумма>», один раз выводится общая сумма в формате «Sum = <сумма>».
Задание 9. Изучите параметр schedule директивы for. Модифицируйте программу «Сумма чисел» из задания 6 таким образом, чтобы дополнительно выводилось на экран сообщение о том, какая нить, какую итерацию цикла выполняет: [<Номер нити>]: calculation of the iteration number <Номер итерации>.
Задание 10. Перепишите программу, в которой параллельно вычисляется сумма чисел от 1 до N, без использования параметра reduction. Вместо параметра reduction используйте директиву atomic.
Задание 11. Распараллеливание циклов в OpenMP: программа «Матрица» Напишите OpenMP-программу, которая вычисляет произведение двух квадратных матриц
Описание (отчет):
Есть
, посмотреть оглавление
OMP
task2
Release
task2
task2
task2
ReadMe
stdafx
stdafx
targetver
task2
task2
task2.vcxproj
task2
task2.v11
task4
Release
task4
task4
task4
ReadMe
stdafx
stdafx
targetver
task4
task4
task4.vcxproj
task4
task4.v11
task5
Release
task5
task5
task5
ReadMe
stdafx
stdafx
targetver
task5
task5
task5.vcxproj
task5
task5.v11
task6
Release
task6
task6
task6
ReadMe
stdafx
stdafx
targetver
task6
task6
task6.vcxproj
task6
task6.v11
task7
Release
task7
task7
task7
ReadMe
stdafx
stdafx
targetver
task7
task7
task7.vcxproj
task7
task7.v11
task8
Release
task8
task8
ReadMe
stdafx
stdafx
targetver
task8
task8
task8.vcxproj
task8
task8.v11
MPI
task2
Release
mpiexec
task2
task2
ReadMe
stdafx
stdafx
targetver
task2
task2
task2.vcxproj
task2
task3
Release
mpiexec
task3
task3
ReadMe
stdafx
stdafx
targetver
task3
task3
task3.vcxproj
task3
task4
Release
mpiexec
task4
task4
ReadMe
stdafx
stdafx
targetver
task4
task4
task4.vcxproj
task4
task5
Release
mpiexec
task5
task5
ReadMe
stdafx
stdafx
targetver
task5
task5
task5.vcxproj
task5
task6
Release
mpiexec
task6
task6
ReadMe
stdafx
stdafx
targetver
task6
task6
task6.vcxproj
task6
Предварительный просмотр
Предварительный просмотр
Предварительный просмотр
|
Стоимость ИСХОДНОГО ТЕКСТА программы составляет 3300 руб РФ Продажа каждой работы строго учитывается, у каждой работы есть своя история продаж. |