From 80b3de35a4597a42c17f8f7b59dd37c97f381692 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Tue, 1 Jul 2008 12:04:17 +0200 Subject: [PATCH] Copy Progress.tex to InternalProgress.tex. --- Presentations/InternalProgress.tex | 295 +++++++++++++++++++++++++++++ Presentations/Makefile | 8 +- 2 files changed, 301 insertions(+), 2 deletions(-) create mode 100755 Presentations/InternalProgress.tex diff --git a/Presentations/InternalProgress.tex b/Presentations/InternalProgress.tex new file mode 100755 index 0000000..6a710ab --- /dev/null +++ b/Presentations/InternalProgress.tex @@ -0,0 +1,295 @@ +\documentclass[hyperref={pdfpagelabels=false}]{beamer} + +%\setbeameroption{show notes} + +\mode +{ + %\useinnertheme{echt} + %\useinnertheme{proef} + \usetheme{recore} + \setbeamercovered{transparent} +%\setbeamertemplate{footline}[frame number] +} + +\usepackage[english]{babel} +\usepackage[latin1]{inputenc} +\usepackage{times} +\usepackage[T1]{fontenc} +\usepackage{acronym} +\usepackage{tikz} +\usepackage{multimedia} +\usepackage{subfigure} +\usepackage{booktabs} +% Can use a tiny fontsize +\usepackage{fancyvrb} + + +%\usepackage{pgfpages} +%\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm] + +%For handouts, use the following two lines: +%\usepackage{pgfpages} +%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm] + + +\title +{MontiumC Transforming} + +\author {Matthijs Kooijman} + +\institute[Recore Systems and University of Twente] +{ + \inst{}% + Recore Systems + \and + \inst{}% + Faculty of Electrical Engineering, Mathematics and Computer Science\\ + University of Twente + } + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame}{Contents} + \tableofcontents +\end{frame} + +\section{Introduction} + \begin{frame}{Montium Tile Processor} + \begin{itemize} + \item Explicitely parallel processor + \item Multilevel reconfiguration + \item Separate memory addressing units + \item Data oriented, limited control flow + \item Redesign on the way + \end{itemize} + \end{frame} + + \begin{frame}{MontiumC} + \begin{itemize} + \item Subset of C + \item Operations on data using MontiumC API + \item Compilable by gcc (as C++) + \item Under constant improvement + \end{itemize} + \end{frame} + + \begin{frame}{Low Level Virtual Machine (LLVM)} + \begin{itemize} + \item Compiler framework. + \item Provides: + \begin{itemize} + \item C Frontend + \item Intermediate representation (LLVM IR) + \item Transformation passes + \item Native codegenerators + \item JIT compilation + \end{itemize} + \item Very modular + \end{itemize} + \end{frame} + + \begin{frame}{Compiling MontiumC} + \pgfdeclareimage[width=\textwidth]{Compiling}{images/Compiling} + \pgfuseimage{Compiling} + \begin{itemize} + \item Focus: montiumccfe and transformations + \end{itemize} + \end{frame} + +\section{Tasks} + + \subsection{Original tasks} + \begin{frame}{Original tasks} + \begin{itemize} + \item Select LLVM transformations + \item Improve and add transformations + \item Provide debugging information + \end{itemize} + \end{frame} + + \subsection{Extra tasks} + \begin{frame}{Extra tasks} + \begin{itemize} + \item What is MontiumC? + \item What is Montium IR? + \item Reconfigurable binaries + \end{itemize} + \end{frame} + + \begin{frame}{What is MontiumC?} + \note{Two angles: What do we want, and what do we support.} + \begin{itemize} + \item Status: Specification is ongoing + \item Challenges: + \begin{itemize} + \item Clang is nontransparent + \note[item]{Clang --- A lot of special cases} + \item C is complex + \note[item]{Complex C --- A lot of corner cases} + \item C is limited + \note[item]{Limited C --- Need to use annotations, limited amount of types} + \item Assembly vs. High level + \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity + vs control, clarity vs determinism} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}[containsverbatim] + \begin{columns} + \begin{column}{0.5\textwidth} + Low level + \begin{Verbatim}[fontsize=\tiny] +mem input; +mem output; +word factor; + +void run(void) { + factor = from_int(2); + input = alloc_mem(P0M0); + output = alloc_mem(P0M1); + set_base(input, 0); + set_offset(input, 0); + set_base(output, -1); + set_offset(output, -1); + + next_cycle(); + word in = read_mem(input); + word out = p0o0(imul(ra1(in), rc1(factor))) + add_offset(input, 1); + add_offset(output, 1); + init_loop(LC1, 8); + do { + write_mem(output, out); + in = read_mem(input); + out = p0m0(imul(ra1(in), rc1(factor))) + add_offset(input, 1); + add_offset(output, 1); + } while(loop_next(LC1)); + + write_mem(output, out); +\end{Verbatim} + \end{column} + \begin{column}{0.5\textwidth} + High level + \begin{Verbatim}[fontsize=\tiny] +P0M0 int input[10]; +P0M1 int output[10]; + +void run(void) { + for (int i=0; i<10; ++i) + output[i] = input[i] * 2; +} + \end{Verbatim} + \end{column} + \end{columns} + \end{frame} + \note{} % Empty filler note page + + \begin{frame}{What is Montium IR?} + \begin{itemize} + \item Status: Initial version + \item Challenges: + \begin{itemize} + \item Backend is a fast moving target + \item Corner cases + \note[item]{Corner case --- global constants} + \item Hardware dependencies + \note[item]{Hardware --- Limited number of conditionals possible} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}{Selecting LLVM transformations} + \begin{itemize} + \item Status: Done + \item Challenges: + \begin{itemize} + \item LLVM Passes assume a lot + \note[item]{Assumptions --- Immediates are not free} + \item Montium has specific constraints + \note[item]{Constraint --- Implicit cycle boundaries and ordering} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}{Improving / adding transformations} + \begin{itemize} + \item Status: Ongoing + \item Challenges: + \begin{itemize} + \item Staying generic + \note[item]{Generic --- LLVM maintained passes are a lot easier} + \item New LLVM features + \note[item]{Features --- Multiple return values, inlining and + annotation attributes} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}{Debugging information} + \begin{itemize} + \item Status: Not started + \item Challenges: + \begin{itemize} + \item Not much LLVM support yet + \note[item]{LLVM support --- New in clang/backend, no support in + transformations yet.} + \item Transformations + \note[item]{Transformations --- Global arguments, argument addition, + removal, etc.} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}{Reconfigurable binaries} + \begin{itemize} + \item Status: Recently started + \item Challenges: + \begin{itemize} + \item Tracking variables + \note[item]{Tracking --- Through all steps of the process} + \item Loss of optimizations + \note[item]{Optimizations --- Hard to encode constraints} + \item Mostly a backend problem + \end{itemize} + \end{itemize} + \end{frame} + +\section{Work process} + \begin{frame}{Working at Recore} + \begin{itemize} + \item Smart people + \item Fast communication + \note[item]{Communication --- Mixed teams, easy to "listen in".} + \item Constructive brainstorming + \note[item]{Brainstorming --- Evaluating different ideas and approaches.} + \end{itemize} + \end{frame} + + \begin{frame}{Working with LLVM} + \begin{itemize} + \item Large community + \note[item]{Community --- Companies involved, a lot of full time + developers.} + \item Great support + \note[item]{Support --- mailing list, bug reports solved within 1/2 days.} + \item Slightly conflicting goals + \note[item]{Goals --- LLVM aims mainly at "regular" architectures.} + \end{itemize} + \end{frame} + +\section{Conclusions} + \begin{frame}{Conclusions} + \begin{itemize} + \item LLVM is very suitable + \item Defining the problem is harder than solving it + \item Three months is short! + \end{itemize} + \end{frame} + +\end{document} diff --git a/Presentations/Makefile b/Presentations/Makefile index 6899b9b..4e12dcc 100755 --- a/Presentations/Makefile +++ b/Presentations/Makefile @@ -1,4 +1,4 @@ -all: Progress.pdf +all: Progress.pdf InternalProgress.pdf REPEAT_TEXT = 'Rerun to get cross-references right' @@ -8,12 +8,16 @@ REPEAT_TEXT = 'Rerun to get cross-references right' %.ps: %.svg inkscape $(addsuffix .svg,$(basename $@)) --export-ps=$@ -Progress.dvi: *.tex beamerthemerecore.sty images/*.ps +%.dvi: %.tex latex '\scrollmode\input $(basename $@)' || exit 1; \ latex '\scrollmode\input $(basename $@)' || exit 1; \ while grep -s $(REPEAT_TEXT) $(addsuffix .log,$(basename $@)) ; do \ latex '\scrollmode\input $(basename $@)' || exit 1; \ done +# Extra dependencies +Progress.dvi: beamerthemerecore.sty images/*.ps +InternalProgress.dvi: beamerthemerecore.sty images/*.ps + clean: rm -f *.ps *.pdf *.dvi *.log *.toc *.out *.aux *.bbl *.blg *.lof *.nav *.snm -- 2.30.2