Commit 9e00287b authored by Celian GOSSEC's avatar Celian GOSSEC

Unpushed updates of Feb 27 (LT #1)

parent 5d635919
......@@ -74,16 +74,22 @@
C++ scientific library.}
}
@misc{pybind11,
author = {Wenzel Jakob and Jason Rhinelander and Dean Moldovan},
year = {2017},
note = {https://github.com/pybind/pybind11},
title = {pybind11 -- Seamless operability between C++11 and Python}
}
@misc{niebler1999boost,
title={Boost},
author={Niebler, Eric},
year={1999}
@inproceedings{expsimd,
author = {Malossi, A. Cristiano I. and Ineichen, Yves and Bekas, Costas and Curioni, Alessandro},
year = {2015},
month = {01},
pages = {},
title = {Fast Exponential Computation on SIMD Architectures},
doi = {10.13140/2.1.4362.3207}
}
@article{tiling_performances,
author = {Wittenbrink, Craig and Somani, Arun},
year = {1993},
month = {01},
pages = {12-22},
title = {Cache tiling for high performance morphological image processing},
volume = {7},
journal = {Machine Vision and Applications},
doi = {10.1007/BF01212412}
}
\ No newline at end of file
......@@ -2,7 +2,8 @@
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[english]{babel}
\usepackage[]{wrapfig}
\usetheme{Warsaw}
......@@ -30,49 +31,95 @@
\maketitle
\begin{frame}
\frametitle{Rappel: la situation}
\frametitle{The context}
\structure{Point de départ.} Milena, une bibliothèque \emph{générique et performante}
de traitement d'image codée en C++.
\structure{The library} \\
\textit{Pylene} is \emph{generic} image processing library written in C++
\footnote{\tiny Practical Genericity : Writing Image Processing Algorithms Both Reusable
and Efficient.R. Levillain et al., \textit{ICPR'14}.}
\footnote{\tiny An Image Processing Library in Modern C++: Getting Simplicity and Efficiency
with Generic Programming. M. Roynard, E. Carlinet, T. Géraud, \textit{RRPR'18}.}\\[1pt]
with Generic Programming. M. Roynard, E. Carlinet, T. Géraud, \textit{RRPR'18}.} \\
It contains a wide variety of algorithms, grouped in three main categories:
\begin{itemize}
\item Point-wise (PW) algorithms
\item Local algorithms
\item Global algorithms
\end{itemize}
\end{frame}
\structure{Objectif.} Faciliter l'usage d'Olena à travers une interface
Python.\\[1pt]
\begin{frame}
\frametitle{The context - bis}
\structure{Performances} \\
Pylene as a library is already relatively fast but we know that it can be faster than even
OpenCV if we add parallelism and/or other speedup mechanics.
\footnote{\tiny Paper being worked on by M.Roynard \& E.Carlinet}
(The following screenshot shows results using tiling \footnote{\tiny Cache tiling for high performance morphological image processing. Wittenbrink, A. et al \textit{Machine Vision and Applications, 1993}.} with SIMD)
\includegraphics[width=6cm]{figs/bench_pln_vs_cv.png}
\end{frame}
\structure{Difficultés.}
\begin{frame}
\frametitle{Regarding performances - SIMD}
{\emph{SIMD}, or \emph{vectorization}, is the process of treating variables as part of a vector of data.
Instead of running instructions one by one, we run them all at the same time (limited by architectures).}
\\
\includegraphics[width=7cm]{figs/simd.png}
\end{frame}
\begin{frame}
\frametitle{Regarding performances - Tiling}
{\emph{Tiling} is a technique in image processing where you process an image by pieces, rather than trying to fit it all in memory.}
\begin{wrapfigure}{r}{9cm}
\includegraphics[width=9cm]{figs/tiling.png}
\end{wrapfigure}
\end{frame}
\begin{frame}
\frametitle{Objective and problems}
\structure{Objective: improving our performances} \\
Improve the performances of the library through the aforementioned means.
The current short- and long-term points of interest:
\begin{itemize}
\item Short term: work on PW algorithms
\item Longer term: work on local algorithms
\end{itemize}
\structure{Problems}
\begin{itemize}
\item Appeler du code \textit{statique} (templates) depuis un
environnement \textit{dynamique}\\
\item Compatibilité avec Numpy
\item SIMD not always available
\item \textbf{Scalability and genericity have to be maintained}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{The solutions}
\begin{itemize}
\item \underline{SIMD}: T.B.D., but it doesn't look like a lost cause \footnote{\tiny Fast Exponential Computation on SIMD Architectures. Malossi, A et al. (2015)}
\item \underline{Scalable and generic parallel coding}: Having meta classes that are simd-compatible acting as bases for the algorithms
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{La progression}
\frametitle{Work done so far}
\begin{itemize}
\item Implémentation d'un container, \textit{any\_ref}, inspiré de Boost
\footnote{\tiny Boost. E. Niebler et al., \textit{1999}.}
\item Implémentation d'une méthode de conversion d'un type à un autre dans les \textit{value\_set}
\item Reading documentation
\item Understanding our code
\item Trying to emulate code already written for PW algorithms
\end{itemize}
On obtient ainsi des résultats très concrets, comme le montre la présentation qui suit!
\end{frame}
\begin{frame}
\frametitle{Les prochains pas}
\frametitle{Next steps}
\begin{itemize}
\item Rajouter les différentes fonctions non implémentées qui servent à traiter des images 2D
\item Permettre l'utilisation de coercision en tandem avec de la répartition dynamique
\item Utiliser la compilation à la volée quand/si possible
\item Discussion with Edwin regarding implementation details
\item Probably more papers to read
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Bibliographie}
\frametitle{Bibliography}
\scriptsize
\nocite{levillain.14.ciarp, roynard.18.rrpr, pybind11, niebler1999boost}
\nocite{levillain.14.ciarp, roynard.18.rrpr, expsimd,tiling_performances}
\bibliography{biblio}
\bibliographystyle{apalike}
\end{frame}
......
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