Compare commits

...

10 Commits

Author SHA1 Message Date
9068c94464 Add memory barriers 2024-04-09 22:20:47 +02:00
a0ad7ad174 Fix gem5 bare metal svg 2024-04-09 22:19:10 +02:00
d6cd6a67f9 Fix layout slide 2024-04-09 16:13:37 +02:00
6acaf838be Further changes 2024-04-09 16:10:45 +02:00
d634f97fb2 Minor changes 2024-04-07 22:41:59 +02:00
3d15758c82 Refactor presentation 2024-04-07 21:21:40 +02:00
56226ebf41 Add new pictures for architectures 2024-04-07 16:09:20 +02:00
39ae2f6969 New fully-connected image 2024-04-07 13:51:11 +02:00
1e5256dc99 Add CNN slide 2024-04-06 10:01:24 +02:00
b38406a36f Grundgerüst steht 2024-04-03 23:14:06 +02:00
39 changed files with 73158 additions and 12443 deletions

109
drawings/.$gemv.drawio.bkp Normal file
View File

@@ -0,0 +1,109 @@
<mxfile host="Electron" modified="2024-04-08T19:03:07.854Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.1.0 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="1lKYrRpL3eeOdWhQxy20" version="24.1.0" type="device">
<diagram name="Seite-1" id="y70wuE-GsvUdFvvlSWny">
<mxGraphModel dx="2009" dy="1159" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="1" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="y6B-Wl55EwHwSYtlcI2c-38" value="&lt;font color=&quot;#000000&quot;&gt;$$\begin{pmatrix}&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{1,1} &amp;amp; w_{1,2} &amp;amp; \cdots &amp;amp; w_{1,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{2,1} &amp;amp; w_{2,2} &amp;amp; \cdots &amp;amp; w_{2,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; \vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{4,1} &amp;amp; w_{m,2} &amp;amp; \cdots &amp;amp; w_{m,n}&lt;br style=&quot;font-size: 24px;&quot;&gt; \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#AE4132;fontStyle=0;fontSize=24;" parent="1" vertex="1">
<mxGeometry x="194" y="215" width="440" height="190" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-2" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="380" y="290" width="620" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-3" value="" style="shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
<mxGeometry x="610" y="300" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-4" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$=$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="730" y="290" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-5" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="535" y="290" width="650" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-6" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="570" y="141" width="315" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-16" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#5c79a3&quot;&gt;$$o_m$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="195" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-17" value="$$=$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="160" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-18" value="$$\cdot$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="65" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-19" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#ae4132&quot;&gt;$$W_{m,n}$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry width="170" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-20" value="&lt;font color=&quot;#60854c&quot; style=&quot;font-size: 24px;&quot;&gt;$$i_n$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="110" width="110" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-7" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}o_{0,a}+o_{0,b}\\ o_{1,a}+o_{1,b}&amp;nbsp;\\ \vdots \\ o_{m,a}+o_{m,b}&amp;nbsp;\end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="390" y="595" width="1030" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-13" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="262" y="260" width="300" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-14" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="670" y="220" width="40" height="180" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-15" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="840" y="260" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-16" value="&lt;font color=&quot;#000000&quot;&gt;$$\begin{pmatrix}&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{1,1} &amp;amp; w_{1,2} &amp;amp; \cdots &amp;amp; w_{1,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{2,1} &amp;amp; w_{2,2} &amp;amp; \cdots &amp;amp; w_{2,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; \vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{4,1} &amp;amp; w_{m,2} &amp;amp; \cdots &amp;amp; w_{m,n}&lt;br style=&quot;font-size: 24px;&quot;&gt; \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#AE4132;fontStyle=0;fontSize=24;" vertex="1" parent="1">
<mxGeometry x="194" y="520" width="440" height="190" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-17" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="380" y="595" width="620" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-18" value="" style="shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
<mxGeometry x="610" y="605" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-19" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$=$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="730" y="595" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-20" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="266" y="565" width="148" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-21" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="670" y="530" width="40" height="80" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-22" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="842" y="570" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-25" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="790" y="595" width="650" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-27" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$=$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="980" y="595" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-29" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#5C79A3;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="670" y="620" width="40" height="80" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-30" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#5C79A3;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="432" y="565" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-31" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#5C79A3;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="920" y="570" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-32" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="570" y="470" width="315" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-33" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#5c79a3&quot;&gt;$$o_m$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="195" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-34" value="$$=$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="160" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-35" value="$$\cdot$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="65" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-36" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#ae4132&quot;&gt;$$W_{m,n}$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry width="170" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-37" value="&lt;font color=&quot;#60854c&quot; style=&quot;font-size: 24px;&quot;&gt;$$i_n$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="110" width="110" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

148
drawings/convolution.drawio Normal file
View File

