Add a sheet with example high and low level code.
[matthijs/projects/internship.git] / Progress presentation / Presentation.tex
index 7915f1c7f8dfa4927b9f9c8f60fb8b00f6f97343..b68f296ccb08ee586e3a8d43a994d6205d0765f1 100755 (executable)
@@ -20,6 +20,9 @@
 \usepackage{multimedia}
 \usepackage{subfigure}
 \usepackage{booktabs}
+% Can use a tiny fontsize
+\usepackage{fancyvrb}
+
 %For handouts, use the following two lines:
 %\usepackage{pgfpages}
 %\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
@@ -55,7 +58,9 @@
   \subsection{MontiumC}
   \subsection{LLVM}
   \subsection{Compile process}
+
 \section{Tasks}
+
   \subsection{Original tasks}
     \begin{frame}{Original tasks}
       \begin{itemize}
@@ -64,6 +69,7 @@
         \item Provide debugging information
       \end{itemize}
     \end{frame}
+
   \subsection{Extra tasks}
     \begin{frame}{Extra tasks}
       \begin{itemize}
@@ -71,6 +77,7 @@
         \item What is Montium IR?
       \end{itemize}
     \end{frame}
+
     \begin{frame}{What is MontiumC?}
       \begin{itemize}
       \item Status: Specification is ongoing
           \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}
+
     \begin{frame}{What is Montium IR?}
       \begin{itemize}
         \item Status: Initial version
       \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 What to reconfigure?
+          \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}{Recore}
+    \begin{itemize}
+      \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}{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}
+
 \end{document}