commit 574fdb827df56ed5c684bc77c9705610e695a795
parent 8f333a4731e2fb52e6ddf0b2de993ca7b297897a
Author: Ivan Gankevich <igankevich@ya.ru>
Date: Mon, 24 Jun 2019 15:41:19 +0300
Slides.
Diffstat:
slides.tex | | | 277 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 277 insertions(+), 0 deletions(-)
diff --git a/slides.tex b/slides.tex
@@ -0,0 +1,277 @@
+\documentclass[aspectratio=169]{beamer}
+\usepackage{booktabs}
+\usepackage{polyglossia}
+\usepackage{pgfgantt}
+\setdefaultlanguage{english}
+%\setbeamertemplate{footline}[frame number]
+
+\usetheme{SaintPetersburg}
+
+\input{preamble}
+\input{math}
+
+\title{Virtual testbed: Ship motion simulation for personal workstations}
+\author{%
+A.\:Degtyarev \and
+V.\:Khramushin \and
+I.\:Gankevich \and
+I.\:Petriakov \and
+A.\:Gavrikov \and
+A.\:Grigorev%
+}
+\date{July 2019}
+
+\begin{document}
+
+\frame{\maketitle}
+
+\begin{frame}{Virtual testbed project}
+ Global goal: Decision support system that analyses data from ships in
+ sea, models the environment and predicts (and prevents) dangerous situations.
+ \vskip\baselineskip
+ Current goal: Real-time simulation environment for ships with visualisation.
+ \vskip\baselineskip
+ Key features:
+ \begin{itemize}
+ \item Real-time. We have 16--33 ms to compute everything.
+ \item Realistic marine objects. We load ships from IGES files.
+ \item Arbitrary-amplitude ocean waves (work-in-progress).
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Project timeline (2018)}
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[TimelinePresent] (-2,0)--(7,0) node[right]{};
+ \draw[TimelineFuture] (7,0)--(18,0) node[right]{};
+ \draw[ultra thick] (1.8,-0.2)--(1.8,0.2) node[above] {Aug};
+ \draw[ultra thick] (7.0,-0.2)--(7.0,0.2) node[above] {Sep};
+ \draw[ultra thick] (12.1,-0.2)--(12.1,0.2) node[above] {Dec};
+ \end{tikzpicture}
+ \vskip0.4cm
+ \begin{columns}[T]
+ \begin{column}{0.33\textwidth}
+ \centering
+ \begin{tikzpicture}[remember picture,y=-0.75cm]
+ % nodes
+ \node[DataBlock] (pplWavySurface) at (0,0) {Wavy surface\strut{}};
+ \node[DataBlock] (pplVelocityPotential) at (0,1) {Velocity potential\strut{}};
+ \node[DataBlock] (pplWavePressure) at (0,2) {Wave pressure\strut{}};
+ \node[DataBlock] (pplShipMotion) at (0,3) {Ship motion\strut{}};
+ \node[DataBlock,ColorGPU] (pplVisualisation) at (0,4) {Visualisation\strut{}};
+ \end{tikzpicture}
+ \par{}No copying, but slow.
+ \end{column}
+ \begin{column}{0.33\textwidth}
+ \centering
+ \uncover<2-3>{%
+ \begin{tikzpicture}[remember picture,y=-0.75cm]
+ % nodes
+ \node[DataBlock] (pplWavySurface) at (0,0) {Wavy surface\strut{}};
+ \node[DataBlock,ColorGPU] (pplVelocityPotential) at (0,1) {Velocity potential\strut{}};
+ \node[DataBlock,ColorGPU] (pplWavePressure) at (0,2) {Wave pressure\strut{}};
+ \node[DataBlock] (pplShipMotion) at (0,3) {Ship motion\strut{}};
+ \node[DataBlock,ColorGPU] (pplVisualisation) at (0,4) {Visualisation\strut{}};
+ \end{tikzpicture}
+ \par{}Faster, but a lot of copying (30~FPS).
+ }
+ \end{column}
+ \begin{column}{0.33\textwidth}
+ \centering
+ \uncover<3>{%
+ \begin{tikzpicture}[remember picture,y=-0.75cm]
+ % nodes
+ \node[DataBlock,ColorGPU] (pplWavySurface) at (0,0) {Wavy surface\strut{}};
+ \node[DataBlock,ColorGPU] (pplVelocityPotential) at (0,1) {Velocity potential\strut{}};
+ \node[DataBlock,ColorGPU] (pplWavePressure) at (0,2) {Wave pressure\strut{}};
+ \node[DataBlock,ColorGPU] (pplShipMotion) at (0,3) {Ship motion\strut{}};
+ \node[DataBlock,ColorGPU] (pplVisualisation) at (0,4) {Visualisation\strut{}};
+ \end{tikzpicture}
+ \par{}Expected to be much faster with no copying.
+ }
+ \end{column}
+ \end{columns}
+ \begin{tikzpicture}[remember picture,y=0.75cm,overlay]
+ \node[DataBlockLegend,anchor=south west,yshift=0.1cm,xshift=0.1cm]
+ at (current page.south west) {CPU\strut{}};
+ \node[DataBlockLegend,ColorGPULegend,anchor=south west,yshift=0.1cm,xshift=1.2cm]
+ at (current page.south west) {GPU\strut{}};
+ \end{tikzpicture}
+\end{frame}
+
+\begin{frame}{The anatomy of a frame}
+ \centering
+ \begin{tikzpicture}[remember picture,x=2.5cm]
+ % nodes
+ \node[DataBlockH] (pplWavySurface) at (0,0) {Wavy surface\strut{}};
+ \only<1>{%
+ \node[DataBlockH] (pplVelocityPotential) at (1,0) {Velocity potential\strut{}};
+ \node[DataBlockH] (pplWettedPanels) at (2,0) {Wetted panels\strut{}};
+ \node[DataBlockH] (pplWavePressure) at (3,0) {Wave pressure\strut{}};
+ }
+ \only<2>{%
+ \node[DataBlockH,fill=markRed] (pplVelocityPotential) at (1,0) {Velocity potential\strut{}};
+ \node[DataBlockH,fill=markRed] (pplWettedPanels) at (2,0) {Wetted panels\strut{}};
+ \node[DataBlockH,fill=markRed] (pplWavePressure) at (3,0) {Wave pressure\strut{}};
+ }
+ \node[DataBlockH] (pplShipMotion) at (4,0) {Ship motion\strut{}};
+ \node[DataBlockH,text width=1.8cm] (pplVisualisation) at (5,0) {Visualisation\strut{}};
+ % arrows
+ \path[Arrow] (pplWavySurface.east) -- (pplVelocityPotential.west);
+ \path[Arrow] (pplVelocityPotential.east) -- (pplWettedPanels.west);
+ \path[Arrow] (pplWettedPanels.east) -- (pplWavePressure.west);
+ \path[Arrow] (pplWavePressure.east) -- (pplShipMotion.west);
+ \path[Arrow] (pplShipMotion.east) -- (pplVisualisation.west);
+ \draw[Arrow] (pplVisualisation.south) -- ++(0,-0.6cm)coordinate (a) -- ($(a-|pplWavySurface)$) -- (pplWavySurface.south);
+ % labels
+ \node[Label,anchor=south,above=of pplWavySurface]
+ (lblWavySurface)
+ {Linear models};
+ \node[Label,anchor=north,below=of pplVelocityPotential,text width=3.0cm]
+ (lblVelocityPotential)
+ {Convolution (4$\times$FFT), derivatives};
+ \node[Label,anchor=south,above=of pplWettedPanels,text width=4cm]
+ (lblWettedPanels)
+ {Geometric transformations, transcendental functions, derivatives};
+ \node[Label,anchor=south,above=of pplShipMotion]
+ (lblShipMotion)
+ {Runge---Khutta---Fehlberg};
+ \path[Dashed] (pplWavySurface.north -| lblWavySurface.south) -- (lblWavySurface.south);
+ \path[Dashed] (lblVelocityPotential.north -| pplVelocityPotential.south) -- (pplVelocityPotential.south);
+ \path[Dashed] (pplWettedPanels.north -| lblWettedPanels.south) -- (lblWettedPanels.south);
+ \path[Dashed] (pplWavePressure.north) -- (lblWettedPanels.south);
+ \path[Dashed] (pplShipMotion.north -| lblShipMotion.south) -- (lblShipMotion.south);
+ \end{tikzpicture}
+ \begin{columns}[T]
+ \begin{column}{0.49\textwidth}
+ \end{column}
+ \begin{column}{0.49\textwidth}
+ \footnotesize
+ \uncover<2>{%
+ \begin{tabular}{lll}
+ \toprule
+ FPS & One frame, ms & One stage, ms \\
+ \midrule
+ 60 & 16 & 5 \\
+ 30 & 33 & 11 \\
+ \bottomrule
+ \end{tabular}
+ }
+ \end{column}
+ \end{columns}
+\end{frame}
+
+\begin{frame}{Velocity potential equations}
+ \footnotesize
+ \begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
+ \vspace{-\baselineskip}%
+ \begin{align*}%
+ & \nabla^2\phi = 0
+ & \text{continuity equation}
+ \\
+ & \phi_t+\frac{1}{2} |\vec{\upsilon}|^2 + g\zeta=-\frac{p}{\rho}
+ & \text{dynamic BC for }z=\zeta(x,y,t)
+ \\
+ & D\zeta = \nabla \phi \cdot \vec{n}
+ & \text{kinematic BC for }z=\zeta(x,y,t)\\
+ \end{align*}%
+ \vspace{-2.5\baselineskip}%
+ \end{beamercolorbox}%
+ %
+ \pause%
+ %
+ \spbuArrow{}%
+ \vspace{-0.2cm}%
+ %
+ \begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
+ \vspace{-\baselineskip}%
+ \begin{align*}%
+ & \phi_{xx} + \phi_{yy} + \phi_{zz} = 0\\
+ & \zeta_t
+ = \underbrace{\fillrectemph{f1}{\left(\FracSqrtZetaY{\zeta_x} - \zeta_x\right)}}_{f_1} \phi_x
+ + \underbrace{\fillrectemph{f2}{\left(\FracSqrtZetaY{\zeta_y} - \zeta_y\right)}}_{f_2} \phi_y
+ - \underbrace{\fillrectemph{f3}{\FracSqrtZetaY{1}}}_{f_3} \phi_z \\
+ \end{align*}%
+ \vspace{-2.7\baselineskip}%
+ \end{beamercolorbox}%
+ %
+ \pause%
+\vspace{-0.5\baselineskip}%
+\spbuArrow{}%
+\vspace{-\baselineskip}%
+\begingroup%
+\setlength\abovedisplayskip{1mm}%
+\begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
+Solution:\vspace{-0.5\baselineskip}%
+\begin{equation*}%
+ \phi(x,y,z,t)
+ =
+ \mathcal{W}_2(x,y,z)
+ \mathrel{*}
+% \frac{\zeta_t(x,y,t)}{i f_1(x,y,t) + i f_2(x,y,t) - f_3(x,y,t)}
+ \frac{\zeta_t(x,y,t)}{F\left(f_1, f_2, f_3\right)}
+% & \mathcal{W}_1 \approx \mathcal{W}_2
+\end{equation*}%
+\vspace{-0.5\baselineskip}%
+\end{beamercolorbox}%
+\endgroup%
+\end{frame}
+
+\begin{frame}{Velocity potential field computation performance}
+ \centering
+ \begin{columns}
+ \begin{column}{0.70\textwidth}
+ \includegraphics[width=\textwidth]{velocity.eps}
+ \end{column}
+ \begin{column}{0.33\textwidth}
+ \footnotesize
+ \begin{tabular}{ll}
+ \toprule
+ CPU & AMD FX-8370 \\
+ GPU & GeForce GTX 1060 6GB \\
+ OS & Fedora 28 \\
+ \bottomrule
+ \end{tabular}
+ \end{column}
+ \end{columns}
+\end{frame}
+
+\begin{frame}{Wave pressure}
+ Pressure:
+ \begin{equation*}
+ p(x,y,z,t) = -\rho\phi_t
+ - \rho\frac{1}{2}\left( \phi_x^2 + \phi_y^2 + \phi_z^2 \right)
+ - \rho g z
+ \end{equation*}
+ Pressure force:
+ \begin{equation*}
+ F(x,y,z,t) = -p S \vec{n}
+ \end{equation*}
+\end{frame}
+
+\begin{frame}{Pressure computation performance}
+ \centering
+ \begin{columns}
+ \begin{column}{0.70\textwidth}
+ \includegraphics[width=\textwidth]{output.eps}
+ \end{column}
+ \begin{column}{0.33\textwidth}
+ \footnotesize
+ \begin{tabular}{ll}
+ \toprule
+ CPU & AMD FX-8370 \\
+ GPU & GeForce GTX 1060 6GB \\
+ OS & Fedora 28 \\
+ \bottomrule
+ \end{tabular}
+ \end{column}
+ \end{columns}
+\end{frame}
+
+\begin{frame}
+ \centering
+ \Large
+ \vspace{1.5\baselineskip}
+ Thank you for attention!
+\end{frame}
+
+\end{document}