@@ -0,0 +1,148 @@
<mxfile host="app.diagrams.net" modified="2024-04-05T16:16:14.302Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0" etag="mftZ5PoK8RPPj-JacT8L" version="24.2.2" type="device">
<diagram name="Seite-1" id="W3X7nrMai_GspNY-sJf_">
<mxGraphModel dx="876" dy="476" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="W1JztGaJZFA7r8mRVNIE-1" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fillColor=#E0F4FF;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="240" y="360" width="240" height="160" as="geometry" />
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-2" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-1">
<mxGeometry width="240" height="41" as="geometry" />
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-3" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-2">
<mxGeometry width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-4" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-2">
<mxGeometry x="39" width="42" height="41" as="geometry">
<mxRectangle width="42" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-5" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-2">
<mxGeometry x="81" width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-6" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-2">
<mxGeometry x="120" width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-7" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-2">
<mxGeometry x="159" width="42" height="41" as="geometry">
<mxRectangle width="42" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-8" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-2">
<mxGeometry x="201" width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-9" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-1">
<mxGeometry y="41" width="240" height="38" as="geometry" />
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-10" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-9">
<mxGeometry width="39" height="38" as="geometry">
<mxRectangle width="39" height="38" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-11" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-9">
<mxGeometry x="39" width="42" height="38" as="geometry">
<mxRectangle width="42" height="38" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-12" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-9">
<mxGeometry x="81" width="39" height="38" as="geometry">
<mxRectangle width="39" height="38" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-13" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-9">
<mxGeometry x="120" width="39" height="38" as="geometry">
<mxRectangle width="39" height="38" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-14" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-9">
<mxGeometry x="159" width="42" height="38" as="geometry">
<mxRectangle width="42" height="38" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-15" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-9">
<mxGeometry x="201" width="39" height="38" as="geometry">
<mxRectangle width="39" height="38" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-16" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-1">
<mxGeometry y="79" width="240" height="40" as="geometry" />
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-17" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-16">
<mxGeometry width="39" height="40" as="geometry">
<mxRectangle width="39" height="40" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-18" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-16">
<mxGeometry x="39" width="42" height="40" as="geometry">
<mxRectangle width="42" height="40" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-19" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-16">
<mxGeometry x="81" width="39" height="40" as="geometry">
<mxRectangle width="39" height="40" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-20" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-16">
<mxGeometry x="120" width="39" height="40" as="geometry">
<mxRectangle width="39" height="40" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-21" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-16">
<mxGeometry x="159" width="42" height="40" as="geometry">
<mxRectangle width="42" height="40" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-22" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-16">
<mxGeometry x="201" width="39" height="40" as="geometry">
<mxRectangle width="39" height="40" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-23" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-1">
<mxGeometry y="119" width="240" height="41" as="geometry" />
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-24" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-23">
<mxGeometry width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-25" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-23">
<mxGeometry x="39" width="42" height="41" as="geometry">
<mxRectangle width="42" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-26" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-23">
<mxGeometry x="81" width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-27" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-23">
<mxGeometry x="120" width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-28" value="0" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-23">
<mxGeometry x="159" width="42" height="41" as="geometry">
<mxRectangle width="42" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-29" value="1" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;" vertex="1" parent="W1JztGaJZFA7r8mRVNIE-23">
<mxGeometry x="201" width="39" height="41" as="geometry">
<mxRectangle width="39" height="41" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="W1JztGaJZFA7r8mRVNIE-44" value="&lt;font color=&quot;#b75450&quot;&gt;Filter&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fillStyle=auto;strokeWidth=3;fillOpacity=40;" vertex="1" parent="1">
<mxGeometry x="240" y="360" width="80" height="80" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

217
drawings/dnn.drawio Normal file
View File

