iccsa-20-waves

git clone https://git.igankevich.com/iccsa-20-waves.git
Log | Files | Refs

commit 4bbe273fe6d4a9e477a3391d74f7f7d7860a27f3
parent 92406835577707097f4e498e269ad0d76303ee09
Author: Ivan Gankevich <i.gankevich@spbu.ru>
Date:   Sat, 20 Jun 2020 15:36:25 +0300

Update after revoew.

Diffstat:
Makefile | 12++++++++++--
copyright.org | 3+++
gnuplot/surface.gnuplot | 13+++++++++----
gnuplot/vessel.gnuplot | 5++++-
main.tex | 87++++++++++++++++++++++++++++++++++++++++---------------------------------------
review.org | 18++++++++++++++++++
6 files changed, 88 insertions(+), 50 deletions(-)

diff --git a/Makefile b/Makefile @@ -36,9 +36,17 @@ build/gnuplot/%.svg: gnuplot/%.gnuplot @mkdir -p build/gnuplot gnuplot -d $< -build/ships/%.svg: ships/%.gnuplot gnuplot/vessel.gnuplot +build/ships/diogen.svg: ships/diogen.gnuplot gnuplot/vessel.gnuplot @mkdir -p build/ships - gnuplot -d -c gnuplot/vessel.gnuplot $< $@ + gnuplot -d -c gnuplot/vessel.gnuplot $< $@ Diogen + +build/ships/aurora.svg: ships/aurora.gnuplot gnuplot/vessel.gnuplot + @mkdir -p build/ships + gnuplot -d -c gnuplot/vessel.gnuplot $< $@ Aurora + +build/ships/micw.svg: ships/micw.gnuplot gnuplot/vessel.gnuplot + @mkdir -p build/ships + gnuplot -d -c gnuplot/vessel.gnuplot $< $@ MICW build: @mkdir -p build diff --git a/copyright.org b/copyright.org @@ -0,0 +1,3 @@ +Virtual testbed: Simulation of ocean wave reflection from the ship hull +Ivan Petriakov, Alexander Degtyarev, Denis Egorov, Ivan Gankevich, Anton Gavrikov, Artemii Grigorev, Vasily Khramushin +Ivan Gankevich, Saint Petersburg State University, 13B Universitetskaya Emb., St Petersburg 199034, Russia, i.gankevich@spbu.ru diff --git a/gnuplot/surface.gnuplot b/gnuplot/surface.gnuplot @@ -1,4 +1,4 @@ -set terminal svg size 1920/3,1080/3 dynamic +set terminal svg size 1920/3,1080/3 dynamic font 'Times, 10' #set hidden3d back offset 0 trianglepattern 3 undefined 1 altdiagonal bentover set view equal xyz #set view ,,4 @@ -9,10 +9,15 @@ set cbrange [-2:2] set cbtics -2,0.5,2 set palette defined (0 '#404040', 1 '#fffff0', 2 '#0040f0') unset key -unset xtics -unset ytics +set xtics nomirror out offset 0,0.5 +set ytics nomirror out offset 0.5,0 +unset x2tics +unset y2tics unset ztics -unset border +set border +set xlabel 'x, m' offset 0,1 +set ylabel 'y, m' offset 1,0 +set cblabel 'Wave amplitude, m' offset -1,0 set pm3d set style data pm3d set dgrid3d 200,200 exp diff --git a/gnuplot/vessel.gnuplot b/gnuplot/vessel.gnuplot @@ -4,7 +4,7 @@ set view equal xyz set view ,,4 #set object 1 rectangle from screen -0.1,-0.1 to screen 1.1,1.1 fillcolor rgb "#f0f0f0" behind unset key -set title ARG1 +set title ARG3 offset 0,-3 #unset border #unset xtics #unset ytics @@ -22,6 +22,9 @@ set zrange [*:40] set xzeroaxis set yzeroaxis set zzeroaxis +set xlabel 'x, m' +set ylabel 'y, m' +set zlabel 'z, m' set output ARG2 splot ARG1 #splot 'Aurora.vsl.gnuplot' with lines lw 0.1 lc 'black' diff --git a/main.tex b/main.tex @@ -430,7 +430,7 @@ that describe the surface), we compute the same formula for each point of the surface. It is easy to do with C++ for CPU computation, but it takes some effort to efficiently run this algorithm with GPU acceleration. Our first naive implementation was inefficient, but the second implementation that used -local memory to optimise memory loads and stores works proved to be much more +local memory to optimise memory loads and stores proved to be much more performant. First, we optimised storage order of points making it fully sequential. @@ -452,11 +452,11 @@ and then proceeded to the next block. This approach allowed to achieve almost A distinctive feature of the local memory is that it has the smallest latency, at the same time sharing its contents between all computing units of the -multiprocessor. Using local memory we reduce number of access to global -memory, which has a much bigger latency. As far as global memory bandwidth -remains a bottleneck, this kind of optimisation would improve performance. -To summarise, our approach to write code for graphical accelerators is the -following: +multiprocessor. Using local memory we reduce the number of load/store +operations to global memory, which has larger latency. As far as global memory +bandwidth remains a bottleneck, this kind of optimisation would improve +performance. To summarise, our approach to write code for graphical +accelerators is the following: \begin{itemize} \item make storage order linear, \item use as many built-in vector operations as is possible, @@ -485,17 +485,26 @@ Here \(w_j\) is solution~\eqref{eq-solution-diffraction} written for panel In the centre of the panel \(K_j=0\) and far from the ship hull \(K_j\rightarrow{}0\). +\begin{figure} + \centering + \includegraphics{build/ships/diogen.eps}\hfill + \includegraphics{build/ships/aurora.eps}\hfill + \includegraphics{build/ships/micw.eps} + \caption{Diogen, Aurora and MICW three-dimensional ship hull + models.\label{fig-ships}} +\end{figure} + In the experiment waves with amplitude 1 approach the ship from the aft. The results of the experiment are shown in fig.~\ref{fig-diffraction}. Near the -aft waves changes theire direction to be tangent to the waterline curve, follow -the curve all the way to the bow, and then restore their original direction. -The amplitude of waves near the hull is also increased. +aft waves change their direction to be tangent to the waterline curve, follow +the curve to the bow, and then restore their original direction. The amplitude +of waves near the hull is also increased. \begin{figure} \centering \includegraphics{build/gnuplot/surface.eps} \caption{Wave diffraction around Aurora's hull (the hull is not - shown).\label{fig-diffraction}} + shown). Top view.\label{fig-diffraction}} \end{figure} @@ -513,6 +522,22 @@ ship with small moment of inertia for the current waterline benchmarks is the number of panels into which the hull is decomposed. These numbers are shown in tab.~\ref{tab-ships}. +\begin{table} + \centering + \caption{Parameters of ship hulls that were used in the + benchmarks.\label{tab-ships}} + \begin{tabular}{lrrr} + \toprule + & Diogen & Aurora & MICW \\ + \midrule + Length, m & 60 & 126.5 & 260 \\ + Beam, m & 15 & 16.8 & 32 \\ + Depth, m & 15 & 14.5 & 31 \\ + No. of panels & 4346 & 6335 & 9252 \\ + \bottomrule + \end{tabular} +\end{table} + Benchmarks were performed using three workstations: DarkwingDuck, GPUlab, Capybara. DarkwingDuck is a laptop, GPUlab is a desktop workstation, and Capybara is a desktop with professional graphical accelerator server-grade @@ -573,15 +598,16 @@ processor (tab.~\ref{tab-config}). \section{Discussion} -All the solutions obtained for various boundaries satisfy continuity equation -and equation of motion, but they are all written for plane surface boundary -with different orientations. Typical ship hull three-dimensional model is -represented by triangulated surface, and in the centre of each panel fluid -particle velocity vector does not depend on the surface normal of the panel and -not other panels. So, the solution for plane surface boundary is enough to -compute fluid velocity field directly \emph{on} the surface boundary. +All the solutions obtained for various boundaries in this papre satisfy +continuity equation and equation of motion, but they are all written for +\emph{plane} surface boundaries with different orientations. Typical ship hull +three-dimensional model is represented by triangulated surface, and in the +centre of each triangular panel fluid particle velocity vector does not depend +on the surface normal of the other panels. So, the solution for plane surface +boundary is enough to compute fluid velocity field directly \emph{on} the +surface boundary. -In order to generalise the solution fluid velocity field \emph{near} the +In order to generalise the solution for fluid velocity field \emph{near} the surface boundary, we need to calculate weighted average of reflection terms of each underwater panel of the surface. Using inverse squared distance as the weight gives acceptable results in our experiments, but may not be appropriate @@ -622,29 +648,4 @@ Russian Federation (grant no.~MK-383.2020.9). \bibliographystyle{splncs04} \bibliography{references} -\begin{table} - \centering - \caption{Parameters of ship hulls that were used in the - benchmarks.\label{tab-ships}} - \begin{tabular}{lrrr} - \toprule - & Diogen & Aurora & MICW \\ - \midrule - Length, m & 60 & 126.5 & 260 \\ - Beam, m & 15 & 16.8 & 32 \\ - Depth, m & 15 & 14.5 & 31 \\ - No. of panels & 4346 & 6335 & 9252 \\ - \bottomrule - \end{tabular} -\end{table} - -\begin{figure} - \centering - \includegraphics{build/ships/diogen.eps}\hfill - \includegraphics{build/ships/aurora.eps}\hfill - \includegraphics{build/ships/micw.eps} - \caption{Diogen, Aurora and MICW three-dimensional ship hull - models.\label{fig-ships}} -\end{figure} - \end{document} diff --git a/review.org b/review.org @@ -0,0 +1,18 @@ +* DONE Review 1 +CLOSED: [2020-06-20 Sat 12:00] + +- [X] Fig. 2 and table 3 are placed after the references. They should be + inserted into the text of the paper. +- [X] Table 3 is mentioned before the table 2 (see paragraphs 2 and 3 on page 8 + of the text). + + +* DONE Review 2 +CLOSED: [2020-06-20 Sat 13:36] + +There a few are minor remarks to improve the paper: +- [X] Related work is not analyzed in detail, Related work section is missing at all +- [X] Plots in figures 1 and 2 have neither designation not measurement units of + axes +- [X] Table 3 and Fugure 2 after References look weird, try to incorporate them into + the main body of the paper