From: Matthijs Kooijman Date: Tue, 1 Jul 2008 09:53:20 +0000 (+0200) Subject: Rename Presentation.tex to Progress.tex. X-Git-Tag: Report-final~62 X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fprojects%2Finternship.git;a=commitdiff_plain;h=d5f04dbba9dad2feaa0793aa7392e403253fbec8 Rename Presentation.tex to Progress.tex. --- diff --git a/Presentations/Makefile b/Presentations/Makefile index ece134a..6899b9b 100755 --- a/Presentations/Makefile +++ b/Presentations/Makefile @@ -1,4 +1,4 @@ -all: Presentation.pdf +all: Progress.pdf REPEAT_TEXT = 'Rerun to get cross-references right' @@ -8,7 +8,7 @@ REPEAT_TEXT = 'Rerun to get cross-references right' %.ps: %.svg inkscape $(addsuffix .svg,$(basename $@)) --export-ps=$@ -Presentation.dvi: *.tex beamerthemerecore.sty images/*.ps +Progress.dvi: *.tex beamerthemerecore.sty images/*.ps latex '\scrollmode\input $(basename $@)' || exit 1; \ latex '\scrollmode\input $(basename $@)' || exit 1; \ while grep -s $(REPEAT_TEXT) $(addsuffix .log,$(basename $@)) ; do \ diff --git a/Presentations/Presentation.tex b/Presentations/Presentation.tex deleted file mode 100755 index 6a710ab..0000000 --- a/Presentations/Presentation.tex +++ /dev/null @@ -1,295 +0,0 @@ -\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/Progress.tex b/Presentations/Progress.tex new file mode 100755 index 0000000..6a710ab --- /dev/null +++ b/Presentations/Progress.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}