iccsa-19-vtestbed

git clone https://git.igankevich.com/iccsa-19-vtestbed.git
Log | Files | Refs

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}