add single precision, add aa-vec-sl-soa kernel, updated doc
[LbmBenchmarkKernelsPublic.git] / doc / html / main.html
diff --git a/doc/html/main.html b/doc/html/main.html
deleted file mode 100644 (file)
index 99f4cb8..0000000
+++ /dev/null
@@ -1,1910 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
-<title>LBM Benchmark Kernels Documentation</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
-  border: 0 }
-
-table.borderless td, table.borderless th {
-  /* Override padding for "table.docutils td" with "! important".
-     The right padding separates the table cells. */
-  padding: 0 0.5em 0 0 ! important }
-
-.first {
-  /* Override more specific margin styles with "! important". */
-  margin-top: 0 ! important }
-
-.last, .with-subtitle {
-  margin-bottom: 0 ! important }
-
-.hidden {
-  display: none }
-
-a.toc-backref {
-  text-decoration: none ;
-  color: black }
-
-blockquote.epigraph {
-  margin: 2em 5em ; }
-
-dl.docutils dd {
-  margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
-  overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
-  font-weight: bold }
-*/
-
-div.abstract {
-  margin: 2em 5em }
-
-div.abstract p.topic-title {
-  font-weight: bold ;
-  text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
-  margin: 2em ;
-  border: medium outset ;
-  padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
-  font-weight: bold ;
-  font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
-  color: red ;
-  font-weight: bold ;
-  font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
-   compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
-  margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
-  margin-top: 0.5em }
-*/
-
-div.dedication {
-  margin: 2em 5em ;
-  text-align: center ;
-  font-style: italic }
-
-div.dedication p.topic-title {
-  font-weight: bold ;
-  font-style: normal }
-
-div.figure {
-  margin-left: 2em ;
-  margin-right: 2em }
-
-div.footer, div.header {
-  clear: both;
-  font-size: smaller }
-
-div.line-block {
-  display: block ;
-  margin-top: 1em ;
-  margin-bottom: 1em }
-
-div.line-block div.line-block {
-  margin-top: 0 ;
-  margin-bottom: 0 ;
-  margin-left: 1.5em }
-
-div.sidebar {
-  margin: 0 0 0.5em 1em ;
-  border: medium outset ;
-  padding: 1em ;
-  background-color: #ffffee ;
-  width: 40% ;
-  float: right ;
-  clear: right }
-
-div.sidebar p.rubric {
-  font-family: sans-serif ;
-  font-size: medium }
-
-div.system-messages {
-  margin: 5em }
-
-div.system-messages h1 {
-  color: red }
-
-div.system-message {
-  border: medium outset ;
-  padding: 1em }
-
-div.system-message p.system-message-title {
-  color: red ;
-  font-weight: bold }
-
-div.topic {
-  margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
-  margin-top: 0.4em }
-
-h1.title {
-  text-align: center }
-
-h2.subtitle {
-  text-align: center }
-
-hr.docutils {
-  width: 75% }
-
-img.align-left, .figure.align-left, object.align-left {
-  clear: left ;
-  float: left ;
-  margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right {
-  clear: right ;
-  float: right ;
-  margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.align-left {
-  text-align: left }
-
-.align-center {
-  clear: both ;
-  text-align: center }
-
-.align-right {
-  text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
-  text-align: inherit }
-
-/* div.align-center * { */
-/*   text-align: left } */
-
-ol.simple, ul.simple {
-  margin-bottom: 1em }
-
-ol.arabic {
-  list-style: decimal }
-
-ol.loweralpha {
-  list-style: lower-alpha }
-
-ol.upperalpha {
-  list-style: upper-alpha }
-
-ol.lowerroman {
-  list-style: lower-roman }
-
-ol.upperroman {
-  list-style: upper-roman }
-
-p.attribution {
-  text-align: right ;
-  margin-left: 50% }
-
-p.caption {
-  font-style: italic }
-
-p.credits {
-  font-style: italic ;
-  font-size: smaller }
-
-p.label {
-  white-space: nowrap }
-
-p.rubric {
-  font-weight: bold ;
-  font-size: larger ;
-  color: maroon ;
-  text-align: center }
-
-p.sidebar-title {
-  font-family: sans-serif ;
-  font-weight: bold ;
-  font-size: larger }
-
-p.sidebar-subtitle {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-p.topic-title {
-  font-weight: bold }
-
-pre.address {
-  margin-bottom: 0 ;
-  margin-top: 0 ;
-  font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
-  margin-left: 2em ;
-  margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
-  font-family: sans-serif ;
-  font-style: oblique }
-
-span.classifier-delimiter {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-span.interpreted {
-  font-family: sans-serif }
-
-span.option {
-  white-space: nowrap }
-
-span.pre {
-  white-space: pre }
-
-span.problematic {
-  color: red }
-
-span.section-subtitle {
-  /* font-size relative to parent (h1..h6 element) */
-  font-size: 80% }
-
-table.citation {
-  border-left: solid 1px gray;
-  margin-left: 1px }
-
-table.docinfo {
-  margin: 2em 4em }
-
-table.docutils {
-  margin-top: 0.5em ;
-  margin-bottom: 0.5em }
-
-table.footnote {
-  border-left: solid 1px black;
-  margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
-  padding-left: 0.5em ;
-  padding-right: 0.5em ;
-  vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
-  font-weight: bold ;
-  text-align: left ;
-  white-space: nowrap ;
-  padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
-  border: 0px;
-  border-top: 2px solid;
-  border-bottom: 2px solid;
-  border-collapse: collapse;
-}
-table.docutils.booktabs * {
-  border: 0px;
-}
-table.docutils.booktabs th {
-  border-bottom: thin solid;
-  text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
-  font-size: 100% }
-
-ul.auto-toc {
-  list-style-type: none }
-
-</style>
-<style type="text/css">
-
-
-h1, h2, h3, h4, h5, h6 {
-  font-family: sans-serif;
-  font-size: 100%;
-  background-color: #dcdcdc;
-}
-
-h1.title {
-  background-color: gray;
-  color: white
-}
-
-table.footnote {
-  padding-left: 0.5ex;
-}
-
-table.citation {
-  padding-left: 0.5ex
-}
-
-td.label {
-  width: 10%;
-}
-
-table, table.docutils, td, th {
-  border: 0;
-}
-
-table.citation, table.footnote {
-  width: 100%;
-}
-
-th {
-    background-color: lavender ;
-}
-
-tr:nth-child(even) {
-    xxbackground-color: aliceblue;
-    background-color: white; 
-}
-tr:nth-child(odd) {
-    xxbackground-color: lavender;
-    background-color: whitesmoke;
-}
-
-
-
-</style>
-</head>
-<body>
-<div class="document" id="lbm-benchmark-kernels-documentation">
-<h1 class="title">LBM Benchmark Kernels Documentation</h1>
-
-<!-- # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-#
-# Copyright
-#   Markus Wittmann, 2016-2017
-#   RRZE, University of Erlangen-Nuremberg, Germany
-#   markus.wittmann -at- fau.de or hpc -at- rrze.fau.de
-#
-#   Viktor Haag, 2016
-#   LSS, University of Erlangen-Nuremberg, Germany
-#
-#  This file is part of the Lattice Boltzmann Benchmark Kernels (LbmBenchKernels).
-#
-#  LbmBenchKernels is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#
-#  LbmBenchKernels is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with LbmBenchKernels.  If not, see <http://www.gnu.org/licenses/>.
-#
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-<div class="contents topic" id="contents">
-<p class="topic-title first">Contents</p>
-<ul class="auto-toc simple">
-<li><a class="reference internal" href="#introduction" id="id5">1&nbsp;&nbsp;&nbsp;Introduction</a></li>
-<li><a class="reference internal" href="#compilation" id="id6">2&nbsp;&nbsp;&nbsp;Compilation</a><ul class="auto-toc">
-<li><a class="reference internal" href="#debug-and-verification" id="id7">2.1&nbsp;&nbsp;&nbsp;Debug and Verification</a></li>
-<li><a class="reference internal" href="#release-and-verification" id="id8">2.2&nbsp;&nbsp;&nbsp;Release and Verification</a></li>
-<li><a class="reference internal" href="#benchmarking" id="id9">2.3&nbsp;&nbsp;&nbsp;Benchmarking</a></li>
-<li><a class="reference internal" href="#compilers" id="id10">2.4&nbsp;&nbsp;&nbsp;Compilers</a></li>
-<li><a class="reference internal" href="#cleaning" id="id11">2.5&nbsp;&nbsp;&nbsp;Cleaning</a></li>
-<li><a class="reference internal" href="#options-summary" id="id12">2.6&nbsp;&nbsp;&nbsp;Options Summary</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#invocation" id="id13">3&nbsp;&nbsp;&nbsp;Invocation</a><ul class="auto-toc">
-<li><a class="reference internal" href="#command-line-parameters" id="id14">3.1&nbsp;&nbsp;&nbsp;Command Line Parameters</a></li>
-<li><a class="reference internal" href="#kernels" id="id15">3.2&nbsp;&nbsp;&nbsp;Kernels</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#id2" id="id16">4&nbsp;&nbsp;&nbsp;Benchmarking</a><ul class="auto-toc">
-<li><a class="reference internal" href="#intel-compiler" id="id17">4.1&nbsp;&nbsp;&nbsp;Intel Compiler</a></li>
-<li><a class="reference internal" href="#pinning" id="id18">4.2&nbsp;&nbsp;&nbsp;Pinning</a></li>
-<li><a class="reference internal" href="#general-remarks" id="id19">4.3&nbsp;&nbsp;&nbsp;General Remarks</a></li>
-<li><a class="reference internal" href="#padding" id="id20">4.4&nbsp;&nbsp;&nbsp;Padding</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#geometries" id="id21">5&nbsp;&nbsp;&nbsp;Geometries</a></li>
-<li><a class="reference internal" href="#performance-results" id="id22">6&nbsp;&nbsp;&nbsp;Performance Results</a><ul class="auto-toc">
-<li><a class="reference internal" href="#haswell-intel-xeon-e5-2695-v3" id="id23">6.1&nbsp;&nbsp;&nbsp;Haswell, Intel Xeon E5-2695 v3</a></li>
-<li><a class="reference internal" href="#broadwell-intel-xeon-e5-2630-v4" id="id24">6.2&nbsp;&nbsp;&nbsp;Broadwell, Intel Xeon E5-2630 v4</a></li>
-<li><a class="reference internal" href="#skylake-intel-xeon-gold-6148" id="id25">6.3&nbsp;&nbsp;&nbsp;Skylake, Intel Xeon Gold 6148</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#licence" id="id26">7&nbsp;&nbsp;&nbsp;Licence</a></li>
-<li><a class="reference internal" href="#acknowledgements" id="id27">8&nbsp;&nbsp;&nbsp;Acknowledgements</a></li>
-<li><a class="reference internal" href="#bibliography" id="id28">9&nbsp;&nbsp;&nbsp;Bibliography</a></li>
-</ul>
-</div>
-<div class="section" id="introduction">
-<h1><a class="toc-backref" href="#id5">1&nbsp;&nbsp;&nbsp;Introduction</a></h1>
-<p>The lattice Boltzmann (LBM) benchmark kernels are a collection of LBM kernel
-implementations.</p>
-<p><strong>AS SUCH THE LBM BENCHMARK KERNELS ARE NO FULLY EQUIPPED CFD SOLVER AND SOLELY
-SERVES THE PURPOSE OF STUDYING POSSIBLE PERFORMANCE OPTIMIZATIONS AND/OR
-EXPERIMENTS.</strong></p>
-<p>Currently all kernels utilize a D3Q19 discretization and the
-two-relaxation-time (TRT) collision operator <a class="citation-reference" href="#ginzburg-2008" id="id1">[ginzburg-2008]</a>.
-All operations are carried out in double precision arithmetic.</p>
-</div>
-<div class="section" id="compilation">
-<h1><a class="toc-backref" href="#id6">2&nbsp;&nbsp;&nbsp;Compilation</a></h1>
-<p>The benchmark framework currently supports only Linux systems and the GCC and
-Intel compilers. Every other configuration probably requires adjustment inside
-the code and the makefiles. Furthermore some code might be platform or at least
-POSIX specific.</p>
-<p>The benchmark can be build via <tt class="docutils literal">make</tt> from the <tt class="docutils literal">src</tt> subdirectory. This will
-generate one binary which hosts all implemented benchmark kernels.</p>
-<p>Binaries are located under the <tt class="docutils literal">bin</tt> subdirectory and will have different names
-depending on compiler and build configuration.</p>
-<p>Compilation can target debug or release builds. Combined with both build types
-verification can be enabled, which increases the runtime and hence is not
-suited for benchmarking.</p>
-<div class="section" id="debug-and-verification">
-<h2><a class="toc-backref" href="#id7">2.1&nbsp;&nbsp;&nbsp;Debug and Verification</a></h2>
-<pre class="literal-block">
-make BUILD=debug BENCHMARK=off
-</pre>
-<p>Running <tt class="docutils literal">make</tt> with <tt class="docutils literal">BUILD=debug</tt> builds the debug version of
-the benchmark kernels, where no optimizations are performed,  line numbers and
-debug symbols are included as well as <tt class="docutils literal">DEBUG</tt> will be defined.  The resulting
-binary will be found in the <tt class="docutils literal">bin</tt> subdirectory and named
-<tt class="docutils literal"><span class="pre">lbmbenchk-linux-&lt;compiler&gt;-debug</span></tt>.</p>
-<p>Specifying <tt class="docutils literal">BENCHMARK=off</tt> turns on verification
-(<tt class="docutils literal">VERIFICATION=on</tt>), statistics (<tt class="docutils literal">STATISTICS=on</tt>), and VTK output
-(<tt class="docutils literal">VTK_OUTPUT=on</tt>) enabled.</p>
-<p>Please note that the generated binary will therefore
-exhibit a poor performance.</p>
-</div>
-<div class="section" id="release-and-verification">
-<h2><a class="toc-backref" href="#id8">2.2&nbsp;&nbsp;&nbsp;Release and Verification</a></h2>
-<p>Verification with the debug builds can be extremely slow. Hence verification
-capabilities can be build with release builds:</p>
-<pre class="literal-block">
-make BENCHMARK=off
-</pre>
-</div>
-<div class="section" id="benchmarking">
-<h2><a class="toc-backref" href="#id9">2.3&nbsp;&nbsp;&nbsp;Benchmarking</a></h2>
-<p>To generate a binary for benchmarking run make with</p>
-<pre class="literal-block">
-make
-</pre>
-<p>As default <tt class="docutils literal">BENCHMARK=on</tt> and <tt class="docutils literal">BUILD=release</tt> is set, where
-<tt class="docutils literal">BUILD=release</tt> turns optimizations on and <tt class="docutils literal">BENCHMARK=on</tt> disables
-verfification, statistics, and VTK output.</p>
-<p>See Options Summary below for further description of options which can be
-applied, e.g. TARCH as well as the Benchmarking section.</p>
-</div>
-<div class="section" id="compilers">
-<h2><a class="toc-backref" href="#id10">2.4&nbsp;&nbsp;&nbsp;Compilers</a></h2>
-<p>Currently only the GCC and Intel compiler under Linux are supported. Between
-both configuration can be chosen via <tt class="docutils literal"><span class="pre">CONFIG=linux-gcc</span></tt> or
-<tt class="docutils literal"><span class="pre">CONFIG=linux-intel</span></tt>.</p>
-</div>
-<div class="section" id="cleaning">
-<h2><a class="toc-backref" href="#id11">2.5&nbsp;&nbsp;&nbsp;Cleaning</a></h2>
-<p>For each configuration and build (debug/release) a subdirectory under the
-<tt class="docutils literal">src/obj</tt> directory is created where the dependency and object files are
-stored.
-With</p>
-<pre class="literal-block">
-make CONFIG=... BUILD=... clean
-</pre>
-<p>a specific combination is select and cleaned, whereas with</p>
-<pre class="literal-block">
-make clean-all
-</pre>
-<p>all object and dependency files are deleted.</p>
-</div>
-<div class="section" id="options-summary">
-<h2><a class="toc-backref" href="#id12">2.6&nbsp;&nbsp;&nbsp;Options Summary</a></h2>
-<p>Options that can be specified when building the suite with make:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="7%" />
-<col width="12%" />
-<col width="6%" />
-<col width="75%" />
-</colgroup>
-<thead valign="bottom">
-<tr><th class="head">name</th>
-<th class="head">values</th>
-<th class="head">default</th>
-<th class="head">description</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr><td>BENCHMARK</td>
-<td>on, off</td>
-<td>on</td>
-<td>If enabled, disables VERIFICATION, STATISTICS, VTK_OUTPUT. If disabled enables the three former options.</td>
-</tr>
-<tr><td>BUILD</td>
-<td>debug, release</td>
-<td>release</td>
-<td>debug: no optimization, debug symbols, DEBUG defined. release: optimizations enabled.</td>
-</tr>
-<tr><td>CONFIG</td>
-<td>linux-gcc, linux-intel</td>
-<td>linux-intel</td>
-<td>Select GCC or Intel compiler.</td>
-</tr>
-<tr><td>ISA</td>
-<td>avx, sse</td>
-<td>avx</td>
-<td>Determines which ISA extension is used for macro definitions of the intrinsics. This is <em>not</em> the architecture the compiler generates code for.</td>
-</tr>
-<tr><td>OPENMP</td>
-<td>on, off</td>
-<td>on</td>
-<td>OpenMP, i.,e.. threading support.</td>
-</tr>
-<tr><td>STATISTICS</td>
-<td>on, off</td>
-<td>off</td>
-<td>View statistics, like density etc, during simulation.</td>
-</tr>
-<tr><td>TARCH</td>
-<td>--</td>
-<td>--</td>
-<td>Via TARCH the architecture the compiler generates code for can be overridden. The value depends on the chosen compiler.</td>
-</tr>
-<tr><td>VERIFICATION</td>
-<td>on, off</td>
-<td>off</td>
-<td>Turn verification on/off.</td>
-</tr>
-<tr><td>VTK_OUTPUT</td>
-<td>on, off</td>
-<td>off</td>
-<td>Enable/Disable VTK file output.</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-<div class="section" id="invocation">
-<h1><a class="toc-backref" href="#id13">3&nbsp;&nbsp;&nbsp;Invocation</a></h1>
-<p>Running the binary will print among the GPL licence header a line like the following:</p>
-<pre class="literal-block">
-LBM Benchmark Kernels 0.1, compiled Jul  5 2017 21:59:22, type: verification
-</pre>
-<p>if verfication was enabled during compilation or</p>
-<pre class="literal-block">
-LBM Benchmark Kernels 0.1, compiled Jul  5 2017 21:59:22, type: benchmark
-</pre>
-<p>if verfication was disabled during compilation.</p>
-<div class="section" id="command-line-parameters">
-<h2><a class="toc-backref" href="#id14">3.1&nbsp;&nbsp;&nbsp;Command Line Parameters</a></h2>
-<p>Running the binary with <tt class="docutils literal"><span class="pre">-h</span></tt> list all available parameters:</p>
-<pre class="literal-block">
-Usage:
-./lbmbenchk -list
-./lbmbenchk
-    [-dims XxYyZ] [-geometry box|channel|pipe|blocks[-&lt;block size&gt;]] [-iterations &lt;iterations&gt;] [-lattice-dump-ascii]
-    [-rho-in &lt;density&gt;] [-rho-out &lt;density] [-omega &lt;omega&gt;] [-kernel &lt;kernel&gt;]
-    [-periodic-x]
-    [-t &lt;number of threads&gt;]
-    [-pin core{,core}*]
-    [-verify]
-    -- &lt;kernel specific parameters&gt;
-
--list           List available kernels.
-
--dims XxYxZ     Specify geometry dimensions.
-
--geometry blocks-&lt;block size&gt;
-                Geometetry with blocks of size &lt;block size&gt; regularily layout out.
-</pre>
-<p>If an option is specified multiple times the last one overrides previous ones.
-This holds also true for <tt class="docutils literal"><span class="pre">-verify</span></tt> which sets geometry dimensions,
-iterations, etc, which can afterward be override, e.g.:</p>
-<pre class="literal-block">
-$ bin/lbmbenchk-linux-intel-release -verfiy -dims 32x32x32
-</pre>
-<p>Kernel specific parameters can be obtained via selecting the specific kernel
-and passing <tt class="docutils literal"><span class="pre">-h</span></tt> as parameter:</p>
-<pre class="literal-block">
-$ bin/lbmbenchk-linux-intel-release -kernel kernel-name -- -h
-...
-Kernel parameters:
-[-blk &lt;n&gt;] [-blk-[xyz] &lt;n&gt;]
-</pre>
-<p>A list of all available kernels can be obtained via <tt class="docutils literal"><span class="pre">-list</span></tt>:</p>
-<pre class="literal-block">
-$ ../bin/lbmbenchk-linux-gcc-debug -list
-Lattice Boltzmann Benchmark Kernels (LbmBenchKernels) Copyright (C) 2016, 2017 LSS, RRZE
-This program comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.
-This is free software, and you are welcome to redistribute it under certain conditions.
-
-LBM Benchmark Kernels 0.1, compiled Jul  5 2017 21:59:22, type: verification
-Available kernels to benchmark:
-   list-aa-pv-soa
-   list-aa-ria-soa
-   list-aa-soa
-   list-aa-aos
-   list-pull-split-nt-1s-soa
-   list-pull-split-nt-2s-soa
-   list-push-soa
-   list-push-aos
-   list-pull-soa
-   list-pull-aos
-   push-soa
-   push-aos
-   pull-soa
-   pull-aos
-   blk-push-soa
-   blk-push-aos
-   blk-pull-soa
-   blk-pull-aos
-</pre>
-</div>
-<div class="section" id="kernels">
-<h2><a class="toc-backref" href="#id15">3.2&nbsp;&nbsp;&nbsp;Kernels</a></h2>
-<p>The following list shortly describes available kernels:</p>
-<ul class="simple">
-<li>push-soa/push-aos/pull-soa/pull-aos:
-Unoptimized kernels (but stream/collide are already fused) using two grids as
-source and destination. Implement push/pull semantics as well structure of
-arrays (soa) or array of structures (aos) layout.</li>
-<li>blk-push-soa/blk-push-aos/blk-pull-soa/blk-pull-aos:
-The same as the unoptimized kernels without the blk prefix, except that they support
-spatial blocking, i.e. loop blocking of the three loops used to iterate over
-the lattice. Here manual work sharing for OpenMP is used.</li>
-<li>list-push-soa/list-push-aos/list-pull-soa/list-pull-aos:
-The same as the unoptimized kernels without the list prefix, but for indirect addressing.
-Here only a 1D vector of is used to store the fluid nodes, omitting the
-obstacles. An adjacency list is used to recover the neighborhood associations.</li>
-<li>list-pull-split-nt-1s-soa/list-pull-split-nt-2s-soa:
-Optimized variant of list-pull-soa. Chunks of the lattice are processed as
-once. Postcollision values are written back via nontemporal stores in 18 (1s)
-or 9 (2s) loops.</li>
-<li>list-aa-aos/list-aa-soa:
-Unoptimized implementation of the AA pattern for the 1D vector with adjacency
-list. Supported are array of structures (aos) and structure of arrays (soa)
-data layout is supported.</li>
-<li>list-aa-ria-soa:
-Implementation of AA pattern with intrinsics for the 1D vector with adjacency
-list. Furthermore it contains a vectorized even time step and run length
-coding to reduce the loop balance of the odd time step.</li>
-<li>list-aa-pv-soa:
-All optimizations of list-aa-ria-soa. Additional with partial vectorization
-of the odd time step.</li>
-</ul>
-<p>Note that all array of structures (aos) kernels might require blocking
-(depending on the domain size) to reach the performance of their structure of
-arrays (soa) counter parts.</p>
-<p>The following table summarizes the properties of the kernels. Here <strong>D</strong> means
-direct addressing, i.e. full array, <strong>I</strong> means indirect addressing, i.e. 1D
-vector with adjacency list, <strong>x</strong> means supported, whereas <strong>--</strong> means unsupported.
-The loop balance B_l is computed for D3Q19 model with double precision floating
-point for PDFs (8 byte) and 4 byte integers for the index (adjacency list).
-As list-aa-ria-soa and list-aa-pv-soa support run length coding their effective
-loop balance depends on the geometry. The effective loop balance is printed
-during each run.</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="29%" />
-<col width="14%" />
-<col width="14%" />
-<col width="6%" />
-<col width="10%" />
-<col width="10%" />
-<col width="16%" />
-</colgroup>
-<thead valign="bottom">
-<tr><th class="head">kernel name</th>
-<th class="head">prop. step</th>
-<th class="head">data layout</th>
-<th class="head">addr.</th>
-<th class="head">parallel</th>
-<th class="head">blocking</th>
-<th class="head">B_l [B/FLUP]</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr><td>push-soa</td>
-<td>OS</td>
-<td>SoA</td>
-<td>D</td>
-<td>x</td>
-<td>--</td>
-<td>456</td>
-</tr>
-<tr><td>push-aos</td>
-<td>OS</td>
-<td>AoS</td>
-<td>D</td>
-<td>x</td>
-<td>--</td>
-<td>456</td>
-</tr>
-<tr><td>pull-soa</td>
-<td>OS</td>
-<td>SoA</td>
-<td>D</td>
-<td>x</td>
-<td>--</td>
-<td>456</td>
-</tr>
-<tr><td>pull-aos</td>
-<td>OS</td>
-<td>AoS</td>
-<td>D</td>
-<td>x</td>
-<td>--</td>
-<td>456</td>
-</tr>
-<tr><td>blk-push-soa</td>
-<td>OS</td>
-<td>SoA</td>
-<td>D</td>
-<td>x</td>
-<td>x</td>
-<td>456</td>
-</tr>
-<tr><td>blk-push-aos</td>
-<td>OS</td>
-<td>AoS</td>
-<td>D</td>
-<td>x</td>
-<td>x</td>
-<td>456</td>
-</tr>
-<tr><td>blk-pull-soa</td>
-<td>OS</td>
-<td>SoA</td>
-<td>D</td>
-<td>x</td>
-<td>x</td>
-<td>456</td>
-</tr>
-<tr><td>blk-pull-aos</td>
-<td>OS</td>
-<td>AoS</td>
-<td>D</td>
-<td>x</td>
-<td>x</td>
-<td>456</td>
-</tr>
-<tr><td>list-push-soa</td>
-<td>OS</td>
-<td>SoA</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>528</td>
-</tr>
-<tr><td>list-push-aos</td>
-<td>OS</td>
-<td>AoS</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>528</td>
-</tr>
-<tr><td>list-pull-soa</td>
-<td>OS</td>
-<td>SoA</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>528</td>
-</tr>
-<tr><td>list-pull-aos</td>
-<td>OS</td>
-<td>AoS</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>528</td>
-</tr>
-<tr><td>list-pull-split-nt-1s</td>
-<td>OS</td>
-<td>SoA</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>376</td>
-</tr>
-<tr><td>list-pull-split-nt-2s</td>
-<td>OS</td>
-<td>SoA</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>376</td>
-</tr>
-<tr><td>list-aa-soa</td>
-<td>AA</td>
-<td>SoA</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>340</td>
-</tr>
-<tr><td>list-aa-aos</td>
-<td>AA</td>
-<td>AoS</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>340</td>
-</tr>
-<tr><td>list-aa-ria-soa</td>
-<td>AA</td>
-<td>SoA</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>304-342</td>
-</tr>
-<tr><td>list-aa-pv-soa</td>
-<td>AA</td>
-<td>SoA</td>
-<td>I</td>
-<td>x</td>
-<td>x</td>
-<td>304-342</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-<div class="section" id="id2">
-<h1><a class="toc-backref" href="#id16">4&nbsp;&nbsp;&nbsp;Benchmarking</a></h1>
-<p>Correct benchmarking is a nontrivial task. Whenever benchmark results should be
-created make sure the binary was compiled with:</p>
-<ul class="simple">
-<li><tt class="docutils literal">BENCHMARK=on</tt> (default if not overriden) and</li>
-<li><tt class="docutils literal">BUILD=release</tt> (default if not overriden) and</li>
-<li>the correct ISA for macros is used, selected via <tt class="docutils literal">ISA</tt> and</li>
-<li>use <tt class="docutils literal">TARCH</tt> to specify the architecture the compiler generates code for.</li>
-</ul>
-<div class="section" id="intel-compiler">
-<h2><a class="toc-backref" href="#id17">4.1&nbsp;&nbsp;&nbsp;Intel Compiler</a></h2>
-<p>For the Intel compiler one can specify depending on the target ISA extension:</p>
-<ul class="simple">
-<li>AVX:          <tt class="docutils literal"><span class="pre">TARCH=-xAVX</span></tt></li>
-<li>AVX2 and FMA: <tt class="docutils literal"><span class="pre">TARCH=-xCORE-AVX2,-fma</span></tt></li>
-<li>AVX512:       <tt class="docutils literal"><span class="pre">TARCH=-xCORE-AVX512</span></tt></li>
-<li>KNL:          <tt class="docutils literal"><span class="pre">TARCH=-xMIC-AVX512</span></tt></li>
-</ul>
-<p>Compiling for an architecture supporting AVX (Sandy Bridge, Ivy Bridge):</p>
-<pre class="literal-block">
-make ISA=avx TARCH=-xAVX
-</pre>
-<p>Compiling for an architecture supporting AVX2 (Haswell, Broadwell):</p>
-<pre class="literal-block">
-make ISA=avx TARCH=-xCORE-AVX2,-fma
-</pre>
-<p>WARNING: ISA is here still set to <tt class="docutils literal">avx</tt> as currently we have the FMA intrinsics not
-implemented. This might change in the future.</p>
-<p>Compiling for an architecture supporting AVX-512 (Skylake):</p>
-<pre class="literal-block">
-make ISA=avx TARCH=-xCORE-AVX512
-</pre>
-<p>WARNING: ISA is here still set to <tt class="docutils literal">avx</tt> as currently we have no implementation for the
-AVX512 intrinsics. This might change in the future.</p>
-</div>
-<div class="section" id="pinning">
-<h2><a class="toc-backref" href="#id18">4.2&nbsp;&nbsp;&nbsp;Pinning</a></h2>
-<p>During benchmarking pinning should be used via the <tt class="docutils literal"><span class="pre">-pin</span></tt> parameter. Running
-a benchmark with 10 threads and pin them to the first 10 cores works like</p>
-<pre class="literal-block">
-$ bin/lbmbenchk-linux-intel-release ... -t 10 -pin $(seq -s , 0 9)
-</pre>
-</div>
-<div class="section" id="general-remarks">
-<h2><a class="toc-backref" href="#id19">4.3&nbsp;&nbsp;&nbsp;General Remarks</a></h2>
-<p>Things the binary does nor check or control:</p>
-<ul class="simple">
-<li>transparent huge pages: when allocating memory small 4 KiB pages might be
-replaced with larger ones. This is in general a good thing, but if this is
-really the case, depends on the system settings (check e.g. the status of
-<tt class="docutils literal">/sys/kernel/mm/transparent_hugepage/enabled</tt>).
-Currently <tt class="docutils literal">madvise(MADV_HUGEPAGE)</tt> is used for allocations which are aligned to
-a 4 KiB page, which should be the case for the lattices.
-This should result in huge pages except THP is disabled on the machine.
-(NOTE: madvise() is used if <tt class="docutils literal">HAVE_HUGE_PAGES</tt> is defined, which is currently
-hard coded defined in <tt class="docutils literal">Memory.c</tt>).</li>
-<li>CPU/core frequency: For reproducible results the frequency of all cores
-should be fixed.</li>
-<li>NUMA placement policy: The benchmark assumes a first touch policy, which
-means the memory will be placed at the NUMA domain the touching core is
-associated with. If a different policy is in place or the NUMA domain to be
-used is already full memory might be allocated in a remote domain. Accesses
-to remote domains typically have a higher latency and lower bandwidth.</li>
-<li>System load: interference with other application, especially on desktop
-systems should be avoided.</li>
-<li>Padding: For SoA based kernels the number of (fluid) nodes is automatically
-adjusted so that no cache or TLB thrashing should occur. The parameters are
-optimized for current Intel based systems. For more details look into the
-padding section.</li>
-<li>CPU dispatcher function: the compiler might add different versions of a
-function for different ISA extensions. Make sure the code you might think is
-executed is actually the code which is executed.</li>
-</ul>
-</div>
-<div class="section" id="padding">
-<h2><a class="toc-backref" href="#id20">4.4&nbsp;&nbsp;&nbsp;Padding</a></h2>
-<p>With correct padding cache and TLB thrashing can be avoided. Therefore the
-number of (fluid) nodes used in the data layout is artificially increased.</p>
-<p>Currently automatic padding is active for kernels which support it. It can be
-controlled via the kernel parameter (i.e. parameter after the <tt class="docutils literal"><span class="pre">--</span></tt>)
-<tt class="docutils literal"><span class="pre">-pad</span></tt>. Supported values are <tt class="docutils literal">auto</tt> (default), <tt class="docutils literal">no</tt> (to disable padding),
-or a manual padding.</p>
-<p>Automatic padding tries to avoid cache and TLB thrashing and pads for a 32
-entry (huge pages) TLB with 8 sets and a 512 set (L2) cache. This reflects the
-parameters of current Intel based processors.</p>
-<p>Manual padding is done via a padding string and has the format
-<tt class="docutils literal"><span class="pre">mod_1+offset_1(,mod_n+offset_n)</span></tt>, which specifies numbers of bytes.
-SoA data layouts can exhibit TLB thrashing. Therefore we want to distribute the
-19 pages with one lattice (36 with two lattices) we are concurrently accessing
-over as much sets in the TLB as possible.
-This is controlled by the distance between the accessed pages, which is the
-number of (fluid) nodes in between them and can be adjusted by adding further
-(fluid) nodes.
-We want the distance d (in bytes) between two accessed pages to be e.g.
-<strong>d % (PAGE_SIZE * TLB_SETS) = PAGE_SIZE</strong>.
-This would distribute the pages evenly over the sets. Hereby <strong>PAGE_SIZE * TLB_SETS</strong>
-would be our <tt class="docutils literal">mod_1</tt> and <strong>PAGE_SIZE</strong> (after the =) our <tt class="docutils literal">offset_1</tt>.
-Measurements show that with only a quarter of half of a page size as offset
-higher performance is achieved, which is done by automatic padding.
-On top of this padding more paddings can be added. They are just added to the
-padding string and are separated by commas.</p>
-<p>A zero modulus in the padding string has a special meaning. Here the
-corresponding offset is just added to the number of nodes. A padding string
-like <tt class="docutils literal"><span class="pre">-pad</span> 0+16</tt> would at a static padding of two nodes (one node = 8 b).</p>
-</div>
-</div>
-<div class="section" id="geometries">
-<h1><a class="toc-backref" href="#id21">5&nbsp;&nbsp;&nbsp;Geometries</a></h1>
-<p>TODO: supported geometries: channel, pipe, blocks, fluid</p>
-</div>
-<div class="section" id="performance-results">
-<h1><a class="toc-backref" href="#id22">6&nbsp;&nbsp;&nbsp;Performance Results</a></h1>
-<p>The sections lists performance values measured on several machines for
-different kernels and geometries.
-The <strong>RFM</strong> column denotes the expected performance as predicted by the
-Roofline performance model <a class="citation-reference" href="#williams-2008" id="id3">[williams-2008]</a>.
-For performance prediction of each kernel a memory bandwidth benchmark is used
-which mimics the kernels memory access pattern and the kernel's loop balance
-(see <a class="citation-reference" href="#kernels" id="id4">[kernels]</a> for details).</p>
-<div class="section" id="haswell-intel-xeon-e5-2695-v3">
-<h2><a class="toc-backref" href="#id23">6.1&nbsp;&nbsp;&nbsp;Haswell, Intel Xeon E5-2695 v3</a></h2>
-<ul class="simple">
-<li>Haswell architecture, AVX2, FMA</li>
-<li>14 cores, 2,3 GHz</li>
-<li>2 x 7 cores in cluster-on-die (CoD) mode enabled</li>
-<li>SMT enabled</li>
-</ul>
-<p>memory bandwidth:</p>
-<ul class="simple">
-<li>copy-19              47.3 GB/s</li>
-<li>copy-19-nt-sl        47.1 GB/s</li>
-<li>update-19            44.0 GB/s</li>
-</ul>
-<p>geometry dimensions:  500x100x100</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="19%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="4%" />
-</colgroup>
-<thead valign="bottom">
-<tr><th class="head">kernel</th>
-<th class="head">pipe</th>
-<th class="head">blocks-2</th>
-<th class="head">blocks-4</th>
-<th class="head">blocks-6</th>
-<th class="head">blocks-8</th>
-<th class="head">blocks-10</th>
-<th class="head">blocks-15</th>
-<th class="head">blocks-16</th>
-<th class="head">blocks-20</th>
-<th class="head">blocks-25</th>
-<th class="head">blocks-32</th>
-<th class="head">RFM</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr><td>blk-push-aos</td>
-<td>58.82</td>
-<td>49.85</td>
-<td>57.34</td>
-<td>59.90</td>
-<td>61.37</td>
-<td>62.17</td>
-<td>65.30</td>
-<td>64.00</td>
-<td>67.54</td>
-<td>64.46</td>
-<td>69.69</td>
-<td>104</td>
-</tr>
-<tr><td>blk-push-soa</td>
-<td>32.32</td>
-<td>33.46</td>
-<td>34.02</td>
-<td>34.64</td>
-<td>35.06</td>
-<td>35.04</td>
-<td>36.31</td>
-<td>35.44</td>
-<td>37.20</td>
-<td>35.14</td>
-<td>37.95</td>
-<td>104</td>
-</tr>
-<tr><td>blk-pull-aos</td>
-<td>56.97</td>
-<td>51.41</td>
-<td>56.09</td>
-<td>57.92</td>
-<td>59.98</td>
-<td>59.83</td>
-<td>63.37</td>
-<td>61.55</td>
-<td>65.50</td>
-<td>63.11</td>
-<td>67.02</td>
-<td>104</td>
-</tr>
-<tr><td>blk-pull-soa</td>
-<td>49.29</td>
-<td>46.23</td>
-<td>47.50</td>
-<td>51.97</td>
-<td>51.27</td>
-<td>49.52</td>
-<td>55.23</td>
-<td>53.13</td>
-<td>54.50</td>
-<td>49.79</td>
-<td>57.90</td>
-<td>104</td>
-</tr>
-<tr><td>aa-aos</td>
-<td>91.35</td>
-<td>66.14</td>
-<td>76.80</td>
-<td>84.76</td>
-<td>83.63</td>
-<td>91.36</td>
-<td>93.46</td>
-<td>92.62</td>
-<td>93.91</td>
-<td>92.25</td>
-<td>92.93</td>
-<td>145</td>
-</tr>
-<tr><td>aa-soa</td>
-<td>75.51</td>
-<td>65.68</td>
-<td>70.94</td>
-<td>71.36</td>
-<td>73.83</td>
-<td>75.46</td>
-<td>74.84</td>
-<td>79.48</td>
-<td>83.28</td>
-<td>77.70</td>
-<td>82.72</td>
-<td>145</td>
-</tr>
-<tr><td>aa-vec-soa</td>
-<td>93.85</td>
-<td>83.44</td>
-<td>91.58</td>
-<td>93.96</td>
-<td>94.35</td>
-<td>96.62</td>
-<td>101.76</td>
-<td>96.72</td>
-<td>106.37</td>
-<td>102.60</td>
-<td>110.28</td>
-<td>145</td>
-</tr>
-<tr><td>list-push-aos</td>
-<td>80.29</td>
-<td>80.97</td>
-<td>80.95</td>
-<td>81.10</td>
-<td>81.37</td>
-<td>82.44</td>
-<td>81.77</td>
-<td>81.49</td>
-<td>80.72</td>
-<td>81.93</td>
-<td>80.93</td>
-<td>83</td>
-</tr>
-<tr><td>list-push-soa</td>
-<td>47.52</td>
-<td>42.65</td>
-<td>45.28</td>
-<td>46.64</td>
-<td>43.46</td>
-<td>40.59</td>
-<td>44.94</td>
-<td>46.55</td>
-<td>41.53</td>
-<td>45.98</td>
-<td>44.86</td>
-<td>83</td>
-</tr>
-<tr><td>list-pull-aos</td>
-<td>85.30</td>
-<td>82.97</td>
-<td>86.43</td>
-<td>83.42</td>
-<td>86.33</td>
-<td>83.70</td>
-<td>86.43</td>
-<td>83.77</td>
-<td>83.10</td>
-<td>85.89</td>
-<td>84.44</td>
-<td>83</td>
-</tr>
-<tr><td>list-pull-soa</td>
-<td>62.12</td>
-<td>63.61</td>
-<td>63.28</td>
-<td>61.32</td>
-<td>66.72</td>
-<td>62.65</td>
-<td>64.82</td>
-<td>60.49</td>
-<td>58.01</td>
-<td>64.46</td>
-<td>62.52</td>
-<td>83</td>
-</tr>
-<tr><td>list-pull-split-nt-1s-soa</td>
-<td>121.35</td>
-<td>113.77</td>
-<td>115.29</td>
-<td>113.54</td>
-<td>117.00</td>
-<td>116.46</td>
-<td>114.78</td>
-<td>114.54</td>
-<td>110.83</td>
-<td>112.67</td>
-<td>117.85</td>
-<td>125</td>
-</tr>
-<tr><td>list-pull-split-nt-2s-soa</td>
-<td>118.09</td>
-<td>110.48</td>
-<td>112.55</td>
-<td>113.18</td>
-<td>113.44</td>
-<td>111.85</td>
-<td>109.27</td>
-<td>114.41</td>
-<td>110.28</td>
-<td>111.78</td>
-<td>113.74</td>
-<td>125</td>
-</tr>
-<tr><td>list-aa-aos</td>
-<td>121.28</td>
-<td>118.63</td>
-<td>119.00</td>
-<td>118.50</td>
-<td>121.99</td>
-<td>119.11</td>
-<td>118.83</td>
-<td>121.47</td>
-<td>121.62</td>
-<td>126.18</td>
-<td>120.12</td>
-<td>129</td>
-</tr>
-<tr><td>list-aa-soa</td>
-<td>126.34</td>
-<td>116.90</td>
-<td>129.45</td>
-<td>127.12</td>
-<td>129.41</td>
-<td>121.42</td>
-<td>126.19</td>
-<td>126.76</td>
-<td>126.70</td>
-<td>124.40</td>
-<td>125.22</td>
-<td>129</td>
-</tr>
-<tr><td>list-aa-ria-soa</td>
-<td>133.68</td>
-<td>121.82</td>
-<td>126.04</td>
-<td>128.46</td>
-<td>131.15</td>
-<td>132.25</td>
-<td>128.78</td>
-<td>133.50</td>
-<td>126.69</td>
-<td>124.40</td>
-<td>130.37</td>
-<td>145</td>
-</tr>
-<tr><td>list-aa-pv-soa</td>
-<td>146.22</td>
-<td>124.39</td>
-<td>130.73</td>
-<td>136.29</td>
-<td>137.61</td>
-<td>131.21</td>
-<td>138.65</td>
-<td>138.78</td>
-<td>127.02</td>
-<td>132.40</td>
-<td>138.37</td>
-<td>145</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="broadwell-intel-xeon-e5-2630-v4">
-<h2><a class="toc-backref" href="#id24">6.2&nbsp;&nbsp;&nbsp;Broadwell, Intel Xeon E5-2630 v4</a></h2>
-<ul class="simple">
-<li>Broadwell architecture, AVX2, FMA</li>
-<li>10 cores, 2.2 GHz</li>
-<li>SMT disabled</li>
-</ul>
-<p>memory bandwidth:</p>
-<ul class="simple">
-<li>copy-19              48.0 GB/s</li>
-<li>copy-nt-sl-19        48.2 GB/s</li>
-<li>update-19            51.1 GB/s</li>
-</ul>
-<p>geometry dimensions:  500x100x100</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="19%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="5%" />
-</colgroup>
-<thead valign="bottom">
-<tr><th class="head">kernel</th>
-<th class="head">pipe</th>
-<th class="head">blocks-2</th>
-<th class="head">blocks-4</th>
-<th class="head">blocks-6</th>
-<th class="head">blocks-8</th>
-<th class="head">blocks-10</th>
-<th class="head">blocks-15</th>
-<th class="head">blocks-16</th>
-<th class="head">blocks-20</th>
-<th class="head">blocks-25</th>
-<th class="head">blocks-32</th>
-<th class="head">RFM</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr><td>blk-push-aos</td>
-<td>55.75</td>
-<td>47.62</td>
-<td>54.57</td>
-<td>57.10</td>
-<td>58.49</td>
-<td>59.00</td>
-<td>61.72</td>
-<td>60.56</td>
-<td>64.05</td>
-<td>61.10</td>
-<td>66.03</td>
-<td>105</td>
-</tr>
-<tr><td>blk-push-soa</td>
-<td>30.06</td>
-<td>31.09</td>
-<td>32.13</td>
-<td>32.54</td>
-<td>32.74</td>
-<td>32.72</td>
-<td>33.81</td>
-<td>33.19</td>
-<td>34.90</td>
-<td>33.21</td>
-<td>35.75</td>
-<td>105</td>
-</tr>
-<tr><td>blk-pull-aos</td>
-<td>53.80</td>
-<td>48.61</td>
-<td>53.08</td>
-<td>54.99</td>
-<td>56.08</td>
-<td>56.68</td>
-<td>59.20</td>
-<td>58.12</td>
-<td>61.49</td>
-<td>58.71</td>
-<td>63.45</td>
-<td>105</td>
-</tr>
-<tr><td>blk-pull-soa</td>
-<td>46.96</td>
-<td>46.61</td>
-<td>48.84</td>
-<td>49.70</td>
-<td>50.33</td>
-<td>50.46</td>
-<td>52.36</td>
-<td>51.39</td>
-<td>54.20</td>
-<td>51.61</td>
-<td>55.71</td>
-<td>105</td>
-</tr>
-<tr><td>aa-aos</td>
-<td>91.40</td>
-<td>66.99</td>
-<td>78.47</td>
-<td>83.38</td>
-<td>86.62</td>
-<td>88.62</td>
-<td>92.98</td>
-<td>91.54</td>
-<td>97.08</td>
-<td>94.93</td>
-<td>98.90</td>
-<td>168</td>
-</tr>
-<tr><td>aa-soa</td>
-<td>83.01</td>
-<td>69.96</td>
-<td>75.85</td>
-<td>77.72</td>
-<td>79.01</td>
-<td>79.29</td>
-<td>82.38</td>
-<td>80.11</td>
-<td>85.70</td>
-<td>83.91</td>
-<td>87.69</td>
-<td>168</td>
-</tr>
-<tr><td>aa-vec-soa</td>
-<td>112.03</td>
-<td>96.52</td>
-<td>105.32</td>
-<td>109.76</td>
-<td>112.55</td>
-<td>113.82</td>
-<td>120.55</td>
-<td>118.37</td>
-<td>126.30</td>
-<td>121.37</td>
-<td>131.94</td>
-<td>168</td>
-</tr>
-<tr><td>list-push-aos</td>
-<td>75.13</td>
-<td>74.18</td>
-<td>75.20</td>
-<td>75.42</td>
-<td>75.24</td>
-<td>75.99</td>
-<td>75.80</td>
-<td>75.80</td>
-<td>75.54</td>
-<td>76.22</td>
-<td>76.21</td>
-<td>97</td>
-</tr>
-<tr><td>list-push-soa</td>
-<td>40.99</td>
-<td>38.14</td>
-<td>39.00</td>
-<td>38.89</td>
-<td>38.89</td>
-<td>39.67</td>
-<td>39.87</td>
-<td>39.28</td>
-<td>39.35</td>
-<td>40.08</td>
-<td>40.13</td>
-<td>97</td>
-</tr>
-<tr><td>list-pull-aos</td>
-<td>82.07</td>
-<td>82.88</td>
-<td>83.29</td>
-<td>83.09</td>
-<td>83.32</td>
-<td>83.49</td>
-<td>82.82</td>
-<td>82.88</td>
-<td>83.32</td>
-<td>82.60</td>
-<td>82.93</td>
-<td>97</td>
-</tr>
-<tr><td>list-pull-soa</td>
-<td>62.07</td>
-<td>60.40</td>
-<td>61.89</td>
-<td>61.39</td>
-<td>62.43</td>
-<td>60.90</td>
-<td>60.48</td>
-<td>62.80</td>
-<td>62.50</td>
-<td>61.10</td>
-<td>60.38</td>
-<td>97</td>
-</tr>
-<tr><td>list-pull-split-nt-1s-soa</td>
-<td>125.81</td>
-<td>120.60</td>
-<td>121.96</td>
-<td>122.34</td>
-<td>122.86</td>
-<td>123.53</td>
-<td>123.64</td>
-<td>123.67</td>
-<td>125.94</td>
-<td>124.09</td>
-<td>123.69</td>
-<td>128</td>
-</tr>
-<tr><td>list-pull-split-nt-2s-soa</td>
-<td>122.79</td>
-<td>117.16</td>
-<td>118.86</td>
-<td>119.16</td>
-<td>119.56</td>
-<td>119.99</td>
-<td>120.01</td>
-<td>120.03</td>
-<td>122.64</td>
-<td>120.57</td>
-<td>120.39</td>
-<td>128</td>
-</tr>
-<tr><td>list-aa-aos</td>
-<td>128.13</td>
-<td>127.41</td>
-<td>129.31</td>
-<td>129.07</td>
-<td>129.79</td>
-<td>129.63</td>
-<td>129.67</td>
-<td>129.94</td>
-<td>129.12</td>
-<td>128.41</td>
-<td>129.72</td>
-<td>150</td>
-</tr>
-<tr><td>list-aa-soa</td>
-<td>141.60</td>
-<td>139.78</td>
-<td>141.58</td>
-<td>142.16</td>
-<td>141.94</td>
-<td>141.31</td>
-<td>142.37</td>
-<td>142.25</td>
-<td>142.43</td>
-<td>141.40</td>
-<td>142.26</td>
-<td>150</td>
-</tr>
-<tr><td>list-aa-ria-soa</td>
-<td>141.82</td>
-<td>134.88</td>
-<td>140.15</td>
-<td>140.72</td>
-<td>141.67</td>
-<td>140.51</td>
-<td>141.18</td>
-<td>141.29</td>
-<td>142.97</td>
-<td>141.94</td>
-<td>143.25</td>
-<td>168</td>
-</tr>
-<tr><td>list-aa-pv-soa</td>
-<td>164.79</td>
-<td>140.95</td>
-<td>159.24</td>
-<td>161.78</td>
-<td>162.40</td>
-<td>163.04</td>
-<td>164.69</td>
-<td>164.38</td>
-<td>165.11</td>
-<td>165.75</td>
-<td>166.09</td>
-<td>168</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="skylake-intel-xeon-gold-6148">
-<h2><a class="toc-backref" href="#id25">6.3&nbsp;&nbsp;&nbsp;Skylake, Intel Xeon Gold 6148</a></h2>
-<ul class="simple">
-<li>Skylake architecture, AVX2, FMA, AVX512</li>
-<li>20 cores, 2.4 GHz</li>
-<li>SMT enabled</li>
-</ul>
-<p>memory bandwidth:</p>
-<ul class="simple">
-<li>copy-19                  89.7 GB/s</li>
-<li>copy-19-nt-sl            92.4 GB/s</li>
-<li>update-19                93.6 GB/s</li>
-</ul>
-<p>geometry dimensions:  500x100x100</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="20%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="7%" />
-<col width="2%" />
-</colgroup>
-<thead valign="bottom">
-<tr><th class="head">kernel</th>
-<th class="head">pipe</th>
-<th class="head">blocks-2</th>
-<th class="head">blocks-4</th>
-<th class="head">blocks-6</th>
-<th class="head">blocks-8</th>
-<th class="head">blocks-10</th>
-<th class="head">blocks-15</th>
-<th class="head">blocks-16</th>
-<th class="head">blocks-20</th>
-<th class="head">blocks-25</th>
-<th class="head">blocks-32</th>
-<th class="head">RFM</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr><td>blk-push-aos</td>
-<td>113.01</td>
-<td>93.99</td>
-<td>108.98</td>
-<td>114.65</td>
-<td>117.87</td>
-<td>119.47</td>
-<td>124.95</td>
-<td>122.46</td>
-<td>129.29</td>
-<td>123.87</td>
-<td>133.01</td>
-<td>197</td>
-</tr>
-<tr><td>blk-push-soa</td>
-<td>100.21</td>
-<td>98.87</td>
-<td>103.63</td>
-<td>105.56</td>
-<td>107.02</td>
-<td>107.27</td>
-<td>111.61</td>
-<td>109.83</td>
-<td>116.16</td>
-<td>110.51</td>
-<td>110.29</td>
-<td>197</td>
-</tr>
-<tr><td>blk-pull-aos</td>
-<td>118.45</td>
-<td>102.54</td>
-<td>114.12</td>
-<td>117.82</td>
-<td>122.69</td>
-<td>124.31</td>
-<td>130.58</td>
-<td>127.85</td>
-<td>135.72</td>
-<td>129.65</td>
-<td>139.94</td>
-<td>197</td>
-</tr>
-<tr><td>blk-pull-soa</td>
-<td>82.60</td>
-<td>83.36</td>
-<td>87.13</td>
-<td>88.39</td>
-<td>88.84</td>
-<td>88.96</td>
-<td>92.48</td>
-<td>90.93</td>
-<td>95.79</td>
-<td>91.92</td>
-<td>98.64</td>
-<td>197</td>
-</tr>
-<tr><td>aa-aos</td>
-<td>171.32</td>
-<td>125.43</td>
-<td>147.73</td>
-<td>157.70</td>
-<td>163.35</td>
-<td>167.25</td>
-<td>175.39</td>
-<td>174.20</td>
-<td>182.54</td>
-<td>173.67</td>
-<td>187.76</td>
-<td>308</td>
-</tr>
-<tr><td>aa-soa</td>
-<td>180.85</td>
-<td>152.39</td>
-<td>165.84</td>
-<td>152.59</td>
-<td>171.90</td>
-<td>175.76</td>
-<td>184.94</td>
-<td>182.34</td>
-<td>189.43</td>
-<td>180.30</td>
-<td>193.54</td>
-<td>308</td>
-</tr>
-<tr><td>aa-vec-soa</td>
-<td>208.03</td>
-<td>181.51</td>
-<td>195.86</td>
-<td>203.41</td>
-<td>209.08</td>
-<td>212.34</td>
-<td>224.05</td>
-<td>219.49</td>
-<td>234.31</td>
-<td>225.92</td>
-<td>245.22</td>
-<td>308</td>
-</tr>
-<tr><td>list-push-aos</td>
-<td>158.81</td>
-<td>164.67</td>
-<td>162.93</td>
-<td>163.05</td>
-<td>165.22</td>
-<td>164.31</td>
-<td>164.66</td>
-<td>160.78</td>
-<td>164.07</td>
-<td>165.19</td>
-<td>164.06</td>
-<td>177</td>
-</tr>
-<tr><td>list-push-soa</td>
-<td>134.60</td>
-<td>110.44</td>
-<td>110.17</td>
-<td>132.01</td>
-<td>132.95</td>
-<td>133.46</td>
-<td>134.37</td>
-<td>134.33</td>
-<td>135.12</td>
-<td>134.91</td>
-<td>137.87</td>
-<td>177</td>
-</tr>
-<tr><td>list-pull-aos</td>
-<td>169.61</td>
-<td>170.03</td>
-<td>170.89</td>
-<td>170.90</td>
-<td>171.20</td>
-<td>171.60</td>
-<td>172.09</td>
-<td>171.95</td>
-<td>169.48</td>
-<td>172.08</td>
-<td>171.02</td>
-<td>177</td>
-</tr>
-<tr><td>list-pull-soa</td>
-<td>120.50</td>
-<td>116.73</td>
-<td>118.62</td>
-<td>118.00</td>
-<td>120.99</td>
-<td>118.15</td>
-<td>117.17</td>
-<td>121.41</td>
-<td>120.83</td>
-<td>120.00</td>
-<td>118.74</td>
-<td>177</td>
-</tr>
-<tr><td>list-pull-split-nt-1s-soa</td>
-<td>225.59</td>
-<td>224.18</td>
-<td>225.10</td>
-<td>226.34</td>
-<td>226.01</td>
-<td>230.37</td>
-<td>227.50</td>
-<td>228.42</td>
-<td>227.39</td>
-<td>231.65</td>
-<td>227.35</td>
-<td>246</td>
-</tr>
-<tr><td>list-pull-split-nt-2s-soa</td>
-<td>219.20</td>
-<td>214.63</td>
-<td>217.61</td>
-<td>218.13</td>
-<td>219.07</td>
-<td>221.01</td>
-<td>219.88</td>
-<td>220.09</td>
-<td>220.62</td>
-<td>221.68</td>
-<td>220.58</td>
-<td>246</td>
-</tr>
-<tr><td>list-aa-aos</td>
-<td>241.39</td>
-<td>239.27</td>
-<td>239.53</td>
-<td>242.56</td>
-<td>242.46</td>
-<td>243.00</td>
-<td>242.91</td>
-<td>242.46</td>
-<td>241.24</td>
-<td>242.96</td>
-<td>241.52</td>
-<td>275</td>
-</tr>
-<tr><td>list-aa-soa</td>
-<td>273.73</td>
-<td>268.49</td>
-<td>268.48</td>
-<td>271.79</td>
-<td>275.29</td>
-<td>274.56</td>
-<td>277.18</td>
-<td>272.67</td>
-<td>274.21</td>
-<td>275.24</td>
-<td>278.21</td>
-<td>275</td>
-</tr>
-<tr><td>list-aa-ria-soa</td>
-<td>288.42</td>
-<td>261.89</td>
-<td>273.26</td>
-<td>284.84</td>
-<td>283.88</td>
-<td>288.29</td>
-<td>290.72</td>
-<td>289.81</td>
-<td>293.36</td>
-<td>290.75</td>
-<td>292.93</td>
-<td>308</td>
-</tr>
-<tr><td>list-aa-pv-soa</td>
-<td>303.35</td>
-<td>267.21</td>
-<td>289.18</td>
-<td>294.96</td>
-<td>294.36</td>
-<td>298.16</td>
-<td>300.45</td>
-<td>301.71</td>
-<td>302.37</td>
-<td>302.88</td>
-<td>304.46</td>
-<td>308</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-<div class="section" id="licence">
-<h1><a class="toc-backref" href="#id26">7&nbsp;&nbsp;&nbsp;Licence</a></h1>
-<p>The Lattice Boltzmann Benchmark Kernels are licensed under GPLv3.</p>
-</div>
-<div class="section" id="acknowledgements">
-<h1><a class="toc-backref" href="#id27">8&nbsp;&nbsp;&nbsp;Acknowledgements</a></h1>
-<p>This work was funded by BMBF, grant no. 01IH15003A (project SKAMPY).</p>
-<p>This work was funded by KONWHIR project OMI4PAPS.</p>
-</div>
-<div class="section" id="bibliography">
-<h1><a class="toc-backref" href="#id28">9&nbsp;&nbsp;&nbsp;Bibliography</a></h1>
-<table class="docutils citation" frame="void" id="ginzburg-2008" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id1">[ginzburg-2008]</a></td><td>I. Ginzburg, F. Verhaeghe, and D. d'Humières.
-Two-relaxation-time lattice Boltzmann scheme: About parametrization, velocity, pressure and mixed boundary conditions.
-Commun. Comput. Phys., 3(2):427-478, 2008.</td></tr>
-</tbody>
-</table>
-<table class="docutils citation" frame="void" id="williams-2008" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id3">[williams-2008]</a></td><td>S. Williams, A. Waterman, and D. Patterson.
-Roofline: an insightful visual performance model for multicore architectures.
-Commun. ACM, 52(4):65-76, Apr 2009. doi:10.1145/1498765.1498785</td></tr>
-</tbody>
-</table>
-<p>Document was generated at 2017-11-21 15:43.</p>
-</div>
-</div>
-</body>
-</html>
This page took 0.098184 seconds and 5 git commands to generate.