|
| 1 | +{ %section8_1 |
| 2 | + \subsection{Порядок выполнения работы} |
| 3 | + \Large |
| 4 | + \begin{enumerate} |
| 5 | + \itemНа языке Си написать программу для вычисления числа A по формуле: |
| 6 | + $$A\;=\;2\;\cdot\;\frac2{\sqrt2}\;\cdot\;\frac2{\sqrt{2\;+\;\sqrt2}}\;\cdot\;\frac2{\sqrt{2\;+\;\sqrt{2\;+\;\sqrt2}}}\;\cdot\;\dots,$$ |
| 7 | + при этом пусть в вычислении используется N первых множителей, где N должно задаваться в программе в виде параметра. |
| 8 | + \itemПосле вычисления А программа должна вычислить число В по формуле: |
| 9 | + $$B\;=\;\frac6A\;{\textstyle\prod_ {i=1}^M}\left(\frac{2i\;+\;3}{2i\;+\:1}\right)^{2i\;+\;1}\left(\frac i{i\;+\:1}\right)^{2i}$$ |
| 10 | + при этом пусть в вычислении используется M первых множителей. |
| 11 | + \parДополнительные указания: в расчётах числа B не следует использовать целочисленное деление; программа должна использовать циклы for, записанные только в канонической форме; результаты вычисления А и В должны быть выведены в консоль: |
| 12 | + \begin{figure}[H] |
| 13 | + \includegraphics[width=1\linewidth]{lab5Example1} |
| 14 | + \end{figure} |
| 15 | + \parДополнительные указания: в расчётах числа B не следует использовать целочисленное деление; программа должна использовать циклы for, записанные только в канонической форме; результаты вычисления А и В должны быть выведены в консоль: |
| 16 | + \itemРаспараллелить программу из п.1, используя следующие директивы OpenMP: |
| 17 | + \begin{figure}[H] |
| 18 | + \includegraphics[width=1\linewidth]{lab5Example2} |
| 19 | + \end{figure} |
| 20 | + где значение C1 и C2 следует выбрать самостоятельно, приведя в отчёте обоснование сделанного выбора. Привести графики параллельного ускорения для различных N и M. |
| 21 | + \itemПереписать программу из п.2, используя Pthreads вместо OpenMP. Способ распараллеливания должен быть идентичен тому, что используется в п.2. Дополнительные указания: для реализации операции, соответствующей OpenMP-директиве reduction(...), следует использовать Pthreads-мьютекс; перед выводом числа А на экран следует использовать функцию pthread\textunderscore barrier\textunderscore wait; перед выводом числа В на экран следует использовать pthread\textunderscore join. |
| 22 | + \itemПровести сравнительный анализ программы из п.2 и п.3 (сравнить размер исполняемого файла, параллельное ускорение для разных N и M, количество строк кода, добавленного при распараллеливании и прочее). |
| 23 | + \itemЗадание на "четвёрку" и "пятёрку": параллельное ускорение в п.2 и п.4 должно быть измерено в виде доверительного интервала с доверительной вероятностью 0.95. |
| 24 | + \itemЗадание на "пятёрку": вместо директивы schedule(static...) в п.2 и п.3 следует использовать директиву schedule(dynamic...), если итерации внутри соответствующего цикла различаются по сложности вычислений. |
| 25 | + \end{enumerate} |
| 26 | +} |
0 commit comments