diff --git a/course/Day-3/presentation.cfg b/course/Day-3/presentation.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a66a68fc944d590ff8063905eaf5849bf2be50f2
--- /dev/null
+++ b/course/Day-3/presentation.cfg
@@ -0,0 +1,19 @@
+[darkslide]
+; the old [landslide] is still supported
+theme  = ../ptb_theme
+#source = ./
+source = 1-table-of-contents.md
+#         0-introduction.md
+#         1-table-of-contents.md
+#         2-day-1.md
+#         3-day-2.md
+         4-day-3.md
+         1-table-of-contents.md
+         5-thanks.md
+destination = presentation.html
+#css =    my_first_stylesheet.css
+#         my_other_stylesheet.css
+#js =     jquery.js
+#         my_fancy_javascript.js
+relative = True
+linenos = inline
\ No newline at end of file
diff --git a/course/Day-3/presentation.html b/course/Day-3/presentation.html
new file mode 100644
index 0000000000000000000000000000000000000000..b7ca6312eb655293488cc6a493e0c18093a4c760
--- /dev/null
+++ b/course/Day-3/presentation.html
@@ -0,0 +1,2070 @@
+<!DOCTYPE html>
+<!--
+  Copyright 2010 Google Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  Original slides: Marcin Wichary (mwichary@google.com)
+  Modifications: Ernest Delgado (ernestd@google.com)
+                 Alex Russell (slightlyoff@chromium.org)
+
+  landslide modifications: Adam Zapletal (adamzap@gmail.com)
+                           Nicolas Perriault (nperriault@gmail.com)
+-->
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+    <title>Table of Contents</title>
+    <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+    <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+
+  
+     <link rel="stylesheet" href="..\ptb_theme\css\base.css">
+  
+
+  
+     <link rel="stylesheet" href="..\ptb_theme\css\print.css">
+  
+
+  
+     <link rel="stylesheet" href="..\ptb_theme\css\screen.css">
+  
+
+  
+     <link rel="stylesheet" href="..\ptb_theme\css\theme.css">
+  
+
+  
+     <link rel="stylesheet" href="..\venv\lib\site-packages\darkslide\mods\wide16x9\css\mod.css">
+  
+
+
+  
+    <script type="text/javascript" src="..\ptb_theme\js\slides.js"></script>
+  
+
+</head>
+<body>
+  <div id="blank"></div>
+  <div class="presentation">
+    <div id="current_presenter_notes">
+      <div id="presenter_note"></div>
+    </div>
+    <div class="slides">
+      
+      <!-- slide source: 1-table-of-contents.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-1">
+          <div class="inner">
+            
+            <header><h1>Table of Contents</h1></header>
+            
+            
+            <section><ul>
+<li>
+<p>Day 1: Adaptability &amp; Extendibility</p>
+<pre><code>* Modularity in python
+* DRY
+* SOLID
+* Design Patterns
+</code></pre>
+</li>
+<li>
+<p>Day 2: Testing, Documentation &amp; Readability</p>
+<pre><code>* Packaging
+* Unit Tests
+* Doctest
+* Sphinx
+* GitLab Integration
+</code></pre>
+</li>
+<li>
+<p>Day 3: Performance &amp; Scalability </p>
+<pre><code>* Introduction
+* Profiling &amp; Benchmarking
+* Data, Do's and Dont's
+* Ahmdal's law
+* Parallelisation with `joblib` and `mpi4py`
+</code></pre>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="1-table-of-contents.md">1-table-of-contents.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              1/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-2">
+          <div class="inner">
+            
+            <header><h1>Performance &amp; Scalability</h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/achter.jpg" /></p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              2/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-3">
+          <div class="inner">
+            
+            <header><h1>Single Core Performance History</h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/singlecore_performance.png" /></p>
+<ul>
+<li>Saturation around 2003, rise of Multi-Core</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              3/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-4">
+          <div class="inner">
+            
+            <header><h1>The Parallelism Multi-Verse</h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/multi-verse.png" /></p>
+<h3>And New: Multi-Socket with Multi-GPU</h3></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              4/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-5">
+          <div class="inner">
+            
+            <header><h1>Optimization - Recommendations</h1></header>
+            
+            
+            <section><blockquote>
+<p>Make it work, Make it right, Make it fast</p>
+<p>-- <cite> attributed to Kent Beck </cite></p>
+</blockquote>
+<ul>
+<li>Follow above rule!</li>
+<li>Profiling and Benchmarking is a must</li>
+<li>Have a "Known Good" (easy to understand!)</li>
+<li>Concentrate on most heavy parts first</li>
+<li>No premature optimizations!</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              5/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-6">
+          <div class="inner">
+            
+            <header><h1>Where is your time spent?</h1></header>
+            
+            
+            <section><p><strong>Some facts</strong>:</p>
+<ul>
+<li>Most time usually: <strong>Loops</strong></li>
+<li>
+<p>Throughput hierarchy:</p>
+<p>|<strong>CPU arithmetic</strong> O(1 TB/sec)| &gt;&gt; |<strong>Memory</strong> O(100 GB/sec)| &gt;&gt; |<strong>Disk</strong> O(1 GB/sec)|</p>
+</li>
+<li>
+<p>Instruction hierarchy:</p>
+<p>|<strong>Spec. Functions</strong> O(100 cycles)| &gt;&gt; |<strong>Div</strong> O(10 cycles)| &gt;&gt; |<strong>Mult/Add</strong> O(1 cycle)|</p>
+</li>
+<li>
+<p>Profile your App</p>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              6/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-7">
+          <div class="inner">
+            
+            <header><h1>Benchmarking &amp; Profiling</h1></header>
+            
+            
+            <section><p>Benchmarking:</p>
+<ul>
+<li>Measure time spent between start and end of timer</li>
+<li>Choose right problem size (too low &#8594; timer resolution, too high &#8594; takes too long)</li>
+<li>Do not benchmark preparation work (unless it belongs to the algorithm you measure)</li>
+<li>Repeat! (e.g. 3x and take the median as the result)</li>
+</ul>
+<p>Profiling:</p>
+<ul>
+<li>gives time spent in each method</li>
+<li>overview of where to improve</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              7/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide has_code slide-8">
+          <div class="inner">
+            
+            <header><h1>Python <code>cProfile</code></h1></header>
+            
+            
+            <section><ul>
+<li>
+<p>Invocation from python interpreter:</p>
+<div class="highlight"><pre><span></span><span class="lineno">1 </span><span class="kn">import</span> <span class="nn">cProfile</span>
+<span class="lineno">2 </span><span class="kn">import</span> <span class="nn">re</span>
+<span class="lineno">3 </span><span class="n">cProfile</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s1">&#39;re.compile(&quot;foo|bar&quot;)&#39;</span><span class="p">)</span>
+</pre></div>
+
+</li>
+<li>
+<p>Invocation using module: <code>python -m cProfile -o profile.out main.py</code></p>
+</li>
+<li>Use <code>snakeviz</code> for visualisation in browser</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              8/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-9">
+          <div class="inner">
+            
+            <header><h1>Python <code>cProfile</code></h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/snakeviz.png" /> </p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              9/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-10">
+          <div class="inner">
+            
+            <header><h1>Python <code>line_profiler</code></h1></header>
+            
+            
+            <section><ul>
+<li>Shows time spent in lines of python code</li>
+<li><code>pip install line_profiler</code></li>
+<li>Profiles methods having <code>@profile</code> decorator</li>
+<li>Invocation: <code>kernprof.exe -l -v main.py</code></li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              10/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-11">
+          <div class="inner">
+            
+            <header><h1>Python <code>line_profiler</code></h1></header>
+            
+            
+            <section><pre><code>$ kernprof.exe -l -v main.py
+...
+Total time: 227.482 s
+...
+Line #      Hits         Time  Per Hit   % Time  Line Contents
+==============================================================
+    17                                               @profile
+    18                                               def filter(self, bmp_out: Addressable2D, bmp_in: Addressable2D):
+    ...
+    25         1          0.7      0.7      0.0          sigma_squared = self._sigma * self._sigma
+    26
+    27       796        543.2      0.7      0.0          for i_y in range(height):
+    28   1021575     684277.0      0.7      0.3              for i_x in range(self._corr_len, width - self._corr_len):
+    29   1020780    2123034.5      2.1      0.9                  new_value = [0 for _ in range(3)]
+    30   4083120    2850632.3      0.7      1.3                  for rgb in range(3):
+    31   3062340    1884852.2      0.6      0.8                      val = 0.0
+    32   3062340    1880511.4      0.6      0.8                      weight_sum = 0
+    33   3062340    1841103.6      0.6      0.8                      counter = 0
+    ...
+    38   3062340    3327261.1      1.1      1.5                      new_value[rgb] = round(val / weight_sum)
+    39   1020780    3129795.2      3.1      1.4                  bmp_out.set_at(i_x, i_y, new_value)
+</code></pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              11/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-12">
+          <div class="inner">
+            
+            <header><h1>Hands On : Preparation</h1></header>
+            
+            
+            <section><ul>
+<li>We study a new type of filter "Gaussian Smoothing" <strong>only in x-direction</strong></li>
+<li>Again we do not bother about the boundary points within (L) distance to the picture edges</li>
+</ul>
+<p>
+  Replace color value \(c\) at \(x\) with a weighted sum over its neighborhood up to a certain correlation length \(L\)
+  \[c^\prime_{x} = \frac{1}{N}{\sum_{y; |x-y| \le L} c_{y} \exp{\left (-\frac{(x - y)^2}{2 \sigma^2} \right)}}\]
+</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              12/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-13">
+          <div class="inner">
+            
+            <header><h1>Hands On</h1></header>
+            
+            
+            <section><h2>Exercise Day-3/exercise-1/exercise-1.md</h2>
+<p>Please pull from the course materials repository:</p>
+<p>https://itgit.bs.ptb.de/burger03/python-course-material</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              13/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-14">
+          <div class="inner">
+            
+            <header><h1>Memory hierarchy &amp; SIMD</h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/memory_and_simd.png" /></p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              14/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-15">
+          <div class="inner">
+            
+            <header><h1>Data Structures</h1></header>
+            
+            
+            <section><ul>
+<li>Adapt to your problem</li>
+<li>Use data structures of <strong>compiled libraries</strong> (SIMD Vectorization!)</li>
+<li><code>numpy.ndarray</code>, <code>pandas.DataFrame</code>, <code>torch.tensor</code>, etc.</li>
+<li>Choose proper datastructure for algorithm (array, linked list, hash map ...)</li>
+<li>Know asymptotics of insertion, lookup, deletion, appending etc. </li>
+<li>Number representations (<code>np.int32</code> &#8596; <code>np.uint8</code>; <code>np.float32</code> &#8596; <code>np.float64</code>)</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              15/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-16">
+          <div class="inner">
+            
+            <header><h1>Do's &amp; Dont's</h1></header>
+            
+            
+            <section><p><strong>Do's:</strong></p>
+<ul>
+<li>external compiled libraries</li>
+<li>use python as "glue"</li>
+</ul>
+<p><strong>Dont's:</strong></p>
+<ul>
+<li>(innermost) Python loops</li>
+<li><code>if</code> in loops</li>
+<li>(nested) lists as data structure</li>
+<li>append to lists</li>
+<li>trivial repetition of computation in loops</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              16/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-17">
+          <div class="inner">
+            
+            <header><h1>Numpy Introduction I</h1></header>
+            
+            
+            <section><p>Check out the <a href="https://numpy.org/doc/stable/user/quickstart.html">numpy quickstart</a></p>
+<ul>
+<li><code>C</code>-library of n-dimensional arrays</li>
+<li>arrays of same datatype aligned in memory</li>
+<li>element-wise operations</li>
+<li>minimal data copies &#8596;  works with views of same data</li>
+<li>fast vectorized reduction operations (<code>np.sum</code>, <code>np.mean</code>)</li>
+<li>math operations: <code>np.exp</code>, <code>np.sin</code></li>
+<li>zero-copy array slicing</li>
+</ul>
+<p><a href="https://shihchinw.github.io/2019/03/performance-tips-of-numpy-ndarray.html">Some performance tips</a></p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              17/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide has_code slide-18">
+          <div class="inner">
+            
+            <header><h1>Numpy Introduction II</h1></header>
+            
+            
+            <section><div class="highlight"><pre><span></span><span class="lineno"> 1 </span><span class="o">&gt;&gt;&gt;</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
+<span class="lineno"> 2 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
+<span class="lineno"> 3 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span>
+<span class="lineno"> 4 </span><span class="n">array</span><span class="p">([[</span> <span class="mi">0</span><span class="p">,</span>  <span class="mi">1</span><span class="p">,</span>  <span class="mi">2</span><span class="p">,</span>  <span class="mi">3</span><span class="p">,</span>  <span class="mi">4</span><span class="p">],</span>
+<span class="lineno"> 5 </span>       <span class="p">[</span> <span class="mi">5</span><span class="p">,</span>  <span class="mi">6</span><span class="p">,</span>  <span class="mi">7</span><span class="p">,</span>  <span class="mi">8</span><span class="p">,</span>  <span class="mi">9</span><span class="p">],</span>
+<span class="lineno"> 6 </span>       <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="mi">14</span><span class="p">]])</span>
+<span class="lineno"> 7 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span><span class="o">.</span><span class="n">shape</span>
+<span class="lineno"> 8 </span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
+<span class="lineno"> 9 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span><span class="o">.</span><span class="n">ndim</span>
+<span class="lineno">10 </span><span class="mi">2</span>
+<span class="lineno">11 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">name</span>
+<span class="lineno">12 </span><span class="s1">&#39;int64&#39;</span>
+</pre></div>
+</section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              18/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide has_code slide-19">
+          <div class="inner">
+            
+            <header><h1>Numpy Introduction III</h1></header>
+            
+            
+            <section><div class="highlight"><pre><span></span><span class="lineno"> 1 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="o">**</span><span class="mi">3</span>
+<span class="lineno"> 2 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span>
+<span class="lineno"> 3 </span><span class="n">array</span><span class="p">([</span>  <span class="mi">0</span><span class="p">,</span>   <span class="mi">1</span><span class="p">,</span>   <span class="mi">8</span><span class="p">,</span>  <span class="mi">27</span><span class="p">,</span>  <span class="mi">64</span><span class="p">,</span> <span class="mi">125</span><span class="p">,</span> <span class="mi">216</span><span class="p">,</span> <span class="mi">343</span><span class="p">,</span> <span class="mi">512</span><span class="p">,</span> <span class="mi">729</span><span class="p">])</span>
+<span class="lineno"> 4 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
+<span class="lineno"> 5 </span><span class="mi">8</span>
+<span class="lineno"> 6 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span>
+<span class="lineno"> 7 </span><span class="n">array</span><span class="p">([</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">64</span><span class="p">])</span>
+<span class="lineno"> 8 </span><span class="c1"># equivalent to a[0:6:2] = 1000;</span>
+<span class="lineno"> 9 </span><span class="c1"># from start to position 6, exclusive, set every 2nd element to 1000</span>
+<span class="lineno">10 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span><span class="p">[:</span><span class="mi">6</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1000</span>
+<span class="lineno">11 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span>
+<span class="lineno">12 </span><span class="n">array</span><span class="p">([</span><span class="mi">1000</span><span class="p">,</span>    <span class="mi">1</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span>   <span class="mi">27</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span>  <span class="mi">125</span><span class="p">,</span>  <span class="mi">216</span><span class="p">,</span>  <span class="mi">343</span><span class="p">,</span>  <span class="mi">512</span><span class="p">,</span>  <span class="mi">729</span><span class="p">])</span>
+<span class="lineno">13 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>  <span class="c1"># reversed a</span>
+<span class="lineno">14 </span><span class="n">array</span><span class="p">([</span> <span class="mi">729</span><span class="p">,</span>  <span class="mi">512</span><span class="p">,</span>  <span class="mi">343</span><span class="p">,</span>  <span class="mi">216</span><span class="p">,</span>  <span class="mi">125</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span>   <span class="mi">27</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span>    <span class="mi">1</span><span class="p">,</span> <span class="mi">1000</span><span class="p">])</span>
+</pre></div>
+</section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              19/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-20">
+          <div class="inner">
+            
+            <header><h1>Hands On</h1></header>
+            
+            
+            <section><h2>Exercise Day-3/exercise-2/exercise-2.md</h2>
+<p>Please pull from the course materials repository:</p>
+<p>https://itgit.bs.ptb.de/burger03/python-course-material</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              20/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-21">
+          <div class="inner">
+            
+            <header><h1>Discussion of Exercise 2</h1></header>
+            
+            
+            <section><ul>
+<li>we have seen 360x speedup !!</li>
+<li>any ideas why?</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              21/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-22">
+          <div class="inner">
+            
+            <header><h1>Parallelisation</h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/blue_gene_p.jpg" /></p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              22/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-23">
+          <div class="inner">
+            
+            <header><h1>Parallelisation</h1></header>
+            
+            
+            <section><ul>
+<li>64-Core CPUs are now common</li>
+<li>Thus: parallelisation is a matter of waiting <strong>1 day or 2 monthes</strong></li>
+<li>Independent sets of data? &#8594; Consider <strong>trivial parallelisation</strong></li>
+<li>Independent sets of data combined with a simple algorithm? &#8594; Consider <code>joblib</code></li>
+<li>Single complex algorithm? &#8594; Consider MPI (or GPGPU)</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              23/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-24">
+          <div class="inner">
+            
+            <header><h1>Ahmdal's Law</h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/ahmdal-slide.png" /></p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              24/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-25">
+          <div class="inner">
+            
+            <header><h1>Python GIL</h1></header>
+            
+            
+            <section><ul>
+<li>"Global Interpreter Lock"</li>
+<li>Only one thread a time can interpret python a given time</li>
+<li>Used for <strong>thread-safeness</strong> and <strong>efficiency of single-thread</strong> programs</li>
+<li>Performance limitations for multi-threading in CPU bound scenarios</li>
+<li>GIL often released in extension code (e.g. in <code>numpy</code>)</li>
+<li>Way round: additional <strong>processes</strong> with separate memory space </li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              25/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-26">
+          <div class="inner">
+            
+            <header><h1>Using <code>joblib</code></h1></header>
+            
+            
+            <section><ul>
+<li>Easy to use for simple parallel execution</li>
+<li>Several parallel backends can be used ("loky", "multiprocessing", ...)</li>
+<li>Parallelism <strong>within single node only</strong></li>
+<li>Based on serialization (<code>pickle</code>, significant overhead!)</li>
+<li>Use for parallelization over data on an "outer level"</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              26/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide has_code slide-27">
+          <div class="inner">
+            
+            <header><h1>Using <code>joblib</code></h1></header>
+            
+            
+            <section><h2>simple list comprehension:</h2>
+<div class="highlight"><pre><span></span><span class="lineno">1 </span><span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">sqrt</span>
+<span class="lineno">2 </span><span class="o">&gt;&gt;&gt;</span> <span class="p">[</span><span class="n">sqrt</span><span class="p">(</span><span class="n">i</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)]</span>
+<span class="lineno">3 </span><span class="p">[</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">2.0</span><span class="p">,</span> <span class="mf">3.0</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">,</span> <span class="mf">5.0</span><span class="p">,</span> <span class="mf">6.0</span><span class="p">,</span> <span class="mf">7.0</span><span class="p">,</span> <span class="mf">8.0</span><span class="p">,</span> <span class="mf">9.0</span><span class="p">]</span>
+</pre></div>
+
+<h2>... with <code>joblib</code> becomes:</h2>
+<div class="highlight"><pre><span></span><span class="lineno">1 </span><span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">sqrt</span>
+<span class="lineno">2 </span><span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">joblib</span> <span class="kn">import</span> <span class="n">Parallel</span><span class="p">,</span> <span class="n">delayed</span>
+<span class="lineno">3 </span><span class="o">&gt;&gt;&gt;</span> <span class="n">Parallel</span><span class="p">(</span><span class="n">n_jobs</span><span class="o">=</span><span class="mi">2</span><span class="p">)(</span><span class="n">delayed</span><span class="p">(</span><span class="n">sqrt</span><span class="p">)(</span><span class="n">i</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span>
+<span class="lineno">4 </span><span class="p">[</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">2.0</span><span class="p">,</span> <span class="mf">3.0</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">,</span> <span class="mf">5.0</span><span class="p">,</span> <span class="mf">6.0</span><span class="p">,</span> <span class="mf">7.0</span><span class="p">,</span> <span class="mf">8.0</span><span class="p">,</span> <span class="mf">9.0</span><span class="p">]</span>
+</pre></div>
+</section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              27/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-28">
+          <div class="inner">
+            
+            <header><h1>Hands On</h1></header>
+            
+            
+            <section><h2>Exercise Day-3/exercise-2/exercise-3.md</h2>
+<p>Please pull from the course materials repository:</p>
+<p>https://itgit.bs.ptb.de/burger03/python-course-material</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              28/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-29">
+          <div class="inner">
+            
+            <header><h1>Message Passing Interface (MPI)</h1></header>
+            
+            
+            <section><ul>
+<li><strong>The standard</strong> for parallel computing</li>
+<li>Communication <strong>messages</strong> between processes</li>
+<li>Intra-Node <strong>and</strong> Inter-Node over Networks</li>
+<li>Several implementations: OpenMPI, Intel MPI, MPICH, etc.</li>
+<li>Hardware-aware communication channels: shared mem, RDMA, Infiniband</li>
+<li>Backend library, bindings available for most languages</li>
+<li>Integrates with resource managers of job queuing (torque, slurm etc.)</li>
+<li>If you do not have a server with MPI: Join the <a href="https://intranet.ptb.de/index.php?id=linux-rechencluster">Q.45 HPC-Cluster</a> ;)</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              29/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-30">
+          <div class="inner">
+            
+            <header><h1>MPI Communication</h1></header>
+            
+            
+            <section><ul>
+<li>Point-to-Point (process A &#8596; process B)</li>
+<li>Can be blocking (easier, when sufficient) or non-blocking (overlapping communication and computation)</li>
+<li>Collective (broadcast, scatter, gather, allToall (gather+scatter))</li>
+<li>Reductions (min/max, sum, product, logical ops)</li>
+<li>MPI types (MPI.INT, MPI.FLOAT, MPI.DOUBLE)</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              30/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide has_code slide-31">
+          <div class="inner">
+            
+            <header><h1><code>mpi4py</code> hello, world</h1></header>
+            
+            
+            <section><div class="highlight"><pre><span></span><span class="lineno">1 </span><span class="c1"># mpi_hello_world.py</span>
+<span class="lineno">2 </span><span class="kn">from</span> <span class="nn">mpi4py</span> <span class="kn">import</span> <span class="n">MPI</span>
+<span class="lineno">3 </span>
+<span class="lineno">4 </span><span class="n">comm</span> <span class="o">=</span> <span class="n">MPI</span><span class="o">.</span><span class="n">COMM_WORLD</span>
+<span class="lineno">5 </span><span class="n">size</span> <span class="o">=</span> <span class="n">comm</span><span class="o">.</span><span class="n">Get_size</span><span class="p">()</span>
+<span class="lineno">6 </span><span class="n">rank</span> <span class="o">=</span> <span class="n">comm</span><span class="o">.</span><span class="n">Get_rank</span><span class="p">()</span>
+<span class="lineno">7 </span>
+<span class="lineno">8 </span><span class="k">print</span> <span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">rank</span><span class="p">)</span>
+</pre></div>
+
+<p>Run with:</p>
+<pre><code>mpirun -np 4 python mpi_hello_world.py
+</code></pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              31/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-32">
+          <div class="inner">
+            
+            <header><h1>Non-trivial example, Laplace-Filter</h1></header>
+            
+            
+            <section><ul>
+<li>Edge detection algorithm</li>
+<li>On edges, gradient of color points normal to edge line</li>
+<li>Thus gradient vector field is source-free, Laplace vanishes:</li>
+</ul>
+<p>
+  \[ 0 \equiv \Delta c_{x, y} =  4 c_{x,y} - c_{x+1,y} - c_{x-1,y} - c_{x,y+1} -c_{x,y-1}\]
+</p>
+
+<ul>
+<li>Stencil computation over nearest neighbors, need <a href="https://sites.cs.ucsb.edu/~gilbert/cs140resources/notes/GhostCells.pdf">ghost cells</a></li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              32/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide has_code slide-33">
+          <div class="inner">
+            
+            <header><h1>Laplace-Operator, scalar</h1></header>
+            
+            
+            <section><div class="highlight"><pre><span></span><span class="lineno"> 1 </span><span class="k">def</span> <span class="nf">laplace_kernel</span><span class="p">(</span><span class="n">output_field</span><span class="p">,</span> <span class="n">input_field</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
+<span class="lineno"> 2 </span>    <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
+<span class="lineno"> 3 </span>        <span class="n">x</span> <span class="o">=</span> <span class="mi">4</span> <span class="o">*</span> <span class="n">input_field</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span>
+<span class="lineno"> 4 </span>        <span class="n">xp1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">input_field</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:],</span> <span class="mi">1</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
+<span class="lineno"> 5 </span>        <span class="n">xm1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">input_field</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:],</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
+<span class="lineno"> 6 </span>        <span class="n">yp1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">input_field</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:],</span> <span class="mi">1</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+<span class="lineno"> 7 </span>        <span class="n">ym1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">input_field</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:],</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+<span class="lineno"> 8 </span>        <span class="n">output_field</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">x</span> <span class="o">-</span> <span class="n">xp1</span> <span class="o">-</span> <span class="n">xm1</span> <span class="o">-</span> <span class="n">yp1</span> <span class="o">-</span> <span class="n">ym1</span>
+<span class="lineno"> 9 </span>
+<span class="lineno">10 </span>
+<span class="lineno">11 </span><span class="k">class</span> <span class="nc">LaplaceFilter</span><span class="p">(</span><span class="n">FilterInterface</span><span class="p">,</span> <span class="n">FilterHelperMixin</span><span class="p">):</span>
+<span class="lineno">12 </span>
+<span class="lineno">13 </span>    <span class="k">def</span> <span class="nf">filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bmp_out</span><span class="p">:</span> <span class="n">Addressable2D</span><span class="p">,</span> <span class="n">bmp_in</span><span class="p">:</span> <span class="n">Addressable2D</span><span class="p">):</span>
+<span class="lineno">14 </span>        <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_and_assert_dims</span><span class="p">(</span><span class="n">bmp_out</span><span class="p">,</span> <span class="n">bmp_in</span><span class="p">)</span>
+<span class="lineno">15 </span>        <span class="n">laplace_kernel</span><span class="p">(</span><span class="n">bmp_out</span><span class="p">,</span> <span class="n">bmp_in</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">)</span>
+</pre></div>
+</section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              33/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-34">
+          <div class="inner">
+            
+            <header><h1><code>mpi4py</code> non-trivial example, Laplace-Operator</h1></header>
+            
+            
+            <section><p><img alt="Landscape" src="../slides/images/domain_decomposition.png" /></p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              34/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 4-day-3.md -->
+      <div class="slide-wrapper">
+        <div class="slide has_code slide-35">
+          <div class="inner">
+            
+            <header><h1>Laplace-Operator, exchange in <code>Bitmap</code></h1></header>
+            
+            
+            <section><div class="highlight"><pre><span></span><span class="lineno"> 1 </span><span class="c1">#laplacefilter.py</span>
+<span class="lineno"> 2 </span><span class="k">def</span> <span class="nf">laplace_kernel</span><span class="p">(</span><span class="n">output_field</span><span class="p">,</span> <span class="n">input_field</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
+<span class="lineno"> 3 </span>    <span class="c1"># Same code as before</span>
+<span class="lineno"> 4 </span>
+<span class="lineno"> 5 </span><span class="c1"># bitmap.py</span>
+<span class="lineno"> 6 </span>    <span class="k">def</span> <span class="nf">exchange</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="lineno"> 7 </span>    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mpi_conn</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+<span class="lineno"> 8 </span>        <span class="k">return</span>
+<span class="lineno"> 9 </span>    <span class="k">else</span><span class="p">:</span>
+<span class="lineno">10 </span>        <span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pixel_array</span>
+<span class="lineno">11 </span>        <span class="n">n_right</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_mpi_rank</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mpi_size</span>
+<span class="lineno">12 </span>        <span class="n">n_left</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_mpi_rank</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mpi_size</span>
+<span class="lineno">13 </span>        <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
+<span class="lineno">14 </span>            <span class="c1"># send lower edge (&amp; receive upper)</span>
+<span class="lineno">15 </span>            <span class="n">send_data</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="p">:]</span>
+<span class="lineno">16 </span>            <span class="n">recv_data</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="p">:]</span>
+<span class="lineno">17 </span>            <span class="bp">self</span><span class="o">.</span><span class="n">_mpi_conn</span><span class="o">.</span><span class="n">Sendrecv</span><span class="p">(</span><span class="n">send_data</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="n">n_right</span><span class="p">,</span> <span class="n">recvbuf</span><span class="o">=</span><span class="n">recv_data</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">n_left</span><span class="p">)</span>
+<span class="lineno">18 </span>
+<span class="lineno">19 </span>            <span class="c1"># send upper edge (&amp; receive lower)</span>
+<span class="lineno">20 </span>            <span class="n">send_data</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="p">:]</span>
+<span class="lineno">21 </span>            <span class="n">recv_data</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">c</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="p">:]</span>
+<span class="lineno">22 </span>            <span class="bp">self</span><span class="o">.</span><span class="n">_mpi_conn</span><span class="o">.</span><span class="n">Sendrecv</span><span class="p">(</span><span class="n">send_data</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="n">n_left</span><span class="p">,</span> <span class="n">recvbuf</span><span class="o">=</span><span class="n">recv_data</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">n_right</span><span class="p">)</span>
+</pre></div>
+</section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="4-day-3.md">4-day-3.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              35/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source:  -->
+      <div class="slide-wrapper">
+        <div class="slide slide-">
+          <div class="inner">
+            
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="page_number">
+              /37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 1-table-of-contents.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-36">
+          <div class="inner">
+            
+            <header><h1>Table of Contents</h1></header>
+            
+            
+            <section><ul>
+<li>
+<p>Day 1: Adaptability &amp; Extendibility</p>
+<pre><code>* Modularity in python
+* DRY
+* SOLID
+* Design Patterns
+</code></pre>
+</li>
+<li>
+<p>Day 2: Testing, Documentation &amp; Readability</p>
+<pre><code>* Packaging
+* Unit Tests
+* Doctest
+* Sphinx
+* GitLab Integration
+</code></pre>
+</li>
+<li>
+<p>Day 3: Performance &amp; Scalability </p>
+<pre><code>* Introduction
+* Profiling &amp; Benchmarking
+* Data, Do's and Dont's
+* Ahmdal's law
+* Parallelisation with `joblib` and `mpi4py`
+</code></pre>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="1-table-of-contents.md">1-table-of-contents.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              36/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: 5-thanks.md -->
+      <div class="slide-wrapper">
+        <div class="slide slide-37">
+          <div class="inner">
+            
+            <header><h1>Thanks</h1></header>
+            
+            
+            <section><ul>
+<li>I would like to thank:<ul>
+<li>C. Streeck and D. Schote for their support in organizing this workshop</li>
+<li>D. Lübbert for giving me opportunity to develop and give it</li>
+<li>YOU, for your interest and for following this course</li>
+</ul>
+</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            
+            <aside class="source">
+              Source: <a href="5-thanks.md">5-thanks.md</a>
+            </aside>
+            
+            <aside class="page_number">
+              37/37
+            </aside>
+            <div id="presenterContainer">
+              Florian Burger (Q.45)
+            </div>
+            <div id="footerContainer">
+              <div id="footerImage"></div>
+              </div>
+          </footer>
+        </div>
+      </div>
+      
+    </div>
+  </div>
+  
+  <div id="toc" class="sidebar hidden">
+    <h2>Table of Contents</h2>
+    <table>
+      <caption>Table of Contents</caption>
+
+<!-- macro for generating subsection of TOC -->
+
+<!-- end of macro -->
+
+      <!-- generating sections of TOC -->
+      
+      <tr id="toc-row-1">
+        <th><a href="#slide:1">Table of Contents</a></th>
+        <td><a href="#slide:1">1</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-2">
+        <th><a href="#slide:2">Performance &amp; Scalability</a></th>
+        <td><a href="#slide:2">2</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-3">
+        <th><a href="#slide:3">Single Core Performance History</a></th>
+        <td><a href="#slide:3">3</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-4">
+        <th><a href="#slide:4">The Parallelism Multi-Verse</a></th>
+        <td><a href="#slide:4">4</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-5">
+        <th><a href="#slide:5">Optimization - Recommendations</a></th>
+        <td><a href="#slide:5">5</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-6">
+        <th><a href="#slide:6">Where is your time spent?</a></th>
+        <td><a href="#slide:6">6</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-7">
+        <th><a href="#slide:7">Benchmarking &amp; Profiling</a></th>
+        <td><a href="#slide:7">7</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-8">
+        <th><a href="#slide:8">Python <code>cProfile</code></a></th>
+        <td><a href="#slide:8">8</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-9">
+        <th><a href="#slide:9">Python <code>cProfile</code></a></th>
+        <td><a href="#slide:9">9</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-10">
+        <th><a href="#slide:10">Python <code>line_profiler</code></a></th>
+        <td><a href="#slide:10">10</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-11">
+        <th><a href="#slide:11">Python <code>line_profiler</code></a></th>
+        <td><a href="#slide:11">11</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-12">
+        <th><a href="#slide:12">Hands On : Preparation</a></th>
+        <td><a href="#slide:12">12</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-13">
+        <th><a href="#slide:13">Hands On</a></th>
+        <td><a href="#slide:13">13</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-14">
+        <th><a href="#slide:14">Memory hierarchy &amp; SIMD</a></th>
+        <td><a href="#slide:14">14</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-15">
+        <th><a href="#slide:15">Data Structures</a></th>
+        <td><a href="#slide:15">15</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-16">
+        <th><a href="#slide:16">Do's &amp; Dont's</a></th>
+        <td><a href="#slide:16">16</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-17">
+        <th><a href="#slide:17">Numpy Introduction I</a></th>
+        <td><a href="#slide:17">17</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-18">
+        <th><a href="#slide:18">Numpy Introduction II</a></th>
+        <td><a href="#slide:18">18</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-19">
+        <th><a href="#slide:19">Numpy Introduction III</a></th>
+        <td><a href="#slide:19">19</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-20">
+        <th><a href="#slide:20">Hands On</a></th>
+        <td><a href="#slide:20">20</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-21">
+        <th><a href="#slide:21">Discussion of Exercise 2</a></th>
+        <td><a href="#slide:21">21</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-22">
+        <th><a href="#slide:22">Parallelisation</a></th>
+        <td><a href="#slide:22">22</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-23">
+        <th><a href="#slide:23">Parallelisation</a></th>
+        <td><a href="#slide:23">23</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-24">
+        <th><a href="#slide:24">Ahmdal's Law</a></th>
+        <td><a href="#slide:24">24</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-25">
+        <th><a href="#slide:25">Python GIL</a></th>
+        <td><a href="#slide:25">25</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-26">
+        <th><a href="#slide:26">Using <code>joblib</code></a></th>
+        <td><a href="#slide:26">26</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-27">
+        <th><a href="#slide:27">Using <code>joblib</code></a></th>
+        <td><a href="#slide:27">27</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-28">
+        <th><a href="#slide:28">Hands On</a></th>
+        <td><a href="#slide:28">28</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-29">
+        <th><a href="#slide:29">Message Passing Interface (MPI)</a></th>
+        <td><a href="#slide:29">29</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-30">
+        <th><a href="#slide:30">MPI Communication</a></th>
+        <td><a href="#slide:30">30</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-31">
+        <th><a href="#slide:31"><code>mpi4py</code> hello, world</a></th>
+        <td><a href="#slide:31">31</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-32">
+        <th><a href="#slide:32">Non-trivial example, Laplace-Filter</a></th>
+        <td><a href="#slide:32">32</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-33">
+        <th><a href="#slide:33">Laplace-Operator, scalar</a></th>
+        <td><a href="#slide:33">33</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-34">
+        <th><a href="#slide:34"><code>mpi4py</code> non-trivial example, Laplace-Operator</a></th>
+        <td><a href="#slide:34">34</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-35">
+        <th><a href="#slide:35">Laplace-Operator, exchange in <code>Bitmap</code></a></th>
+        <td><a href="#slide:35">35</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-36">
+        <th><a href="#slide:36">Table of Contents</a></th>
+        <td><a href="#slide:36">36</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-37">
+        <th><a href="#slide:37">Thanks</a></th>
+        <td><a href="#slide:37">37</a></td>
+      </tr>
+      
+      
+    </table>
+  </div>
+  
+  <div id="help" class="sidebar hidden">
+    <h2>Help</h2>
+    <table>
+      <caption>Help</caption>
+      <tr>
+        <th>Table of Contents</th>
+        <td>t</td>
+      </tr>
+      <tr>
+        <th>Exposé</th>
+        <td>ESC</td>
+      </tr>
+      <tr>
+        <th>Presenter View</th>
+        <td>p</td>
+      </tr>
+      <tr>
+        <th>Source Files</th>
+        <td>s</td>
+      </tr>
+      <tr>
+        <th>Slide Numbers</th>
+        <td>n</td>
+      </tr>
+      <tr>
+        <th>Toggle screen blanking</th>
+        <td>b</td>
+      </tr>
+      <tr>
+        <th>Show/hide next slide</th>
+        <td>c</td>
+      </tr>
+      <tr>
+        <th>Notes</th>
+        <td>2</td>
+      </tr>
+      <tr>
+        <th>Help</th>
+        <td>h</td>
+      </tr>
+    </table>
+    <br>
+    <strong>Generated with Darkslide 6.0.0</strong>
+  </div>
+  <script>main()</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/course/slides/images/achter.jpg b/course/slides/images/achter.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d0fc27301ba19c038c096e0dd8d7c29b9f0a4aab
Binary files /dev/null and b/course/slides/images/achter.jpg differ
diff --git a/course/slides/images/ahmdal-slide.png b/course/slides/images/ahmdal-slide.png
new file mode 100644
index 0000000000000000000000000000000000000000..3057bc0de5d56c2860b45d41b21f0e0cdd081417
Binary files /dev/null and b/course/slides/images/ahmdal-slide.png differ
diff --git a/course/slides/images/blue_gene_p.jpg b/course/slides/images/blue_gene_p.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4554456beadafcce6ddb1ac58e5157289f144646
Binary files /dev/null and b/course/slides/images/blue_gene_p.jpg differ
diff --git a/course/slides/images/domain_decomposition.png b/course/slides/images/domain_decomposition.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd0af89c372aad1c2307cd0f66243dba6a14fc97
Binary files /dev/null and b/course/slides/images/domain_decomposition.png differ
diff --git a/course/slides/images/mem_hierarchy.png b/course/slides/images/mem_hierarchy.png
new file mode 100644
index 0000000000000000000000000000000000000000..a975a416bcbf9e731c1b24f916873e66800dbfa3
Binary files /dev/null and b/course/slides/images/mem_hierarchy.png differ
diff --git a/course/slides/images/memory_and_simd.png b/course/slides/images/memory_and_simd.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b5fa3b8159b17197c6a9bb4d891cb007a99454a
Binary files /dev/null and b/course/slides/images/memory_and_simd.png differ
diff --git a/course/slides/images/multi-verse.png b/course/slides/images/multi-verse.png
new file mode 100644
index 0000000000000000000000000000000000000000..f38ee761d56e38a664692aa7d6026f78c6541500
Binary files /dev/null and b/course/slides/images/multi-verse.png differ
diff --git a/course/slides/images/simd.png b/course/slides/images/simd.png
new file mode 100644
index 0000000000000000000000000000000000000000..e35b58596b8a8c52f9af4955441ad86c388a6542
Binary files /dev/null and b/course/slides/images/simd.png differ
diff --git a/course/slides/images/singlecore_performance.png b/course/slides/images/singlecore_performance.png
new file mode 100644
index 0000000000000000000000000000000000000000..46cf59d7a9aa8cd3b6564856480ce9370917af36
Binary files /dev/null and b/course/slides/images/singlecore_performance.png differ