Commit 8f343b61 authored by Celian Gossec's avatar Celian Gossec

UPDATE: SLIDES: Reworking according to Edwin's comments

parent 8a388087
......@@ -4,6 +4,9 @@
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{wrapfig}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{tabularx}
\usetheme{KremlinBicetre}
......@@ -28,24 +31,114 @@
\begin{frame}
\frametitle{La situation}
% \begin{wrapfigure}{l}{0.32\textwidth}
% \includegraphics[]{olena_logo.jpeg}
% \end{wrapfigure}
\begin{itemize}
\item Le point de départ: Olena: une bibliothèque de traitement d'image
codée en C++
\item Le point de départ: Milena: une bibliothèque de traitement d'image
codée en C++ [1][2]
\item L'objectif: Faciliter l'usage d'Olena
\item Le moyen: Passer Olena en Python
\item Le moyen: Exposer Olena en Python
\item La difficulté: Liaison du code statique (C++ template) au code
dynamique (Python) (This needs refining TODO)
dynamique (Python), compatibilité avec Numpy
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Les différentes possibilités}
Bindings avec PyBind, Boost, ... \newline
\begin{itemize}
\item Les Just-In-Time compiler \pause
\item 'Englober' les templates
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Approche 1 : Les compilateurs JIT}
Compilateurs JIT = compilation à la volée. \newline
Pas de typage tant que variables pas utilisées. [3]
\begin{table}
\begin{tabularx}{\linewidth}{>{\parskip1ex}X@{\kern4\tabcolsep}>{\parskip1ex}X}
\toprule
\hfil\bfseries Pros
&
\hfil\bfseries Cons
\\\cmidrule(r{3\tabcolsep}){1-1}\cmidrule(l{-\tabcolsep}){2-2}
Autant de vitesse que le C++ (après la 1e compilation) \par
&
1e compilation lente \par
Nécessite un compilateur JIT \par
rend impossible l'export vers NumPy \par
\\\bottomrule
\end{tabularx}
\caption{Avantages/Inconvénients}
\end{table}
\end{frame}
\begin{frame}
\frametitle{Approche 2 : Le polymorphisme par coercition}
Approche utilisée par Matlab: \newline
Créer une classe globale qui englobe toutes les classes désirées
\begin{table}
\begin{tabularx}{\linewidth}{>{\parskip1ex}X@{\kern4\tabcolsep}>{\parskip1ex}X}
\toprule
\hfil\bfseries Pros
&
\hfil\bfseries Cons
\\\cmidrule(r{3\tabcolsep}){1-1}\cmidrule(l{-\tabcolsep}){2-2}
Traitement d'une seule classe rend très facile l'export
vers python \par
&
Limitation de la généricité offerte par le templating \par
Pas aussi opti que le code actuel \par
\\\bottomrule
\end{tabularx}
\caption{Avantages/Inconvénients}
\end{table}
\end{frame}
%\begin{frame}
% \frametitle{Approche 3 : Polymorphisme par type-erasure}
% Type erasure =
%
%\end{frame}
\begin{frame}
\frametitle{Notre objectif : une approche originale}
Faire une approche qui réduit les types requis ('type-erasure') afin
d'obtenir une classe plus flexible\newline
\begin{itemize}
\item Des avantages... \pause
\begin{itemize}
\item Un code extrêmement générique \pause
\item Garder les performances du C++ \pause
\end{itemize}
\item Mais aussi des inconvénients \pause
\begin{itemize}
\item Perte probable de performances \pause
\item Grosse restructuration de la bibliothèque
existante
\end{itemize}
\end{itemize}
\end{frame}
\end{document}
\ No newline at end of file
\begin{frame}
\frametitle{Bibliographie}
\begin{itemize}
\item 1: \href{https://www.lrde.epita.fr/dload/papers/levillain.14.ciarp.pdf}
{Practical Genericity: Writing Image Processing
Algorithms Both Reusable and Efficient - R. Levillain,
T. Géraud, L. Najman, E. Carlinet}
\item 2: \href{https://www.lrde.epita.fr/dload/papers/roynard.18.rrpr.pdf}
{An Image Processing Library in Modern C++:
Getting Simplicity and Efficiency with Generic
Programming - M. Roynard, E. Carlinet, T. Géraud}
\item 3: \href{http://web2.cs.columbia.edu/~aho/cs6998/reports/12-12-17_Ramanan_JIT.pdf}
{JIT through the ages - Neeraja Ramanan}
\end{itemize}
\end{frame}
\end{document}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment