% Preamble
\documentclass[11pt,fleqn]{article}
\usepackage{amsmath, amsthm, amssymb}
\usepackage{fancyhdr}
\oddsidemargin	-0.25in
\textwidth	6.75in
\topmargin	-0.5in
\headheight	0.75in
\headsep	0.25in
\textheight	8.75in
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}
\lhead{HW Chap. 5\\\ \\\ }
\rhead{Josh Holtrop\\2008-11-05\\CS 677}
\rfoot{\thepage}

\begin{document}

\noindent
\begin{enumerate}
\item[1.]{
    The best known sequential sorting algorithms have a complexity of $O (n \log n)$.
    So, the speedup factor is given by
    $$ s = \frac{T_s}{T_p} = \frac{n \log n}{cn} = \frac{\log n}{c} $$
}

\item[2.]{
    The total processing time when the program is run on $p$ processors
        will be given by the initialization phase plus the compute phase
        divided by $p$ processors.
    So, the speedup is given by
    $$ s = \frac{T_s}{T_p} = \frac{n + n^3}{n + \frac{n^3}{p}} $$
}

\item[3.]{
    Using Amdahl's law, the maximum speedup is $1/f$, where $f$ is the
        serial fraction of execution time.
    So, the maximum fraction of execution time a program can spend on
        serial code if the parallel version must achieve a speedup
        factor of 10 is 10\%.
}

\vskip 1em
\item[4.]{
    Using Gustafson's law, the scaled speedup factor is given by
    $$ S_G = p + (1 - p) T_s = 8 + (1 - 8) \frac{1}{24} = 7.708 $$
}

\item[5.]{
    Output from instrumented Floyd program: \\
\texttt{
\$ ./floyd-sequential adjacency.dat \\
Serial execution time: 0.0248399 seconds \\
Parallel execution time: 2.01773 seconds
        }

    This means that the percent of sequential code is roughly 1.23\%
        (for a problem size of $n = 400$).
    Using Amdahl's law, the maximum speedup that can be achieved with
        this program (for this problem size) is given by
    $$ S_{\textrm{max}} = \frac{1}{1.23\%} = 81.25 $$
}

\end{enumerate}

\end{document}
