%\documentclass[a4paper,titlepage]{slides}
\documentclass[a4paper,landscape,titlepage]{slides}

\usepackage[latin1]{inputenc}
\usepackage[german]{babel}
%\usepackage{portland}
\usepackage{lscape}
%\usepackage[dvips]{color}
\usepackage{array}
\usepackage{dcolumn}
\usepackage{epsfig}
%\input{epsf}

\newcommand{\slidetitle}[1]{\vspace{4ex}{\large\centerline{#1}}\vspace{1ex}}
%\newcommand{\epsline}[1]{\vspace{1ex}\centerline{\epsffile{#1.eps}}}
\newcommand{\epsline}[2]{\vspace{1ex}\centerline{\epsfig{file=#1.eps}}}
%\wepsline{file,width}
\newcommand{\wepsline}[2]{\vspace{1ex}\centerline{\epsfig{file=#1.eps,width=#2}}}
\newcommand{\white}[1]{\textcolor{white}{#1}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\rep}[1]{{\Large$\downarrow$}\makebox[0pt][l]{#1}}
\newcommand{\comment}[1]{}
%\pass{arrow}{components}
\newcommand{\pass}[2]{\(\left.\mbox{\fbox{\begin{tabular}{l}#2\end{tabular}}}\right#1\)}
\newenvironment{portrait}{}{}
\newenvironment{myitemize}{\begin{list}{$\bullet$}{\setlength{\itemsep}{0ex}\setlength{\topsep}{0ex}}}{\end{list}}

\newcolumntype{.}{D{.}{.}{2}}


\setlength\paperwidth{28cm} %4:3 aspect ratio
\setlength\textheight{\paperheight}
\addtolength\textheight{-1cm}
  \setlength\topmargin{\paperheight}
  \addtolength\topmargin{-2in}
  \addtolength\topmargin{-\headheight}
  \addtolength\topmargin{-\headsep}
  \addtolength\topmargin{-\textheight}
  \addtolength\topmargin{-\footskip}     % this might be wrong!
  \addtolength\topmargin{-.5\topmargin}
%\addtolength\evensidemargin{-2cm}
\addtolength\oddsidemargin{-1cm}
%\addtolength\textwidth{4cm}

\title{Ausnutzen von Multi-Cores mittels Pipelines\\Forschungsplan}
\author{
M. Anton Ertl\\
TU Wien\\
%	\texttt{anton@mips.complang.tuwien.ac.at}\\
%	\texttt{http://www.complang.tuwien.ac.at/anton/}\\[2mm]
%	Institut f\"ur Computersprachen\\
%        Technische Universit\"{a}t Wien
}
\date{}
\begin{document}
%\begin{landscape}
\maketitle
%\end{landscape}

\begin{slide}
\slidetitle{Problem}

\begin{itemize}

\item Mehr Cores statt mehr GHz

\item Concurrent Programming (mutexes etc.) zu schwierig

\item Parallel Programming (Datenparallelismus) zu eingeschränkt

\end{itemize}
\end{slide}

\begin{slide}
\slidetitle{Lösung}

\begin{itemize}

\item Pipeline Parallelismus mit vielen Tasks

\item Implementierung: Effizienter (lockless) Ringpuffer

\item Implementierung: Lastausgleich durch\\
  dynamisches Umschalten zwischen Ringpuffer und Coroutining\\
      \wepsline{implementation}{12cm}

\end{itemize}
\end{slide}


\begin{slide}
\slidetitle{Wie publiziere ich das?}

\begin{itemize}

\item Pipeline-Parallelismus ist nicht neu\\
      Lockless FIFO auch nicht

\item Aber es ist auch kein etabliertes Thema

\item Zu zeigen\\
  Pipeline-Parellelismus bringt's\\
  Meine Implementierungsidee bringt's

\end{itemize}
\end{slide}


\begin{slide}
\slidetitle{Zeige: Pipeline-Parellelismus bringt's}

\begin{itemize}

\item Beispielprogramme schreiben und Parallelismus messen

\item Implementation/Programmiersprache nötig

\item Sehr viel Aufwand\\
      Nichts für mich

\item Xjava (Walter Tichy et al., Karlsruhe)

\end{itemize}
\end{slide}


\begin{slide}
\slidetitle{Zeige: Implementierungsidee bringt's}

\begin{itemize}

\item Z.B. in Xjava implementieren und mit XJava-Programmen messen

\item evtl. langfristig, auch zuviel Aufwand für erstes Paper

\item Ein paar Microbenchmarks entwerfen und messen.

\item Separate Arbeiten für Ringpuffer und Dynamisches Umschalten

\end{itemize}
\end{slide}


\begin{slide}
\slidetitle{Welche Mikrobenchmarks für Ringpuffer}

\begin{itemize}

\item Kommunikationsdurchsatz über Ringpuffer\\
      im Idealfall und bei leerem oder vollen Puffer\\
      Vergleich mit publiziertem lockless FIFO

\item Skalierbarer Rechenaufwand\\
      Graph: Rechenaufwand vs. Durchsatz

\item Messungen auf verschiedener Hardware (1-Sockel und 2-Sockel)

\end{itemize}
\end{slide}

\begin{slide}
\slidetitle{Welche Mikrobenchmarks für Ringpuffer mit Coroutining}

\begin{itemize}

\item Ringpuffer allein mit zuvielen Threads fuer Cores\\
      vs. mit Umschalten auf Coroutining

\item Overhead von Coroutining

\item Eine Last, die dynamisches Hin- und Herschalten erfordert

\item Wie skaliert das dynamische Umschalten mit der Anzahl der Tasks
      und der Threads

\end{itemize}
\end{slide}
\end{document}