@@ -0,0 +1,217 @@
<mxfile host="Electron" modified="2024-04-07T11:45:48.759Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.1.0 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="Ltgvumhk_kA8Zjq61lBQ" version="24.1.0" type="device">
<diagram name="Seite-1" id="y70wuE-GsvUdFvvlSWny">
<mxGraphModel dx="1178" dy="679" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="1" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="y6B-Wl55EwHwSYtlcI2c-15" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-1" target="y6B-Wl55EwHwSYtlcI2c-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-1" value="$$i_0$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="154" y="140" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-3" value="$$i_1$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="154" y="190" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-4" value="$$i_2$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="154" y="240" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-5" value="$$i_3$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="154" y="290" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-6" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="174" y="360" as="sourcePoint" />
<mxPoint x="174" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-7" value="$$o_0$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="254" y="120" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-8" value="$$o_1$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="254" y="170" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-9" value="$$o_2$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="254" y="220" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-10" value="$$o_3$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="254" y="270" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-11" value="$$o_4$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="254" y="320" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-13" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="273.8" y="390" as="sourcePoint" />
<mxPoint x="273.8" y="370" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-16" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-1" target="y6B-Wl55EwHwSYtlcI2c-8" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="204" y="170" as="sourcePoint" />
<mxPoint x="264" y="150" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-17" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" target="y6B-Wl55EwHwSYtlcI2c-9" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="194" y="160" as="sourcePoint" />
<mxPoint x="274" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-19" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-1" target="y6B-Wl55EwHwSYtlcI2c-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="224" y="190" as="sourcePoint" />
<mxPoint x="284" y="170" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-20" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-1" target="y6B-Wl55EwHwSYtlcI2c-11" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="234" y="200" as="sourcePoint" />
<mxPoint x="294" y="180" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-21" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-3" target="y6B-Wl55EwHwSYtlcI2c-7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="244" y="210" as="sourcePoint" />
<mxPoint x="304" y="190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-22" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-3" target="y6B-Wl55EwHwSYtlcI2c-8" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="254" y="220" as="sourcePoint" />
<mxPoint x="314" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-23" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-3" target="y6B-Wl55EwHwSYtlcI2c-9" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="264" y="230" as="sourcePoint" />
<mxPoint x="324" y="210" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-24" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-4" target="y6B-Wl55EwHwSYtlcI2c-7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="274" y="240" as="sourcePoint" />
<mxPoint x="214" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-25" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-3" target="y6B-Wl55EwHwSYtlcI2c-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="284" y="250" as="sourcePoint" />
<mxPoint x="344" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-26" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-3" target="y6B-Wl55EwHwSYtlcI2c-11" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="294" y="260" as="sourcePoint" />
<mxPoint x="354" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-27" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-4" target="y6B-Wl55EwHwSYtlcI2c-8" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="304" y="270" as="sourcePoint" />
<mxPoint x="364" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-28" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-4" target="y6B-Wl55EwHwSYtlcI2c-9" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="314" y="280" as="sourcePoint" />
<mxPoint x="374" y="260" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-29" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-4" target="y6B-Wl55EwHwSYtlcI2c-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="324" y="290" as="sourcePoint" />
<mxPoint x="384" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-30" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-4" target="y6B-Wl55EwHwSYtlcI2c-11" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="334" y="300" as="sourcePoint" />
<mxPoint x="394" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-31" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-5" target="y6B-Wl55EwHwSYtlcI2c-7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="344" y="310" as="sourcePoint" />
<mxPoint x="194" y="400" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-32" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-5" target="y6B-Wl55EwHwSYtlcI2c-11" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="354" y="320" as="sourcePoint" />
<mxPoint x="414" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-33" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-5" target="y6B-Wl55EwHwSYtlcI2c-10" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="364" y="330" as="sourcePoint" />
<mxPoint x="424" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-34" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-5" target="y6B-Wl55EwHwSYtlcI2c-9" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="374" y="340" as="sourcePoint" />
<mxPoint x="434" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-35" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" source="y6B-Wl55EwHwSYtlcI2c-5" target="y6B-Wl55EwHwSYtlcI2c-8" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="384" y="350" as="sourcePoint" />
<mxPoint x="444" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-37" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="224" y="350" as="sourcePoint" />
<mxPoint x="224" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="y6B-Wl55EwHwSYtlcI2c-38" value="$$W_{m,n} =&lt;br style=&quot;font-size: 24px;&quot;&gt; \begin{pmatrix}&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{1,1} &amp;amp; w_{1,2} &amp;amp; \cdots &amp;amp; w_{1,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{2,1} &amp;amp; w_{2,2} &amp;amp; \cdots &amp;amp; w_{2,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; \vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{m,1} &amp;amp; w_{m,2} &amp;amp; \cdots &amp;amp; w_{m,n}&lt;br style=&quot;font-size: 24px;&quot;&gt; \end{pmatrix}$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#AE4132;fontStyle=0;fontSize=24;" parent="1" vertex="1">
<mxGeometry x="360" y="200" width="440" height="220" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-2" value="$$o_m$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="254" y="410" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-3" value="$$i_n$$" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="154" y="370" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-4" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;dashed=1;" edge="1" parent="1" target="Y3yYdLvzpnhM01C_kKpc-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="194" y="390" as="sourcePoint" />
<mxPoint x="254" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-14" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;dashed=1;" edge="1" parent="1" source="Y3yYdLvzpnhM01C_kKpc-3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="204" y="400" as="sourcePoint" />
<mxPoint x="240" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-15" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;fillColor=#fad9d5;strokeColor=#ae4132;dashed=1;" edge="1" parent="1" target="Y3yYdLvzpnhM01C_kKpc-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="210" y="360" as="sourcePoint" />
<mxPoint x="274" y="450" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-21" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="410" y="130" width="280" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-16" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#5c79a3&quot;&gt;$$o_m$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="Y3yYdLvzpnhM01C_kKpc-21">
<mxGeometry width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-17" value="$$=$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" vertex="1" parent="Y3yYdLvzpnhM01C_kKpc-21">
<mxGeometry x="50" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-18" value="$$\cdot$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" vertex="1" parent="Y3yYdLvzpnhM01C_kKpc-21">
<mxGeometry x="125" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-19" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#ae4132&quot;&gt;$$W_{m,n}$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="Y3yYdLvzpnhM01C_kKpc-21">
<mxGeometry x="60" width="170" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-20" value="&lt;font color=&quot;#60854c&quot; style=&quot;font-size: 24px;&quot;&gt;$$i_n$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="Y3yYdLvzpnhM01C_kKpc-21">
<mxGeometry x="170" width="110" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

109
drawings/gemv.drawio Normal file
View File

