Compare commits
10 Commits
a7d5b77dcd
...
9068c94464
| Author | SHA1 | Date | |
|---|---|---|---|
| 9068c94464 | |||
| a0ad7ad174 | |||
| d6cd6a67f9 | |||
| 6acaf838be | |||
| d634f97fb2 | |||
| 3d15758c82 | |||
| 56226ebf41 | |||
| 39ae2f6969 | |||
| 1e5256dc99 | |||
| b38406a36f |
109
drawings/.$gemv.drawio.bkp
Normal 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="<font color="#000000">$$\begin{pmatrix}<br style="font-size: 24px;"> w_{1,1} &amp; w_{1,2} &amp; \cdots &amp; w_{1,n} \\<br style="font-size: 24px;"> w_{2,1} &amp; w_{2,2} &amp; \cdots &amp; w_{2,n} \\<br style="font-size: 24px;"> \vdots &amp; \vdots &amp; \ddots &amp; \vdots \\<br style="font-size: 24px;"> w_{4,1} &amp; w_{m,2} &amp; \cdots &amp; w_{m,n}<br style="font-size: 24px;"> \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$=$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$</font>" 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="<span style="font-size: 24px;"><font color="#5c79a3">$$o_m$$</font></span>" 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="<span style="font-size: 24px;"><font color="#ae4132">$$W_{m,n}$$</font></span>" 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="<font color="#60854c" style="font-size: 24px;">$$i_n$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}o_{0,a}+o_{0,b}\\ o_{1,a}+o_{1,b}&nbsp;\\ \vdots \\ o_{m,a}+o_{m,b}&nbsp;\end{pmatrix}$$</font>" 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="<font color="#000000">$$\begin{pmatrix}<br style="font-size: 24px;"> w_{1,1} &amp; w_{1,2} &amp; \cdots &amp; w_{1,n} \\<br style="font-size: 24px;"> w_{2,1} &amp; w_{2,2} &amp; \cdots &amp; w_{2,n} \\<br style="font-size: 24px;"> \vdots &amp; \vdots &amp; \ddots &amp; \vdots \\<br style="font-size: 24px;"> w_{4,1} &amp; w_{m,2} &amp; \cdots &amp; w_{m,n}<br style="font-size: 24px;"> \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$=$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$=$$</font>" 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="<span style="font-size: 24px;"><font color="#5c79a3">$$o_m$$</font></span>" 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="<span style="font-size: 24px;"><font color="#ae4132">$$W_{m,n}$$</font></span>" 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="<font color="#60854c" style="font-size: 24px;">$$i_n$$</font>" 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
@@ -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="<font color="#b75450">Filter</font>" 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
@@ -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} =<br style="font-size: 24px;"> \begin{pmatrix}<br style="font-size: 24px;"> w_{1,1} &amp; w_{1,2} &amp; \cdots &amp; w_{1,n} \\<br style="font-size: 24px;"> w_{2,1} &amp; w_{2,2} &amp; \cdots &amp; w_{2,n} \\<br style="font-size: 24px;"> \vdots &amp; \vdots &amp; \ddots &amp; \vdots \\<br style="font-size: 24px;"> w_{m,1} &amp; w_{m,2} &amp; \cdots &amp; w_{m,n}<br style="font-size: 24px;"> \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="<span style="font-size: 24px;"><font color="#5c79a3">$$o_m$$</font></span>" 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="<span style="font-size: 24px;"><font color="#ae4132">$$W_{m,n}$$</font></span>" 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="<font color="#60854c" style="font-size: 24px;">$$i_n$$</font>" 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
@@ -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="<font color="#000000">$$\begin{pmatrix}<br style="font-size: 24px;"> w_{1,1} &amp; w_{1,2} &amp; \cdots &amp; w_{1,n} \\<br style="font-size: 24px;"> w_{2,1} &amp; w_{2,2} &amp; \cdots &amp; w_{2,n} \\<br style="font-size: 24px;"> \vdots &amp; \vdots &amp; \ddots &amp; \vdots \\<br style="font-size: 24px;"> w_{4,1} &amp; w_{m,2} &amp; \cdots &amp; w_{m,n}<br style="font-size: 24px;"> \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$=$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$</font>" 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="<span style="font-size: 24px;"><font color="#5c79a3">$$o_m$$</font></span>" 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="<span style="font-size: 24px;"><font color="#ae4132">$$W_{m,n}$$</font></span>" 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="<font color="#60854c" style="font-size: 24px;">$$i_n$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}o_{0,a}+o_{0,b}\\ o_{1,a}+o_{1,b}&nbsp;\\ \vdots \\ o_{m,a}+o_{m,b}&nbsp;\end{pmatrix}$$</font>" 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="<font color="#000000">$$\begin{pmatrix}<br style="font-size: 24px;"> w_{1,1} &amp; w_{1,2} &amp; \cdots &amp; w_{1,n} \\<br style="font-size: 24px;"> w_{2,1} &amp; w_{2,2} &amp; \cdots &amp; w_{2,n} \\<br style="font-size: 24px;"> \vdots &amp; \vdots &amp; \ddots &amp; \vdots \\<br style="font-size: 24px;"> w_{4,1} &amp; w_{m,2} &amp; \cdots &amp; w_{m,n}<br style="font-size: 24px;"> \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}i_0\\ i_1 \\ \vdots \\ i_n \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$=$$</font>" 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="<font style="font-size: 24px;">$$\begin{pmatrix}o_0\\ o_1 \\ \vdots \\ o_m \end{pmatrix}$$</font>" 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="<font style="font-size: 24px;">$$=$$</font>" 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="<span style="font-size: 24px;"><font color="#5c79a3">$$o_m$$</font></span>" 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="<span style="font-size: 24px;"><font color="#ae4132">$$W_{m,n}$$</font></span>" 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="<font color="#60854c" style="font-size: 24px;">$$i_n$$</font>" 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
@@ -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": {
|
||||
|
||||
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
98
public/cnn_filter.svg
Normal 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
|
After Width: | Height: | Size: 46 KiB |
932
public/complete_layout.svg
Normal file
|
After Width: | Height: | Size: 402 KiB |
905
public/dnn.svg
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 368 KiB |
@@ -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 |
4142
public/gemv.svg
|
Before Width: | Height: | Size: 289 KiB After Width: | Height: | Size: 352 KiB |
4876
public/gemv_0.svg
Normal file
|
After Width: | Height: | Size: 352 KiB |
4876
public/gemv_1.svg
Normal file
|
After Width: | Height: | Size: 352 KiB |
4876
public/gemv_2.svg
Normal file
|
After Width: | Height: | Size: 352 KiB |
4876
public/gemv_3.svg
Normal file
|
After Width: | Height: | Size: 352 KiB |
4878
public/gemv_4.svg
Normal file
|
After Width: | Height: | Size: 353 KiB |
2416
public/gemv_interleaved.svg
Normal file
|
After Width: | Height: | Size: 462 KiB |
1908
public/gemv_normal.svg
Normal file
|
After Width: | Height: | Size: 350 KiB |
|
Before Width: | Height: | Size: 309 KiB |
6390
public/pim_positions_0.svg
Normal file
|
After Width: | Height: | Size: 344 KiB |
6443
public/pim_positions_1.svg
Normal file
|
After Width: | Height: | Size: 346 KiB |
6443
public/pim_positions_2.svg
Normal file
|
After Width: | Height: | Size: 346 KiB |
6443
public/pim_positions_3.svg
Normal file
|
After Width: | Height: | Size: 346 KiB |
6443
public/pim_positions_4.svg
Normal file
|
After Width: | Height: | Size: 346 KiB |
@@ -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 |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 95 KiB |
353
public/speedup_inf_old.svg
Normal file
|
After Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 92 KiB |
15
slides.md
@@ -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
@@ -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
@@ -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
|
||||
@@ -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
|
||||
-->
|
||||
|
||||
@@ -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)
|
||||
-->
|
||||
|
||||
253
slides/pim.md
@@ -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-maker’s 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
|
||||
|
||||
@@ -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/>
|
||||
|
||||