Add and improve a few slides.
[matthijs/projects/internship.git] / Progress presentation / Presentation.tex
1 \documentclass[hyperref={pdfpagelabels=false}]{beamer}
2
3 \setbeameroption{show notes}
4
5 \mode<presentation>
6 {
7   %\useinnertheme{echt}
8   %\useinnertheme{proef}
9   \usetheme{recore}
10   \setbeamercovered{transparent}
11 %\setbeamertemplate{footline}[frame number]
12 }
13
14 \usepackage[english]{babel}
15 \usepackage[latin1]{inputenc}
16 \usepackage{times}
17 \usepackage[T1]{fontenc}
18 \usepackage{acronym}
19 \usepackage{tikz}
20 \usepackage{multimedia}
21 \usepackage{subfigure}
22 \usepackage{booktabs}
23 %For handouts, use the following two lines:
24 %\usepackage{pgfpages}
25 %\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
26
27
28 \title
29 {MontiumC Transforming}
30
31 \author {Matthijs Kooijman}
32
33 \institute[Recore Systems and University of Twente]
34 {
35   \inst{}%
36   Recore Systems
37   \and
38   \inst{}%
39   Faculty of Electrical Engineering, Mathematics and Computer Science\\
40   University of Twente
41   }
42   
43 \begin{document}
44
45 \begin{frame}
46         \titlepage
47 \end{frame}
48
49 \begin{frame}{Contents}
50   \tableofcontents
51 \end{frame}
52
53 \section{Introduction}
54   \subsection{Montium Tile Processor}
55   \subsection{MontiumC}
56   \subsection{LLVM}
57   \subsection{Compile process}
58
59 \section{Tasks}
60
61   \subsection{Original tasks}
62     \begin{frame}{Original tasks}
63       \begin{itemize}
64         \item Select LLVM transformations
65         \item Improve and add transformations
66         \item Provide debugging information
67       \end{itemize}
68     \end{frame}
69
70   \subsection{Extra tasks}
71     \begin{frame}{Extra tasks}
72       \begin{itemize}
73         \item What is MontiumC?
74         \item What is Montium IR?
75       \end{itemize}
76     \end{frame}
77
78     \begin{frame}{What is MontiumC?}
79       \begin{itemize}
80       \item Status: Specification is ongoing
81       \item Challenges:
82         \begin{itemize}
83           \item Clang is nontransparent
84           \note[item]{Clang --- A lot of special cases}
85           \item C is complex
86           \note[item]{Complex C --- A lot of corner cases}
87           \item C is limited
88           \note[item]{Limited C --- Need to use annotations, limited amount of types}
89           \item Assembly vs. High level
90           \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
91           vs control, clarity vs determinism}
92         \end{itemize}
93       \end{itemize}
94     \end{frame}
95     
96     \begin{frame}{What is Montium IR?}
97       \begin{itemize}
98         \item Status: Initial version
99         \item Challenges:
100         \begin{itemize}
101           \item Fast moving target
102           \item Corner cases
103           \note[item]{Corner case --- global constants}
104           \item Hardware dependencies
105           \note[item]{Hardware --- Limited number of conditionals possible}
106         \end{itemize}
107       \end{itemize}
108     \end{frame}
109
110     \begin{frame}{Selecting LLVM transformations}
111       \begin{itemize}
112         \item Status: Done
113         \item Challenges:
114         \begin{itemize}
115           \item LLVM Passes assume a lot
116           \note[item]{Assumptions --- Immediates are not free}
117           \item Montium has specific constraints
118           \note[item]{Constraint --- Implicit cycle boundaries and ordering}
119         \end{itemize}
120       \end{itemize}
121     \end{frame}
122
123     \begin{frame}{Improving / adding transformations}
124       \begin{itemize}
125         \item Status: Ongoing
126         \item Challenges:
127         \begin{itemize}
128           \item Staying generic
129           \note[item]{Generic --- LLVM maintained passes are a lot easier}
130           \item New LLVM features
131           \note[item]{Features --- Multiple return values, inlining and
132           annotation attributes}
133         \end{itemize}
134       \end{itemize}
135     \end{frame}
136
137     \begin{frame}{Debugging information}
138       \begin{itemize}
139         \item Status: Not started
140         \item Challenges:
141         \begin{itemize}
142           \item Not much LLVM support yet
143           \note[item]{LLVM support --- New in clang/backend, no support in
144           transformations yet.}
145           \item Transformations
146           \note[item]{Transformations --- Global arguments, argument addition,
147           removal, etc.}
148         \end{itemize}
149       \end{itemize}
150     \end{frame}
151
152     \begin{frame}{Reconfigurable binaries}
153       \begin{itemize}
154         \item Status: Recently started
155         \item Challenges:
156         \begin{itemize}
157           \item Tracking variables
158           \note[item]{Tracking --- Through all steps of the process}
159           \item Loss of optimizations
160           \note[item]{Optimizations --- Hard to encode constraints}
161           \item Mostly a backend problem
162         \end{itemize}
163       \end{itemize}
164     \end{frame}
165
166 \section{Work process}
167   \begin{frame}{Recore}
168     \begin{itemize}
169       \item Fast communication
170       \note[item]{Communication --- Mixed teams, easy to "listen in".}
171       \item Constructive brainstorming
172       \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
173     \end{itemize}
174   \end{frame}
175
176   \begin{frame}{LLVM}
177     \begin{itemize}
178       \item Large community
179       \note[item]{Community --- Companies involved, a lot of full time
180       developers.}
181       \item Great support
182       \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
183       \item Slightly conflicting goals
184       \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
185     \end{itemize}
186   \end{frame}
187
188 \section{Conclusions}
189
190 \end{document}