@@ -0,0 +1,109 @@
<mxfile host="Electron" modified="2024-04-08T19:19:01.673Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.1.0 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="f9_gaScfTfSRG2DifFzQ" version="24.1.0" type="device">
<diagram name="Seite-1" id="y70wuE-GsvUdFvvlSWny">
<mxGraphModel dx="2009" dy="1159" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="1" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="y6B-Wl55EwHwSYtlcI2c-38" value="&lt;font color=&quot;#000000&quot;&gt;$$\begin{pmatrix}&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{1,1} &amp;amp; w_{1,2} &amp;amp; \cdots &amp;amp; w_{1,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{2,1} &amp;amp; w_{2,2} &amp;amp; \cdots &amp;amp; w_{2,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; \vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{4,1} &amp;amp; w_{m,2} &amp;amp; \cdots &amp;amp; w_{m,n}&lt;br style=&quot;font-size: 24px;&quot;&gt; \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#AE4132;fontStyle=0;fontSize=24;" parent="1" vertex="1">
<mxGeometry x="194" y="215" width="440" height="190" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-2" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="380" y="290" width="620" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-3" value="" style="shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
<mxGeometry x="610" y="300" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-4" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$=$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="730" y="290" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-5" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="535" y="290" width="650" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-6" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="450" y="150" width="315" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-16" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#5c79a3&quot;&gt;$$o_m$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="195" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-17" value="$$=$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="160" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-18" value="$$\cdot$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="65" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-19" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#ae4132&quot;&gt;$$W_{m,n}$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry width="170" height="40" as="geometry" />
</mxCell>
<mxCell id="Y3yYdLvzpnhM01C_kKpc-20" value="&lt;font color=&quot;#60854c&quot; style=&quot;font-size: 24px;&quot;&gt;$$i_n$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="NkSMZKa1grjJmDTNbKW0-6" vertex="1">
<mxGeometry x="110" width="110" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-7" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}o_{0,a}+o_{0,b}\\ o_{1,a}+o_{1,b}&amp;nbsp;\\ \vdots \\ o_{m,a}+o_{m,b}&amp;nbsp;\end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="390" y="595" width="1030" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-13" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="262" y="260" width="300" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-14" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="670" y="220" width="40" height="180" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-15" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="840" y="260" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-16" value="&lt;font color=&quot;#000000&quot;&gt;$$\begin{pmatrix}&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{1,1} &amp;amp; w_{1,2} &amp;amp; \cdots &amp;amp; w_{1,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{2,1} &amp;amp; w_{2,2} &amp;amp; \cdots &amp;amp; w_{2,n} \\&lt;br style=&quot;font-size: 24px;&quot;&gt; \vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br style=&quot;font-size: 24px;&quot;&gt; w_{4,1} &amp;amp; w_{m,2} &amp;amp; \cdots &amp;amp; w_{m,n}&lt;br style=&quot;font-size: 24px;&quot;&gt; \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#AE4132;fontStyle=0;fontSize=24;" vertex="1" parent="1">
<mxGeometry x="194" y="520" width="440" height="190" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-17" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="380" y="595" width="620" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-18" value="" style="shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
<mxGeometry x="610" y="605" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-19" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$=$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="730" y="595" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-20" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="266" y="565" width="148" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-21" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="670" y="530" width="40" height="80" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-22" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#b85450;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="842" y="570" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-25" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="790" y="595" width="650" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-27" value="&lt;font style=&quot;font-size: 24px;&quot;&gt;$$=$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="980" y="595" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-29" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#5C79A3;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="670" y="620" width="40" height="80" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-30" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#5C79A3;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="432" y="565" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-31" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#5C79A3;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="920" y="570" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-32" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="460" y="460" width="315" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-33" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#5c79a3&quot;&gt;$$o_m$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="195" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-34" value="$$=$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="160" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-35" value="$$\cdot$$" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=24;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="65" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-36" value="&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;font color=&quot;#ae4132&quot;&gt;$$W_{m,n}$$&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry width="170" height="40" as="geometry" />
</mxCell>
<mxCell id="NkSMZKa1grjJmDTNbKW0-37" value="&lt;font color=&quot;#60854c&quot; style=&quot;font-size: 24px;&quot;&gt;$$i_n$$&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="NkSMZKa1grjJmDTNbKW0-32">
<mxGeometry x="110" width="110" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

