парал прогр / 2020-2021_311_ParalRasprProgram_Gnosheva_work01 (1)
.pdfАрхитектура компьютера
8 гб ОП, процессор CISC 4 ядра, 8 логических процессоров
Вариант 1.
В работе изучалось использование потоков OMP и операции редукции, приводящих к уменьшению времени вычисления интегралов.
Интеграл решался по методу треугольников.
Последовательная версия
Для реализации последовательной версии был создан проект - консольное приложение с именем 01_seq в рамках решения numericIntegral,затем файл с именем main_s.cpp содержащий следующее:
1) Переменные:
2) Цикл запуска экспериментов для уточнения замеров времени:
3) Функция integral() для вычисления приближенного значения интеграла:
4) Функция experiment(), которая задает границы интегрирования и вызывает функцию вычисления интеграла:
Как видно на скриншоте, шаг h был подобран со значением 0.000001
Сравним время выполнения алгоритма численного интегрирования с использованием разных режимов.
Режим Debug
h |
execution time |
0.001 |
0.0001; 0; 0.001 |
0.00001 |
0.0027; 0.002; 0.003 |
0.000001 |
0.0259; 0.025; 0.027 |
|
|
Режим Release
h |
|
execution time |
0.001 |
|
0; 0; 0 |
0.00001 |
|
0.0023; 0.002; 0.003 |
|
|
|
0.000001 |
|
0.0205; 0.019; 0.024 |
|
|
|
|
Параллельная версия |
В рамках решения numericIntegral был создан новый проект с названием 01_omp и файл main.cpp, который содержит в себе точную копию файла main_s.cpp из предыдущего проекта.
Для того, чтобы распараллелить работу в код , перед циклом, была добавлена строка #pragma omp parallel for