|  | 
|  | 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