-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathsection5_1.tex
More file actions
18 lines (18 loc) · 5.37 KB
/
section5_1.tex
File metadata and controls
18 lines (18 loc) · 5.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{ %section5_1
\subsection{Порядок выполнения работы}
\begin{enumerate}
\itemВ исходном коде программы, полученной в результате выполнения лабораторной работы №1, нужно на этапах Map и Merge все циклы с вызовами математических
функций заменить их векторными аналогами из библиотеки «AMD Framewave» (\url{http://framewave.sourceforge.net}). При выборе конкретной Framewave-функции необходимо убедиться, что она помечена как MT (Multi-Threaded), т.е. распараллеленная. Полный перечень доступных функций находится по ссылке: \url{http://framewave.sourceforge.net/Manual/fw_section_060.html#fw_section_060}. Например, Framewave-функция min в списке поддерживаемых технологий имеет только SSE2, но не MT.
\par\textit{Примечание:} выбор библиотеки Framewave не является обязательным, можно использовать любую другую параллельную библиотеку, если в ней нужные функции распараллелены, так, например, можно использовать ATLAS (для этой библиотеки необходимо выключить троттлинг и энергосбережение, а также разобраться с механизмом изменения числа потоков) или Intel Integrated Performance Primitives.
\itemДобавить в начало программы вызов Framewave-функции \\SetNumThreads(M) для установки количества $М$ создаваемых параллельной библиотекой потоков, задействуемых при выполнении распараллеленных Framewave-функций. Нужное число M следует устанавливать из параметра командной строки (argv) для удобства автоматизации экспериментов.
\par\textit{Примечание:} При использовании Intel IPP функцию SetNumThreads(M) не нужно использовать. Необходимо компилировать программу под разное количество потоков.
\itemСкомпилировать программу, не применяя опции автоматического распараллеливания, использованные в лабораторной работе №1. Провести эксперименты с полученной программой для тех же значений $N_1$ и $N_2$, которые использовались в лабораторной работе №1, при $M\;=\;1,\;2,\;…,\;K$, где $K$ – количество процессоров (ядер) на экспериментальном стенде.
\itemСравнить полученные результаты с результатами лабораторной работы №1: на графиках показать, как изменилось время выполнения программы, параллельное ускорение и параллельная эффективность.
\itemНаписать отчёт о проделанной работе.
\itemПодготовиться к устным вопросам на защите.
\item\textbf{Необязательное задание №1} (для получения оценки «четыре» и «пять»). Исследовать параллельное ускорение для различных значений $M > K$, т.е. оценить накладные расходы при создании чрезмерного большого количества потоков. Для иллюстрации того, что программа действительно распараллелилась, привести график загрузки
процессора (ядер) во время выполнения программы при $N\;=\;N_2$ для всех использованных $M$. Для получения графика можно как написать скрипт, так и просто сделать скриншот диспетчера задач, указав на скриншоте моменты начала и окончания эксперимента (в отчёте нужно привести текст скрипта или название использованного диспетчера).
\item\textbf{Необязательное задание №2} (для получения оценки «пять»). Это задание выполняется только после выполнения предыдущего пункта. Используя закон
Амдала, рассчитать коэффициент распараллеливания для всех экспериментов и привести его на графиках. Прокомментировать полученные результаты.
\end{enumerate}
}