Further changes

This commit is contained in:
2024-04-09 16:10:45 +02:00
parent d634f97fb2
commit 6acaf838be
19 changed files with 31957 additions and 1598 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>

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>

View File

Before

Width:  |  Height:  |  Size: 402 KiB

After

Width:  |  Height:  |  Size: 402 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

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

View File

@@ -21,6 +21,10 @@ record: true
# System-Level Integration and Exploration of PIM-DRAM # System-Level Integration and Exploration of PIM-DRAM
<!--
- results of master thesis
-->
--- ---
src: ./slides/introduction.md src: ./slides/introduction.md
--- ---
@@ -47,3 +51,7 @@ layout: end
# Thank you for your attention # Thank you for your attention
<hr/> <hr/>
---
src: ./slides/appendix.md
---

View File

@@ -1,42 +1,13 @@
---
layout: figure
figureUrl: /layout.svg
figureCaption: Mapping of the weight matrix onto the memory banks
---
## Appendix ## Appendix
### GEMV Kernel ### Memory Layout
<hr/> <hr/>
<Transform :scale="0.7"> <!--
- Data layout in program and address mapping must match
```rust {all}{lines:true} -->
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();
}
```
</Transform>

View File

@@ -1,6 +1,7 @@
## Conclusion and Future Work ## Conclusion and Future Work
<hr/> <hr/>
<br>
<br> <br>
- PIM can accelerate memory-bound workloads - PIM can accelerate memory-bound workloads
@@ -9,6 +10,7 @@
<br> <br>
#### Future work: #### Future work:
- Simulate multiple channels
- Implementation of Linux driver - Implementation of Linux driver
- Comparison with complete neural networks - Comparison with complete neural networks
- Consider replacing library approach with compiler approach - Consider replacing library approach with compiler approach

View File

@@ -78,7 +78,7 @@ code {
Host-side Host-side
```rust {all|7-10|12-17|19-28|30-31}{lines:true,maxHeight:'15em',at:1} ```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>( pub fn execute<const X16R: usize, const X16C: usize, const R: usize>(
matrix: &Matrix<X16R, X16C>, matrix: &Matrix<X16R, X16C>,
input_vector: &Vector<X16C>, input_vector: &Vector<X16C>,

View File

@@ -2,11 +2,10 @@
### Energy Demand of Applications ### Energy Demand of Applications
<hr/> <hr/>
<br>
- Total compute energy approaches world's energy production - Total compute energy approaches world's energy production
--> drastic improvements in energy efficiency needed --> Drastic improvements in energy efficiency needed
<div class="flex justify-center"> <div class="flex justify-center">
<img src="/world_energy.svg"> <img src="/world_energy.svg">
@@ -19,11 +18,10 @@
</Footnotes> </Footnotes>
<!-- <!--
- compute doubles every two years - compute 2x every two years
- energy production grows linearly at 2% per year - energy production 2% per year
- to meet future compute demands - to meet future compute demands, drastic improvements in energy efficiency
- -> drastic improvements in energy efficiency
--> -->
--- ---
@@ -32,9 +30,9 @@
### Memory Bound Workloads ### Memory Bound Workloads
<hr/> <hr/>
<br> - AI applications become increasingly memory-bound
- AI workloads become increasingly memory-bound --> Instead of bringing the data to the processing, bring the processing to the data
<br> <br>
@@ -52,5 +50,7 @@
- Emerging AI applications become increasingly memory-bound - Emerging AI applications become increasingly memory-bound
- Roofline model - Roofline model
- Not limited by compute power but by memory - Not limited by compute power but by memory
-> researchers begin to consider processing in memory to circumvent memory bottleneck - researchers begin to consider PIM to circumvent memory bottleneck
- (drastically more parameters in GPT-3, operational intensity goes down)
--> -->

View File

@@ -10,11 +10,6 @@
<img src="/dnn.svg"> <img src="/dnn.svg">
</div> </div>
<!--
- fully connected layers of a neural network
- Such that PIM is effective, workload must be memory-bound
-->
--- ---
preload: false preload: false
clicks: 1 clicks: 1
@@ -45,10 +40,6 @@ clicks: 1
</div> </div>
</Transform> </Transform>
<!--
- filter matrix is reused
-->
--- ---
## Processing-in-Memory ## Processing-in-Memory
@@ -58,19 +49,24 @@ clicks: 1
<br> <br>
<br> <br>
<br> <br>
<br>
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div> <div>
### Suitable candidates for PIM: ### Suitable candidates for PIM:
<br>
- Fully connected layers in multilayer perceptrons (MLPs) - Fully connected layers in multilayer perceptrons (MLPs)
- Layers in recurrent neural networks (RNNs) - Layers in recurrent neural networks (RNNs)
</div> </div>
<div> <div>
### Unsuitable candidates for PIM: ### Less suitable candidates for PIM:
<br>
- Convolutional neural networks (CNNs) - Convolutional neural networks (CNNs)
</div> </div>
@@ -175,7 +171,7 @@ To summarize...
--- ---
## Processing-in-Memory ## Processing-in-Memory
### Samsung's PIM-HBM ### Samsung's PIM-HBM | Processing Unit
<hr/> <hr/>
<br> <br>
@@ -183,9 +179,14 @@ To summarize...
- Two 16-wide 16-bit FPUs - Two 16-wide 16-bit FPUs
- Register files and control unit - Register files and control unit
<div class="flex justify-center items-center"> <br>
<img src="/pu.svg">
</div> #### 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> <Footnotes separator>
<Footnote> <Footnote>
@@ -206,15 +207,27 @@ To summarize...
--> -->
--- ---
layout: figure
figureUrl: /gemv.svg ## Processing-in-Memory
figureCaption: Procedure to perform a (128×8)×(128) GEMV operation ### 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 ## Processing-in-Memory
### Samsung's PIM-HBM ### Samsung's PIM-HBM | GEMV Operation
<hr/> <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> <Footnotes separator>
<Footnote> <Footnote>
Lee et al. „Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology: Industrial Product“, 2021. Lee et al. „Hardware Architecture and Software Stack for PIM Based on Commercial DRAM Technology: Industrial Product“, 2021.
@@ -228,20 +241,6 @@ figureCaption: Procedure to perform a (128×8)×(128) GEMV operation
- partial sum, reduced by host - partial sum, reduced by host
--> -->
---
layout: figure
figureUrl: /layout.svg
figureCaption: Mapping of the weight matrix onto the memory banks
---
## Processing-in-Memory
### Samsung's PIM-HBM
<hr/>
<!--
- Data layout in program and address mapping must match
-->
--- ---
## Processing-in-Memory ## Processing-in-Memory
@@ -253,8 +252,8 @@ figureCaption: Mapping of the weight matrix onto the memory banks
<br> <br>
<br> <br>
- Simulations are needed to analyze the performance gains of PIM - To analyze the performance gains of PIM, simulations are needed
- Research should not only focus on hardware but also explore the software side - Research should not only focus on hardware but also explore the programmability
<br> <br>

View File

@@ -59,18 +59,22 @@ Operand Dimensions
- Generic ARM system - Generic ARM system
- Infinite compute system - Infinite compute system
- unrealistic frequency of 100 GHz
- completely memory bound - completely memory bound
- lower bound of possible speedup
</div> </div>
<div> <div>
<br>
#### Two real GPUs using HBM2: #### Two real GPUs using HBM2:
<br> <br>
- AMD RX Vega 56 - AMD RX Vega 56
- NVIDIA V100 - NVIDIA Tesla V100
</div> </div>
</div> </div>