\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-02-08}
\title{Параллельное программирование}
\author{Зайцев Вадим, ФИТ НГУ, 9204}

\makeindex

\begin{document}

%\maketitle

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

Реализация алгоритма умножения двух матриц с использованием POSIX threads.

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

Распределение задачи между потоками осуществляется статически: при запуске каждый поток в качестве 
аргумента принимает номера строк или блоков результирующей матрицы, которые ему надо посчитать.
Было реализовано два варианта умножения: обычное по определению и с разбиением на блоки.

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

Измерение времени осуществлялось с помощью системной команды \textsf{time}.
Размер матрицы: $ 2000 \times 2000$.
\newline
\newline
\begin{tabular}{|l|c|r|r|} \hline
\multirow{2}{*}{\textbf{Реализация}} & 
\multirow{2}{*}{\textbf{Кол-во потоков}} & 
\multicolumn{2}{|c|}{\textbf{Время}} \\ \cline{3-4}
& & обычное & блочное (100) \\ \hline
\multicolumn{2}{|l|}{Однопоточная} & 19.209 & 20.520 \\ \hline
Многопоточная                  & 1 & 19.148 & 20.460 \\ \hline
Многопоточная                  & 2 & 10.685 & 11.275 \\ \hline
Многопоточная                  & 3 &  7.887 &  8.241 \\ \hline
Многопоточная                  & 4 &  6.913 &  6.706 \\ \hline
Многопоточная                  & 5 &  7.858 &  7.644 \\ \hline
Многопоточная                  & 6 &  7.181 &  6.797 \\ \hline
\end{tabular}


\end{document}
