\begin{frame}%[label=this one] \frametitle{Architecture logicielle} \begin{columns} \column{.7\textwidth} \begin{itemize} \item[{\tikz[c]{\node[fill,rectangle]{};}}] \num{2300} lignes de C \begin{itemize} \item Programmation API, bas niveau \item Interface avec OpenCL/OpenGL \end{itemize} \item[{\tikz[ocaml]{\node[fill,rectangle]{};}}] \num{2000} lignes de OCaml réparties en 10 modules \begin{itemize} \item Programmation API, haut niveau \item Processus maître, orchestration de simulation \item Gestion des zones dynamiques \end{itemize} \item[{\tikz[opencl]{\node[fill,rectangle]{};}}] \num{700} lignes de kernel OpenCL \smallskip \item[{\tikz[sbgp]{\node[fill,rectangle]{};}}] SBGP \end{itemize} \begin{center} \small \begin{tikzpicture}[node distance=4mm and 1.3333cm, box/.style={on grid,inner sep=0pt,rectangle,draw, minimum height=4mm,font=\small}, full/.style={minimum width=4cm}, half/.style={minimum width=2cm}, third/.style={minimum width=1.3333cm}, ] \node[fill=black,draw=black,white,half,box] (cpu) {CPU}; \node[fill=black,draw=black,white,half,box,right=2cm of cpu] (gpu) {GPU}; \node[fill=c,third,box,above=of cpu.west,right] (os) {OS}; \node[fill=opencl,third,box,right=of os] (opencl) {OpenCL}; \node[fill=c,third,box,right=of opencl] (opengl) {OpenGL}; \node[fill=c,full,box,above=of os.west,right] (api1) {API OpenCL/OpenGL}; \node[fill=ocaml,full,box,above=of api1] (api2) {API Simulateur}; \node[diagonal fill={ocaml}{sbgp},full,box,above=of api2] (spec) {Spécification simulation}; \node[full,box,above=of spec,dashed] (ihm) {IHM}; \draw[white] (cpu.north east) -- (cpu.south east); \end{tikzpicture} \end{center} \column{.2\textwidth} \moteurs \end{columns} \end{frame}