\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[TS1,T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{tikz}
\usepackage{multirow}
\usepackage[pdfborder={0 0 0}, colorlinks=true, urlcolor=blue, linkcolor=blue]{hyperref}

\hoffset=-3cm
\textwidth=18cm
\voffset=-3cm
\textheight=24.5cm

\date{2012-04-15}
\title{Параллельное программирование}
\author{Зайцев Вадим, ФИТ НГУ, 9204}

\makeindex

\begin{document}

%\maketitle

\section{Постановка задачи}

$$ a_{i, j}^{k+1} = \frac{ a_{i-1, j}^k + a_{i, j+1}^k + a_{i+1, j}^k + a_{i, j-1}^k + a_{i, j}^k}{5} $$

\section{Подход к распараллеливанию}

\subsection{Деление по строкам}

Статически распределяем задачу между потоками: при запуске каждый поток в качестве аргумента 
принимает интерал строк [$start_i$; $end_i$) ($i$ = $0$ \ldots $T$-$1$, $end_i = start_{i+1}$ для 
$i$ = $0$ \ldots $T$-$2$, где $T$ - количество потоков) матрицы, которые ему надо 
посчитать. Т. к. все потоки вычисляют различные элементы матрицы $C$, то синхронизация не требуется.

\subsection{Очередь элементов}


\section{Реузльтаты тестирования}

Измерение времени осуществлялось с помощью системной команды \textsf{time}.
Размер матрицы $n = 2000$, количество итераций -- $1000$.

Время работы однопоточной реализации: 160 с.
\newline
\newline
\begin{tabular}{|l|c|r|r|} \hline
\multirow{2}{*}{\textbf{Реализация}} & 
\multirow{2}{*}{\textbf{Кол-во потоков}} & 
\multicolumn{2}{|c|}{\textbf{Время (в секундах)}} \\ \cline{3-4}
& & по строкам & очередь \\ \hline
%\multicolumn{2}{|l|}{Однопоточная} & 19.209 & 20.520 &       - \\ \hline
Многопоточная                  & 1 & 160 & 161  \\ \hline
Многопоточная                  & 2 & 87 & 88  \\ \hline
Многопоточная                  & 3 & 62 & 64  \\ \hline
Многопоточная                  & 4 & 51 & 52  \\ \hline
\end{tabular}




\end{document}
