iccsa-19-vtestbed

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

commit db8206cd63994115c040f5f82034640473594c9b
parent ce33fc7c48f509c95cf645da578ad2d6187447f5
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Wed, 27 Mar 2019 18:32:10 +0300

Results.

Diffstat:
gnuplot/openmp.gnuplot | 11++++++++++-
main.tex | 52++++++++++++++++++++++++++++++++++++++++++++++++----
shell/profile | 2+-
3 files changed, 59 insertions(+), 6 deletions(-)

diff --git a/gnuplot/openmp.gnuplot b/gnuplot/openmp.gnuplot @@ -1,14 +1,23 @@ #!/usr/bin/gnuplot -d -set terminal svg size 1920/8,1080/6 dynamic round font 'Times, 10' lw 0.5 +set terminal svg size 2*1920/8,1080/6 dynamic round font 'Times, 10' lw 0.5 set key Left reverse set xlabel 'No. of parallel threads' offset 0,0.25 set ylabel 'Time, ms' offset 2,0 set xrange [0:10] load 'gnuplot/style.gnuplot' set output 'build/openmp.svg' +set multiplot layout 1,2 plot \ 'build/storm.openmp.dat' with linespoints ls 1 lw 4 smooth csplines title 'Storm', \ 'build/gpulab1.openmp.dat' with linespoints ls 2 lw 4 smooth csplines title 'GPUlab', \ 'build/capybara1.openmp.dat' with linespoints ls 3 lw 4 smooth csplines title 'Capybara' +set ylabel 'Speedup' offset 2,0 +set yrange [0:10] +set key left Left reverse +plot \ + 'build/storm.openmp.dat' using 1:3 with linespoints ls 1 lw 4 smooth csplines title 'Storm', \ + 'build/gpulab1.openmp.dat' using 1:3 with linespoints ls 2 lw 4 smooth csplines title 'GPUlab', \ + 'build/capybara1.openmp.dat' using 1:3 with linespoints ls 3 lw 4 smooth csplines title 'Capybara', \ + x with lines lw 4 lc 'gray' dt 3 notitle diff --git a/main.tex b/main.tex @@ -391,6 +391,9 @@ To assess visualisation performance we measured the execution time of each visualisation frame (one iteration of the visualisation main loop) and execution time of computational frame (one iteration of the computational loop), from which it is easy to compute the usual frames-per-second metric. +The tests were run for one minute and were forcibly stopped after the time ran +out. Wall clock time was measured as a median across all simulation steps (or +visualisation frames). \begin{figure} \centering @@ -420,7 +423,7 @@ loop), from which it is easy to compute the usual frames-per-second metric. We ran all tests on the same node for increasing number of processor cores and with and without graphical accelerator. The code was compiled with maximum optimisation level including processor-specific optimisations which enabled -auto-vectorisation for further performance improvement. +auto-vectorisation for further performance improvements. We ran all tests for each of the three ship models: Aurora, MICW (a hull with reduced moments of inertia for the current waterline) and sphere. The first two @@ -431,6 +434,13 @@ models are shown in fig.~\ref{fig:models}. Spherical ship hull was used as a geometrical shape wetted surface area of which is close to constant under impact of ocean waves. +We ran all tests for each workstation from tab.~\ref{tab:setup} to investigate +if there is a difference in performance between ordinary workstation and a +computer for visualisation. Storm is a regular workstation with mediocre +processor and graphical accelerator, GPUlab is a slightly more powerful +workstation, and Capybara has the most powerful processor and professional +graphical accelerator for visualisation. + \begin{table} \centering \caption{Parameters of ship models that were used in the @@ -458,15 +468,48 @@ impact of ocean waves. \subsection{Benchmark results} +The main result of the benchmarks is that Virtual testbed is capable of running +on a regular workstation with a graphical accelerator in real-time with high +frame rate and small simulation time steps. + +\begin{itemize} + + \item We achieved more than 60 simulation steps per second on each of the + workstations. For Storm and GPUlab the most performant programme + version was the one for graphical accelerator and for Capybara the most + performant version was the one for the processor (tab.~\ref{tab:best}). + + \item The most performant node is GPUlab with 104 simulation steps per + second. Performance of Capybara is higher than Storm, but it uses + powerful server-grade processor to achieve it. + + \item Computational speedup for increasing number of parallel OpenMP + threads is far from linear: we achieved only fourfold speedup for ten + threads (fig.~\ref{fig:openmp}). + + \item Although, GPUlab's processor has higher frequency, even one core of + Capybara's processor achieves slightly higher performance. + + \item The least powerful workstation (Storm) has the largest positive + difference between graphical accelerator and processor performance + (fig.~\ref{fig:histogram}). The most powerful workstation (Capybara) + has comparable but negative difference. + + \item Usage of graphical accelerator increases time needed to synchronise + simulation step with the visualisation frame ("exchange" in + fig.~\ref{fig:histogram}). + +\end{itemize} + \begin{table} \centering \caption{Best median performance for each workstation (spherical ship hull). Here \(t\) is simulation step computation time, \(1\text{s}/t\)~--- no. of frames per second, and \(n\)~--- the number of - OpenMP threads.\label{tab:benchmark1}} + OpenMP threads.\label{tab:best}} \begin{tabular}{lrrrl} \toprule - Node & \(t\), ms & \(1\text{s}/t\) & \(n\) & Technology \\ + Node & \(t\), ms & \(1\text{s}/t\) & \(n\) & Version \\ \midrule Storm & 16 & 64 & 1 & OpenCL \\ GPUlab & 10 & 104 & 1 & OpenCL \\ @@ -485,7 +528,8 @@ impact of ocean waves. \begin{figure} \centering \includegraphics{build/histogram.eps} - \caption{\label{fig:histogram}} + \caption{Median computation time for each main loop stage, each node and + sequential, OpenMP and OpenCL versions.\label{fig:histogram}} \end{figure} diff --git a/shell/profile b/shell/profile @@ -79,7 +79,7 @@ for node in $(query_for_shell 'SELECT DISTINCT node FROM profile') do echo $node query_for_gnuplot " - SELECT nthreads,total + SELECT nthreads,total,(SELECT total FROM profile WHERE profile='sequential' and node='$node')/total FROM profile WHERE profile='openmp' and node='$node' " > build/$node.openmp.dat