Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Original work on the STCS-2019 article #52

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions papers/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,10 @@
*.out
*.gz
*.listing
*.vrb
*.uN9447
*.snm
*.nav
**/_minted-main/
*.pygtex
*.pygstyle
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added papers/eutypes-2019/presentation/img/hpt-boq.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added papers/eutypes-2019/presentation/img/title.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
83 changes: 83 additions & 0 deletions papers/eutypes-2019/presentation/prez.notes
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
Intro to GRIN:
- the problem (small functions, laziness)
- GRIN is the solution (interprocedural, whole, IR)

- store, fetch, update
- eval
- (other restrictions ...)

- 5-6 (*)

- simple code generation
- many small transformations
- HPT is the core

- 6-7

Extensions:
- LLVM (sum simple?)
- new HPT:
- original: for node info
- then: node info with simple type info (for LLVM)
- finally: type inference (polymorph primops)

- 8-9 -1 (less HPT)

- Dead Data Elimination

Dead Data Elimination:
- first by Remi Turk for Agda
- motivational example: (*)
- length (List -> Nat)
- other applications:
- Map -> Set
- type class dictionaries
- Vector type index (EUTypes)

- 11-12

- what else do we need?
- CBy (extended HPT, example) (*)
- LVA (standard)
- producer grouping (graph example) (*)
- transformations

- 14-15

Results:
- only interpreted results
- pipeline setup
- diagrams

- 18 - 19

Conclusions:
- the optimizer works well:
- #stores, #fetches, #funcalls and #cases significantly reduced
- code structure closer to imperative style

- DDE is:
- a bit costly
- kinda specific, but can work wonders
- can trigger other transformations

- 20


Q&A:
- Why do we need Lambda? (closure conversion + lambda lifting)
cc: find free variables
ll: convert lambdas to top level functions

- eval inlining ~?~ STG + eval/apply -> GRIN with indirect calls (funptr) + static analysis
- analysis cost: compiled abstract interpretation


no stores & no fetches --> in ideal case, everything can be put into registers (in worst onto the stack)


Notes:
- upto example (with head?)
- LLVM code example
- opt list
- max 25 slides
59 changes: 59 additions & 0 deletions papers/eutypes-2019/presentation/template.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
\documentclass[bigger]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}

\usebackgroundtemplate%
{%
\includegraphics[width=\paperwidth,height=\paperheight]{background.jpg}%
}

\setbeamercolor{title}{fg=white}
\setbeamercolor{author}{fg=white}
\setbeamercolor{institute}{fg=white}
\setbeamercolor{date}{fg=white}
\setbeamercolor{frametitle}{fg=white}

\title{\bf Sample title}
\author{Anonymous}
\institute{Eötvös Loránd University (ELTE), \\ Budapest, Hungary}
\date{2018.}

\begin{document}

{
\usebackgroundtemplate{\includegraphics[width=\paperwidth]{title.jpg}}%
\frame{\vspace{15mm}\titlepage}
}

\begin{frame}{Introduction}
\begin{itemize}
\item 1
\item 2
\item 3
\end{itemize}
\end{frame}

% this slide need not be used in the presentation, but must be
% present when you archieve your talk

{
\usebackgroundtemplate{\includegraphics[width=\paperwidth]{title.jpg}}%
\begin{frame}{}

\bigskip\bigskip\bigskip

{\bf\Huge\color{white} THANK YOU}

\bigskip

{\bf\Huge\color{white} FOR YOUR}

\bigskip

{\bf\Huge\color{white} ATTENTION!}

\end{frame}
}

\end{document}
Binary file added papers/eutypes-2019/presentation/tex/main.pdf
Binary file not shown.
Loading