8632
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -10,10 +10,8 @@
"dependencies": {
"@slidev/cli": "^0.48.8",
"@slidev/theme-default": "latest",
"@slidev/theme-seriph": "latest",
"slidev-addon-citations": "^0.0.9",
"slidev-theme-academic": "^1.3.0",
"slidev-theme-geist": "^0.8.1",
"vue": "^3.4.21"
},
"devDependencies": {

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

98
public/cnn_filter.svg Normal file
View File

@@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
width="121.5"
height="83"
viewBox="-0.5 -0.5 121.5 83"
id="svg90"
sodipodi:docname="Unbenanntes Diagramm.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<sodipodi:namedview
id="namedview90"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<defs
id="defs1" />
<g
id="g31">
<rect
x="1"
y="42"
width="39"
height="38"
fill="none"
stroke="none"
pointer-events="all"
id="rect30" />
<path
d="m 1,42 m 39,0 m 0,38 M 1,80"
fill="none"
stroke="#6c8ebf"
stroke-linecap="square"
stroke-miterlimit="10"
pointer-events="all"
id="path30" />
</g>
<g
id="g87">
<rect
x="1"
y="1"
width="80"
height="80"
rx="12"
ry="12"
fill-opacity="0.4"
fill="#f8cecc"
stroke="#b85450"
stroke-width="3"
pointer-events="all"
id="rect86" />
</g>
<g
id="g89">
<g
transform="translate(-0.5,-0.5)"
id="g88">
<switch
id="switch87">
<foreignObject
style="overflow: visible; text-align: left;"
pointer-events="none"
width="100%"
height="100%"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 41px; margin-left: 2px;">
<xhtml:div
style="box-sizing: border-box; font-size: 0px; text-align: center;"
data-drawio-colors="color: rgb(0, 0, 0); ">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
<xhtml:font
color="#b75450">Filter</xhtml:font>
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="41"
y="45"
fill="#000000"
font-family="Helvetica"
font-size="12px"
text-anchor="middle"
id="text87">Filter</text>
</switch>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

1433
public/cnn_input.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 46 KiB

932
public/complete_layout.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 402 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 368 KiB

View File

@@ -1791,9 +1791,9 @@
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.4038052"
inkscape:cx="376.48641"
inkscape:cy="146.01849"
inkscape:zoom="0.84987348"
inkscape:cx="436.53557"
inkscape:cy="289.45485"
inkscape:window-width="2194"
inkscape:window-height="1158"
inkscape:window-x="0"

Before

Width:  |  Height:  |  Size: 276 KiB

After

Width:  |  Height:  |  Size: 276 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 289 KiB

After

Width:  |  Height:  |  Size: 352 KiB

4876
public/gemv_0.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 352 KiB

4876
public/gemv_1.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 352 KiB

4876
public/gemv_2.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 352 KiB

4876
public/gemv_3.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 352 KiB

4878
public/gemv_4.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 353 KiB

2416
public/gemv_interleaved.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 462 KiB

1908
public/gemv_normal.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 350 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 309 KiB

6390
public/pim_positions_0.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 344 KiB

6443
public/pim_positions_1.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 346 KiB

6443
public/pim_positions_2.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 346 KiB

6443
public/pim_positions_3.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 346 KiB

6443
public/pim_positions_4.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 346 KiB

View File

@@ -4,11 +4,33 @@
<svg
version="1.1"
id="svg1"
width="444.5152"
height="194.4754"
viewBox="0 0 444.5152 194.4754"
width="518.98743"
height="227.05699"
viewBox="0 0 518.98743 227.05699"
sodipodi:docname="pu.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.9931935"
inkscape:cx="209.46286"
inkscape:cy="125.92857"
inkscape:window-width="2194"
inkscape:window-height="1158"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<defs
id="defs1">
<clipPath
@@ -590,7 +612,7 @@
</defs>
<g
id="g1"
transform="translate(-174.61337,-112.25229)">
transform="matrix(1.1675358,0,0,1.1675358,-203.86735,-131.05857)">
<g
id="g112">
<g

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 104 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 156 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 95 KiB

353
public/speedup_inf_old.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 95 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

@@ -14,12 +14,17 @@ addons:
- slidev-addon-citations
biblio:
filename: references.bib
record: true
---
### Master Thesis
# System-Level Integration and Exploration of PIM-DRAM
<!--
- results of master thesis
-->
---
src: ./slides/introduction.md
---
@@ -36,9 +41,17 @@ src: ./slides/implementation.md
src: ./slides/simulations.md
---
---
src: ./slides/conclusion.md
---
---
layout: end
---
# Thank you for your attention
<hr/>
<hr/>
---
src: ./slides/appendix.md
---

13
slides/appendix.md Normal file
View File

@@ -0,0 +1,13 @@
---
layout: figure
figureUrl: /layout.svg
figureCaption: Mapping of the weight matrix onto the memory banks
---
## Appendix
### Memory Layout
<hr/>
<!--
- Data layout in program and address mapping must match
-->

17
slides/conclusion.md Normal file
View File

@@ -0,0 +1,17 @@
## Conclusion and Future Work
<hr/>
<br>
<br>
- PIM can accelerate memory-bound workloads
- Special PIM-friendly memory layouts are required
<br>
#### Future work:
- Simulate multiple channels
- Implementation of Linux driver
- Comparison with complete neural networks
- Consider replacing library approach with compiler approach
- Implement a power model to analyze the power efficiency gains

View File

@@ -1,57 +1,59 @@
---
layout: figure
figureUrl: /dramsys.svg
figureCaption: The PIM-HBM model integrated into DRAMSys
---
## Virtual Prototype
### Processing Units
<hr/>
<br>
- Integrate DRAMSys into gem5
- Implement PIM-HBM virtual prototype in DRAM model
<br>
<div class="flex justify-center items-center">
<img src="/dramsys.svg">
</div>
<!--
- VP interprets the programmed microkernel
- not yet drop-in replacement
-->
---
layout: figure-side
figureUrl: /data_structures.svg
figureCaption: The PIM-HBM model integrated into DRAMSys
figureCaption: Data structures for instructions and register files
---
## Virtual Prototype
### Software Library
<hr/>
<br>
<br>
<br>
- Software support library written in Rust
- Provides data structures for PIM-HBM
- Adhering special memory layout requirements
#### Software support library
<br>
- Provides data structures for operand data and microkernels
- Executes programmed microkernels
- Generate RD and WR requests
- Insert memory barriers for synchronization
---
layout: figure-side
figureUrl: /bare_metal.svg
---
## Virtual Prototype
### Platform
### GEMV Kernel
<hr/>
<br>
<br>
- Bare-metal kernel executes on ARM processor model
- Custom page table configuration
- Non-PIM DRAM region mapped as cacheable memory
- PIM DRAM region mapped as non-cacheable memory
<div class="grid grid-cols-2 gap-4">
<div>
---
<hr/>
<br>
<br>
GEMV Microkernel
```asm{none|1-8|9,10|11|all}{lines:true}
DRAM-side
```asm{all|1-8|9,10|11|12}{lines:true,at:1}
MOV GRF_A #0, BANK
MOV GRF_A #1, BANK
MOV GRF_A #2, BANK
@@ -66,3 +68,72 @@ FILL BANK, GRF_B #0
EXIT
```
</div>
<div>
<style>
code {
font-size: 8px
}
</style>
Host-side
```rust {all|7-10|12-17|22-28|30-31}{lines:true,maxHeight:'15em',at:1}
pub fn execute<const X16R: usize, const X16C: usize, const R: usize>(
matrix: &Matrix<X16R, X16C>,
input_vector: &Vector<X16C>,
output_partial_sum_vector: &mut SVector<F16x16, R>,
dummy: &impl PimOperand,
) {
// Load input vector into GRF-A registers
for chunk in input_vector.0.iter() {
chunk.execute_read();
}
// Execute the MAC instructions without memory barriers
for sub_matrix in matrix.0.iter() {
for column_block in sub_matrix.fixed_rows::<1>(0).iter() {
column_block.execute_read_async();
}
}
// Verify all memory accesses have finished
barrier::dsb(barrier::SY);
// Copy the partial sums into the bank
for chunk in output_partial_sum_vector
.fixed_rows_with_step_mut::<X16R>(0, 16)
.iter_mut()
{
chunk.execute_write();
}
// Execute the EXIT instruction
dummy.execute_read();
}
```
</div>
</div>
---
layout: figure-side
figureUrl: /bare_metal.svg
---
## Virtual Prototype
### Platform
<hr/>
<br>
<br>
- ARM processor model
- Bare-metal kernel
- Custom page table configuration
- Non-PIM DRAM region mapped as cacheable memory
- PIM DRAM region mapped as non-cacheable memory
<!--
- bare metal offers most control
-->

View File

@@ -1,33 +1,56 @@
---
layout: figure
figureUrl: /world_energy.svg
figureCaption: Total energy of computing
figureFootnoteNumber: 1
---
## Introduction
### Energy Demand of Applications
<hr/>
- Total compute energy approaches world's energy production
--> Drastic improvements in energy efficiency needed
<div class="flex justify-center">
<img src="/world_energy.svg">
</div>
<Footnotes separator>
<Footnote :number=1>
<Footnote>
SRC. „Decadal Plan for Semiconductors“, Januar 2021. https://www.src.org/about/decadal-plan/.
</Footnote>
</Footnote>
</Footnotes>
---
layout: figure
figureUrl: /gpt.svg
figureCaption: Roofline model of GPT revisions
figureFootnoteNumber: 1
<!--
- compute 2x every two years
- energy production 2% per year
- to meet future compute demands, drastic improvements in energy efficiency
-->
---
## Introduction
### Memory Bound Workloads
<hr/>
- AI applications become increasingly memory-bound
--> Instead of bringing the data to the processing, bring the processing to the data
<br>
<div class="flex justify-center">
<img src="/gpt.svg">
</div>
<Footnotes separator>
<Footnote :number=1>
<Footnote>
Ivo Bolsens. „Scalable AI Architectures for Edge and Cloud“, 2023.
</Footnote>
</Footnote>
</Footnotes>
<!--
- Emerging AI applications become increasingly memory-bound
- Roofline model
- Not limited by compute power but by memory
- researchers begin to consider PIM to circumvent memory bottleneck
- (drastically more parameters in GPT-3, operational intensity goes down)
-->

View File

@@ -1,19 +1,80 @@
## Processing-in-Memory
### Applicable Workloads
<hr/>
- Fully connected layers have a large weight matrix
- Weight matrix does not fit onto on-chip cache
- No data reuse in the matrix
<div class="flex justify-center">
<img src="/dnn.svg">
</div>
---
layout: figure
figureUrl: /dnn.svg
figureCaption: A fully connected DNN layer
figureFootnoteNumber: 1
preload: false
clicks: 1
---
## Processing-in-Memory
### Applicable Workloads
<hr/>
<Footnotes separator>
<Footnote :number=1>
He et al. „Newton: A DRAM-makers Accelerator-in-Memory (AiM) Architecture for Machine Learning“, 2020.
</Footnote>
</Footnotes>
- Convolutional layers have a small filter matrix
- Matrix does fit onto on-chip cache
- Excessive data reuse in the matrix
<br>
<Transform :scale="1.4">
<div class="absolute left-175px top-1px">
<img src="/cnn_input.svg">
</div>
<div v-if="$slidev.nav.clicks === 0" class="absolute left-175px">
<img src="/cnn_filter.svg">
</div>
<div v-if="$slidev.nav.clicks === 1"
v-motion
:initial="{ x: 175, y: 0}"
:enter="{ x: 335, y: 0, transition: { duration: 5000 }}">
<img src="/cnn_filter.svg">
</div>
</Transform>
---
## Processing-in-Memory
### Applicable Workloads
<hr/>
<br>
<br>
<br>
<div class="grid grid-cols-2 gap-4">
<div>
### Suitable candidates for PIM:
<br>
- Fully connected layers in multilayer perceptrons (MLPs)
- Layers in recurrent neural networks (RNNs)
</div>
<div>
### Less suitable candidates for PIM:
<br>
- Convolutional neural networks (CNNs)
</div>
</div>
<!--
To summarize...
-->
---
@@ -24,112 +85,160 @@ figureFootnoteNumber: 1
<br>
<br>
Possible placements of compute logic<sup>1</sup>:
<div class="grid grid-cols-2 gap-4">
<div>
<v-clicks>
- Inside the memory subarray
- In the PSA region near a subarray
- Outside the bank in its peripheral region
- Near the subarray in the PSA output region
- Near the bank in its peripheral region
- In the I/O region of the memory
</v-clicks>
</div>
<div>
<img v-click="[0,1]" class="absolute right-80px top-150px" src="/pim_positions_0.svg">
<img v-click="[1,2]" class="absolute right-80px top-150px" src="/pim_positions_1.svg">
<img v-click="[2,3]" class="absolute right-80px top-150px" src="/pim_positions_2.svg">
<img v-click="[3,4]" class="absolute right-80px top-150px" src="/pim_positions_3.svg">
<img v-click="4" class="absolute right-80px top-150px" src="/pim_positions_4.svg">
</div>
</div>
<br>
<br>
<br>
<br>
<div v-click class="text-xl"> The nearer the computation is to the memory cells, the higher the achievable bandwidth! </div>
<Footnotes separator>
<Footnote :number=1>
<Footnote>
Sudarshan et al. „A Critical Assessment of DRAM-PIM Architectures - Trends, Challenges and Solutions“, 2022.
</Footnote>
</Footnotes>
---
layout: figure
figureUrl: /hbm-pim.svg
figureCaption: Architecture of PIM-HBM
figureFootnoteNumber: 1
---
## Processing-in-Memory
### Samsung's HBM-PIM
<hr/>
<Footnotes separator>
<Footnote :number=1>
Lee et al. „Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology: Industrial Product“, 2021.
</Footnote>
</Footnotes>
<!--
- Real-world PIM implementation based on HBM2
- SIMD FPUs are 16-wide, i.e., there are 16 FPU units
- Three execution modes
- Single-Bank (SB)
- All-Bank (AB)
- All-Bank-PIM (AB-PIM)
- Architecture space of PIM:
- Inside the memory SA
- simple bulk logic
- Near SA in PSA output region
- logic gates in the region
- Near a bank in its peripheral region
- computation units with control
- I/O region of memory
- limited by memory bus
-->
---
layout: figure
figureUrl: /pu.svg
figureCaption: Architecture of a PIM processing unit
figureFootnoteNumber: 1
---
## Processing-in-Memory
### Samsung's HBM-PIM
### Samsung's PIM-HBM
<hr/>
<br>
- Real-world PIM implementation based on HBM2
- PIM units embedded at the bank level
<br>
<div class="flex justify-center items-center">
<img src="/hbm-pim.svg">
</div>
<Footnotes separator>
<Footnote :number=1>
<Footnote>
Lee et al. „Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology: Industrial Product“, 2021.
</Footnote>
</Footnotes>
<!--
- One PIM unit shared by two banks
- 16-wide SIMD FPUs are 16-wide
- All-Bank mode: All PIM units operate in parallel
-->
---
## Processing-in-Memory
### Samsung's PIM-HBM | Processing Unit
<hr/>
<br>
- Two 16-wide 16-bit FPUs
- Register files and control unit
<br>
#### Instructions:
- Control: NOP, JUMP, EXIT
- Data: MOV (ReLU), FILL
- Arithmetic: ADD, MUL, MAC, MAD
<img class="absolute right-80px top-180px" src="/pu.svg">
<Footnotes separator>
<Footnote>
Lee et al. „Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology: Industrial Product“, 2021.
</Footnote>
</Footnotes>
<!--
- Control unit executes RISC instructions
- Two SIMD FPUs
- ADD
- MUL
- CRF: 32 32-bit entries (32 instructions)
- GRF: 16 256-bit entries
- SRF: 16 16-bit entries
- CRF: 32 instructions, stores the program
- GRF: 16 entries, one memory fetch
- SRF: 16 entries
- One instruction is executed when RD or WR command is issued
- Control units executes one instruction when RD or WR command is issued
-->
---
layout: figure
figureUrl: /gemv.svg
figureCaption: Procedure to perform a (128×8)×(128) GEMV operation
figureFootnoteNumber: 1
## Processing-in-Memory
### Samsung's PIM-HBM | GEMV Operation
<hr/>
<img v-click="[0,1]" class="absolute right-125px top-150px" src="/gemv_normal.svg">
<img v-click="1" class="absolute right-10px top-150px" src="/gemv_interleaved.svg">
---
## Processing-in-Memory
### Samsung's HBM-PIM
### Samsung's PIM-HBM | GEMV Operation
<hr/>
<img v-click="[0,1]" class="absolute right-250px top-150px" src="/gemv.svg">
<img v-click="[1,2]" class="absolute right-250px top-150px" src="/gemv_0.svg">
<img v-click="[2,3]" class="absolute right-250px top-150px" src="/gemv_1.svg">
<img v-click="[3,4]" class="absolute right-250px top-150px" src="/gemv_2.svg">
<img v-click="[4,5]" class="absolute right-250px top-150px" src="/gemv_3.svg">
<img v-click="5" class="absolute right-250px top-150px" src="/gemv_4.svg">
<Footnotes separator>
<Footnote :number=1>
Lee et al. „Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology: Industrial Product“, 2021.
<Footnote>
Kang et al. „An FPGA-Based RNN-T Inference Accelerator with PIM-HBM“, 2022.
</Footnote>
</Footnotes>
---
layout: figure
figureUrl: /layout.svg
figureCaption: Mapping of the weight matrix onto the memory banks
---
## Processing-in-Memory
### Samsung's HBM-PIM
<hr/>
<!--
- Data layout in program and address mapping must match
- Procedure of GEMV operation
- multiple cycles
- each PIM unit operatates on one matrix row
- partial sum, reduced by host
-->
---
@@ -138,6 +247,14 @@ figureCaption: Mapping of the weight matrix onto the memory banks
### Research
<hr/>
simulation models needed
<br>
<br>
<br>
<br>
research should not only focus on hardware but also explore the software side!
- To analyze the performance gains of PIM, simulations are needed
- Research should not only focus on hardware but also explore the programmability
<br>
- In the following, a virtual prototype of PIM-HBM is implemented

View File

@@ -2,7 +2,6 @@
### Microbenchmarks
<hr/>
<br>
<br>
<div class="grid grid-cols-2 gap-4">
@@ -15,11 +14,16 @@
- Vector-Matrix benchmarks (BLAS level 2)
- GEMV: $z = A \cdot x$
- DNN Layer: $z = ReLU(A \cdot x)$
- Simple DNN:
- $f(x) = z = ReLU(A \cdot x)$
- $z_{n+1} = f(z_n)$
- 5 layers in total
</div>
<div>
<br>
| Level | Vector | GEMV | DNN |
|-------|--------|---------------|---------------|
| X1 | (2M) | (1024 x 4096) | (256 x 256) |
@@ -27,12 +31,125 @@
| X3 | (8M) | (4096 x 8192) | (1024 x 1024) |
| X4 | (16M) | (4096 x 8192) | (2048 x 2048) |
Operand Dimensions
</div>
</div>
<!--
- operand data significantly larger than on-chip cache
-->
---
## Simulations
### System Configuration
<hr/>
<br>
<br>
<br>
<div class="grid grid-cols-2 gap-4">
<div>
#### Two simulated systems:
<br>
- Generic ARM system
- Infinite compute system
- unrealistic frequency of 100 GHz
- completely memory bound
- lower bound of possible speedup
</div>
<div>
<br>
#### Two real GPUs using HBM2:
<br>
- AMD RX Vega 56
- NVIDIA Tesla V100
</div>
</div>
---
layout: figure
figureUrl: /dnn.svg
figureCaption: A fully connected DNN layer
figureFootnoteNumber: 1
figureUrl: /speedup_normal.svg
figureCaption: Speedups of PIM compared to non-PIM
---
## Simulations
### Speedups / Generic ARM System
<hr/>
---
layout: figure
figureUrl: /speedup_inf.svg
figureCaption: Speedups of PIM compared to non-PIM
---
## Simulations
### Speedups / Infinite Compute System
<hr/>
<!--
- VADD: 12.7x
- GEMV: 9.0x
-->
---
layout: figure
figureUrl: /samsung.svg
figureCaption: Speedups of Samsung for VADD and GEMV
---
## Simulations
### Speedups / Samsung
<hr/>
<Footnotes separator>
<Footnote>
Lee et al. „Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology: Industrial Product“, 2021.
</Footnote>
</Footnotes>
<!--
- GEMV matches good
- ADD shows deviation
-> differences in hardware architecture
- GPU has no speculative execution
-->
---
layout: figure
figureUrl: /runtimes_vector.svg
figureCaption: Runtimes for Vector Benchmarks
---
## Simulations
### Runtimes / Vector Benchmarks
<hr/>
<!--
- Real GPUs use multiple memory channels
- Memory barriers
- Also architectural differences
-->
---
layout: figure
figureUrl: /runtimes_matrix.svg
figureCaption: Runtimes for Matrix Benchmarks
---
## Simulations
### Runtimes / Matrix Benchmarks
<hr/>

5176
yarn.lock Normal file

File diff suppressed because it is too large Load Diff