https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Cannon%27s_algorithm Cannon's algorithm - Revision history 2025-06-05T06:12:11Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.3 https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1292012080&oldid=prev OAbot: Open access bot: url-access updated in citation with #oabot. 2025-05-24T18:18:37Z <p><a href="/wiki/Wikipedia:OABOT" class="mw-redirect" title="Wikipedia:OABOT">Open access bot</a>: url-access updated in citation with #oabot.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 18:18, 24 May 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 6:</td> <td colspan="2" class="diff-lineno">Line 6:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;{{cite journal |first1=Robert A. |last1=van de Geijn |first2=Jerrell |last2=Watts |title=SUMMA: scalable universal matrix multiplication algorithm |journal=Concurrency: Practice and Experience |volume=9 |issue=4 |pages=255–274 |date=April 1997 |doi= 10.1002/(SICI)1096-9128(199704)9:4&lt;255::AID-CPE250&gt;3.0.CO;2-2|url=http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;{{cite journal |first1=Robert A. |last1=van de Geijn |first2=Jerrell |last2=Watts |title=SUMMA: scalable universal matrix multiplication algorithm |journal=Concurrency: Practice and Experience |volume=9 |issue=4 |pages=255–274 |date=April 1997 |doi= 10.1002/(SICI)1096-9128(199704)9:4&lt;255::AID-CPE250&gt;3.0.CO;2-2|url=http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract<ins style="font-weight: bold; text-decoration: none;">|url-access=subscription </ins>}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>is a more practical algorithm that requires less workspace and overcomes the need for a square 2D grid. It is used by the [[ScaLAPACK]], [[PLAPACK]], and [http://code.google.com/p/elemental/ Elemental] libraries.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>is a more practical algorithm that requires less workspace and overcomes the need for a square 2D grid. It is used by the [[ScaLAPACK]], [[PLAPACK]], and [http://code.google.com/p/elemental/ Elemental] libraries.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> OAbot https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1270154755&oldid=prev Citation bot: Altered chapter-url. URLs might have been anonymized. Add: archive-date, archive-url. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Distributed algorithms | #UCB_Category 24/41 2025-01-18T05:02:58Z <p>Altered chapter-url. URLs might have been anonymized. Add: archive-date, archive-url. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this bot</a>. <a href="/wiki/Wikipedia:DBUG" class="mw-redirect" title="Wikipedia:DBUG">Report bugs</a>. | Suggested by Dominic3203 | <a href="/wiki/Category:Distributed_algorithms" title="Category:Distributed algorithms">Category:Distributed algorithms</a> | #UCB_Category 24/41</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 05:02, 18 January 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Algorithm for matrix multiplication}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Algorithm for matrix multiplication}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In [[computer science]], '''Cannon's algorithm''' is a [[distributed algorithm|distributed]] [[algorithm for matrix multiplication]] for two-dimensional [[Mesh networking|meshes]] first described in 1969 by [[Lynn Elliot Cannon]].&lt;ref&gt;{{cite thesis |first=Lynn Elliot |last=Cannon |title=A cellular computer to implement the Kalman Filter Algorithm |date=14 July 1969 |type=PhD |publisher=Montana State University |url=https://scholarworks.montana.edu/bitstreams/643669d9-055d-4345-a467-41ad612599c8/download}}&lt;/ref&gt;&lt;ref name="stanfordpaper"&gt;{{cite <del style="font-weight: bold; text-decoration: none;">techreport</del> |last=Gupta |first=H. |last2=Sadayappan |first2=P. |title=Communication Efficient Matrix-Multiplication on Hypercubes |date=1994 |publisher=Stanford Infolab |url=http://ilpubs.stanford.edu:8090/59/}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In [[computer science]], '''Cannon's algorithm''' is a [[distributed algorithm|distributed]] [[algorithm for matrix multiplication]] for two-dimensional [[Mesh networking|meshes]] first described in 1969 by [[Lynn Elliot Cannon]].&lt;ref&gt;{{cite thesis |first=Lynn Elliot |last=Cannon |title=A cellular computer to implement the Kalman Filter Algorithm |date=14 July 1969 |type=PhD |publisher=Montana State University |url=https://scholarworks.montana.edu/bitstreams/643669d9-055d-4345-a467-41ad612599c8/download}}&lt;/ref&gt;&lt;ref name="stanfordpaper"&gt;{{cite <ins style="font-weight: bold; text-decoration: none;">tech report</ins> |last=Gupta |first=H. |last2=Sadayappan |first2=P. |title=Communication Efficient Matrix-Multiplication on Hypercubes |date=1994 |publisher=Stanford Infolab |url=http://ilpubs.stanford.edu:8090/59/}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;{{cite book |chapter=4.2 Matrix Multiplication on a Distributed Memory Machine |title=Numerical Linear Algebra |publisher=Computational Science Education Project |date=1991–1995 |chapter-url=https://web.archive.org/web/20180401075129/https://www.phy.ornl.gov/csep/la/node6.html}}&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;{{cite thesis |first=Jean-François |last=Pineau |title=Communication-aware scheduling on heterogeneous master-worker platforms |date=October 2010 |type=PhD |publisher=Ecole normale supérieure de lyon |url=https://tel.archives-ouvertes.fr/tel-00530131/document |id=tel-00530131}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;{{cite book |chapter=4.2 Matrix Multiplication on a Distributed Memory Machine |title=Numerical Linear Algebra |publisher=Computational Science Education Project |date=1991–1995 |chapter<ins style="font-weight: bold; text-decoration: none;">-url=https://www.phy.ornl.gov/csep/la/node6.html|archive</ins>-url=https://web.archive.org/web/20180401075129/https://www.phy.ornl.gov/csep/la/node6.html<ins style="font-weight: bold; text-decoration: none;"> |archive-date=1 April 2018 </ins>}}&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;{{cite thesis |first=Jean-François |last=Pineau |title=Communication-aware scheduling on heterogeneous master-worker platforms |date=October 2010 |type=PhD |publisher=Ecole normale supérieure de lyon |url=https://tel.archives-ouvertes.fr/tel-00530131/document |id=tel-00530131}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> </tr> </table> Citation bot https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1268914271&oldid=prev RDBrown: →cite thesis, web etc | Alter: doi, url. URLs might have been anonymized. Add: archive-date, archive-url, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this tool. Report bugs. | #UCB_Gadget | Alter: chapter-url, doi, url. URLs might have been anonymized. Add: archive-date, archive-url, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this tool. [[:en:WP:DBU... 2025-01-12T04:12:37Z <p>→cite thesis, web etc | Alter: doi, url. URLs might have been anonymized. Add: archive-date, archive-url, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this tool</a>. <a href="/wiki/Wikipedia:DBUG" class="mw-redirect" title="Wikipedia:DBUG">Report bugs</a>. | #UCB_Gadget | Alter: chapter-url, doi, url. URLs might have been anonymized. Add: archive-date, archive-url, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this tool</a>. [[:en:WP:DBU...</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 04:12, 12 January 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Algorithm for matrix multiplication}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Algorithm for matrix multiplication}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In [[computer science]], '''Cannon's algorithm''' is a [[distributed algorithm|distributed]] [[algorithm for matrix multiplication]] for two-dimensional [[Mesh networking|meshes]] first described in 1969 by [[Lynn Elliot Cannon]].&lt;ref&gt;Lynn Elliot Cannon<del style="font-weight: bold; text-decoration: none;">,</del> <del style="font-weight: bold; text-decoration: none;">''[http://portal.acm.org/citation.cfm?coll</del>=<del style="font-weight: bold; text-decoration: none;">GUIDE&amp;dl=GUIDE&amp;id=905686 </del>A cellular computer to implement the Kalman Filter Algorithm<del style="font-weight: bold; text-decoration: none;">]'',</del> <del style="font-weight: bold; text-decoration: none;">Technical</del> <del style="font-weight: bold; text-decoration: none;">report,</del> <del style="font-weight: bold; text-decoration: none;">Ph.D.</del> <del style="font-weight: bold; text-decoration: none;">Thesis,</del> Montana State University<del style="font-weight: bold; text-decoration: none;">,</del> <del style="font-weight: bold; text-decoration: none;">14 July 1969</del>.&lt;/ref&gt;&lt;ref name="stanfordpaper"&gt;<del style="font-weight: bold; text-decoration: none;">[http://dbpubs.stanford.edu:8090/pub/1994-25</del> Gupta<del style="font-weight: bold; text-decoration: none;">,</del> H.<del style="font-weight: bold; text-decoration: none;">;</del> Sadayappan<del style="font-weight: bold; text-decoration: none;">,</del> P.<del style="font-weight: bold; text-decoration: none;">:</del> Communication Efficient Matrix-Multiplication on Hypercubes<del style="font-weight: bold; text-decoration: none;">],</del> <del style="font-weight: bold; text-decoration: none;">dbpubs</del>.stanford.edu&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In [[computer science]], '''Cannon's algorithm''' is a [[distributed algorithm|distributed]] [[algorithm for matrix multiplication]] for two-dimensional [[Mesh networking|meshes]] first described in 1969 by [[Lynn Elliot Cannon]].&lt;ref&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite thesis |first=</ins>Lynn Elliot <ins style="font-weight: bold; text-decoration: none;">|last=</ins>Cannon <ins style="font-weight: bold; text-decoration: none;">|title</ins>=A cellular computer to implement the Kalman Filter Algorithm <ins style="font-weight: bold; text-decoration: none;">|date=14</ins> <ins style="font-weight: bold; text-decoration: none;">July</ins> <ins style="font-weight: bold; text-decoration: none;">1969</ins> <ins style="font-weight: bold; text-decoration: none;">|type=PhD</ins> <ins style="font-weight: bold; text-decoration: none;">|publisher=</ins>Montana State University <ins style="font-weight: bold; text-decoration: none;">|url=https://scholarworks</ins>.<ins style="font-weight: bold; text-decoration: none;">montana.edu/bitstreams/643669d9-055d-4345-a467-41ad612599c8/download}}</ins>&lt;/ref&gt;&lt;ref name="stanfordpaper"&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite</ins> <ins style="font-weight: bold; text-decoration: none;">techreport |last=</ins>Gupta <ins style="font-weight: bold; text-decoration: none;">|first=</ins>H. <ins style="font-weight: bold; text-decoration: none;">|last2=</ins>Sadayappan <ins style="font-weight: bold; text-decoration: none;">|first2=</ins>P. <ins style="font-weight: bold; text-decoration: none;">|title=</ins>Communication Efficient Matrix-Multiplication on Hypercubes <ins style="font-weight: bold; text-decoration: none;">|date=1994 |publisher=Stanford Infolab |url=http://ilpubs</ins>.stanford.edu<ins style="font-weight: bold; text-decoration: none;">:8090/59/}}</ins>&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;<del style="font-weight: bold; text-decoration: none;">[http://www.phy.ornl.gov/csep/la/node6.html</del> 4.2 Matrix Multiplication on a Distributed Memory Machine<del style="font-weight: bold; text-decoration: none;">],</del> www.phy.ornl.gov&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;Jean-François Pineau<del style="font-weight: bold; text-decoration: none;">, [https://tel.archives-ouvertes.fr/tel-00530131/document</del> Communication-aware scheduling on heterogeneous master-worker platforms<del style="font-weight: bold; text-decoration: none;">],</del> PhD <del style="font-weight: bold; text-decoration: none;">thesis,</del> <del style="font-weight: bold; text-decoration: none;">October</del> <del style="font-weight: bold; text-decoration: none;">2010</del>.&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite</ins> <ins style="font-weight: bold; text-decoration: none;">book |chapter=</ins>4.2 Matrix Multiplication on a Distributed Memory Machine <ins style="font-weight: bold; text-decoration: none;">|title=Numerical Linear Algebra |publisher=Computational Science Education Project |date=1991–1995 |chapter-url=https://web.archive.org/web/20180401075129/https://</ins>www.phy.ornl.gov<ins style="font-weight: bold; text-decoration: none;">/csep/la/node6.html}}</ins>&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite thesis |first=</ins>Jean-François <ins style="font-weight: bold; text-decoration: none;">|last=</ins>Pineau <ins style="font-weight: bold; text-decoration: none;">|title=</ins>Communication-aware scheduling on heterogeneous master-worker platforms <ins style="font-weight: bold; text-decoration: none;">|date=October 2010 |type=</ins>PhD <ins style="font-weight: bold; text-decoration: none;">|publisher=Ecole</ins> <ins style="font-weight: bold; text-decoration: none;">normale</ins> <ins style="font-weight: bold; text-decoration: none;">supérieure de lyon |url=https://tel</ins>.<ins style="font-weight: bold; text-decoration: none;">archives-ouvertes.fr/tel-00530131/document |id=tel-00530131}}</ins>&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;Robert A. van de Geijn <del style="font-weight: bold; text-decoration: none;">and </del>Jerrell Watts<del style="font-weight: bold; text-decoration: none;">,</del> <del style="font-weight: bold; text-decoration: none;">[</del>http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract<del style="font-weight: bold; text-decoration: none;"> SUMMA: scalable universal matrix multiplication algorithm], Concurrency: Practice and Experience. Volume 9, Issue 4, pages 255–274, April 1997.</del>&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite journal |first1=</ins>Robert A. <ins style="font-weight: bold; text-decoration: none;">|last1=</ins>van de Geijn <ins style="font-weight: bold; text-decoration: none;">|first2=</ins>Jerrell <ins style="font-weight: bold; text-decoration: none;">|last2=</ins>Watts <ins style="font-weight: bold; text-decoration: none;">|title=SUMMA: scalable universal matrix multiplication algorithm |journal=Concurrency: Practice and Experience |volume=9 |issue=4 |pages=255–274 |date=April 1997 |doi= 10.1002/(SICI)1096-9128(199704)9:4&lt;255::AID-CPE250&gt;3.0.CO;2-2|url=</ins>http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract<ins style="font-weight: bold; text-decoration: none;">}}</ins>&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>is a more practical algorithm that requires less workspace and overcomes the need for a square 2D grid. It is used by the [[ScaLAPACK]], [[PLAPACK]], and [http://code.google.com/p/elemental/ Elemental] libraries.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>is a more practical algorithm that requires less workspace and overcomes the need for a square 2D grid. It is used by the [[ScaLAPACK]], [[PLAPACK]], and [http://code.google.com/p/elemental/ Elemental] libraries.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 51:</td> <td colspan="2" class="diff-lineno">Line 51:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== References ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== References ==</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{reflist}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>&lt;references/&gt;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== External links ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== External links ==</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{refbegin}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.cs.berkeley.edu/~demmel/cs267/lecture11/lecture11.html Lecture at Berkeley]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*{{cite web |first=J. |last=Demmel |title=Lecture 9: Parallel Matrix Multiplication |date=1996 |work=CS267 Applications of Parallel Computers |publisher=U.C. Berkeley |url=http://www.cs.berkeley.edu/~demmel/cs267/lecture11/lecture11.html}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [https://web.archive.org/web/20070703035731/http://www.cs.mu.oz.au/498/notes/node30.html mu.oz.au] </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*{{cite web |first=Aaron |last=Harwood |title=Matrix multiplication §Cannon's algorithm |date=2003 |work=433-498 Networks and Parallel Processing Complexity |publisher=Melbourne University |url=http://www.cs.mu.oz.au/498/notes/node30.html |archive-url=https://web.archive.org/web/20070703035731/http://www.cs.mu.oz.au/498/notes/node30.html |archive-date=3 July 2007 }} </div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{refend}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Numerical linear algebra}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Numerical linear algebra}}</div></td> </tr> </table> RDBrown https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1183933678&oldid=prev LachlanA: /* Algorithm overview */ p_ij does not initially have a_ij and b_ij 2023-11-07T10:40:11Z <p><span class="autocomment">Algorithm overview: </span> p_ij does not initially have a_ij and b_ij</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:40, 7 November 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 11:</td> <td colspan="2" class="diff-lineno">Line 11:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Algorithm overview==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Algorithm overview==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>When multiplying two ''n''×''n'' matrices A and B, we need ''n''×''n'' processing nodes p arranged in a 2D grid<del style="font-weight: bold; text-decoration: none;">. Initially p&lt;sub&gt;i,j&lt;/sub&gt; is responsible for a&lt;sub&gt;i,j&lt;/sub&gt; and b&lt;sub&gt;i,j&lt;/sub&gt;</del>.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>When multiplying two ''n''×''n'' matrices A and B, we need ''n''×''n'' processing nodes p arranged in a 2D grid.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> // PE(i , j)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> // PE(i , j)</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> k := (i + j) mod N;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> k := (i + j) mod N;</div></td> </tr> </table> LachlanA https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1183933475&oldid=prev LachlanA: No longer a stub 2023-11-07T10:37:44Z <p>No longer a stub</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:37, 7 November 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 63:</td> <td colspan="2" class="diff-lineno">Line 63:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Matrix multiplication algorithms]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Matrix multiplication algorithms]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Mesh networking]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Mesh networking]]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{{mathapplied-stub}}</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> </table> LachlanA https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1180068284&oldid=prev 14.139.181.225: Undid revision 1180068193 by 14.139.181.225 (talk) 2023-10-14T08:55:53Z <p>Undid revision 1180068193 by <a href="/wiki/Special:Contributions/14.139.181.225" title="Special:Contributions/14.139.181.225">14.139.181.225</a> (<a href="/wiki/User_talk:14.139.181.225" title="User talk:14.139.181.225">talk</a>)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 08:55, 14 October 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 4:</td> <td colspan="2" class="diff-lineno">Line 4:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;[http://www.phy.ornl.gov/csep/la/node6.html 4.2 Matrix Multiplication on a Distributed Memory Machine], www.phy.ornl.gov&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;Jean-François Pineau, [https://tel.archives-ouvertes.fr/tel-00530131/document Communication-aware scheduling on heterogeneous master-worker platforms], PhD thesis, October 2010.&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;[http://www.phy.ornl.gov/csep/la/node6.html 4.2 Matrix Multiplication on a Distributed Memory Machine], www.phy.ornl.gov&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;Jean-François Pineau, [https://tel.archives-ouvertes.fr/tel-00530131/document Communication-aware scheduling on heterogeneous master-worker platforms], PhD thesis, October 2010.&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Poda dei</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;Robert A. van de Geijn and Jerrell Watts, [http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract SUMMA: scalable universal matrix multiplication algorithm], Concurrency: Practice and Experience. Volume 9, Issue 4, pages 255–274, April 1997.&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;Robert A. van de Geijn and Jerrell Watts, [http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract SUMMA: scalable universal matrix multiplication algorithm], Concurrency: Practice and Experience. Volume 9, Issue 4, pages 255–274, April 1997.&lt;/ref&gt;</div></td> </tr> </table> 14.139.181.225 https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1180068193&oldid=prev 14.139.181.225 at 08:54, 14 October 2023 2023-10-14T08:54:36Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 08:54, 14 October 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 4:</td> <td colspan="2" class="diff-lineno">Line 4:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;[http://www.phy.ornl.gov/csep/la/node6.html 4.2 Matrix Multiplication on a Distributed Memory Machine], www.phy.ornl.gov&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;Jean-François Pineau, [https://tel.archives-ouvertes.fr/tel-00530131/document Communication-aware scheduling on heterogeneous master-worker platforms], PhD thesis, October 2010.&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is especially suitable for computers laid out in an ''N'' × ''N'' mesh.&lt;ref name="ornl.gov"&gt;[http://www.phy.ornl.gov/csep/la/node6.html 4.2 Matrix Multiplication on a Distributed Memory Machine], www.phy.ornl.gov&lt;/ref&gt; While Cannon's algorithm works well in homogeneous 2D grids, extending it to heterogeneous 2D grids has been shown to be difficult.&lt;ref name="lyonfr"&gt;Jean-François Pineau, [https://tel.archives-ouvertes.fr/tel-00530131/document Communication-aware scheduling on heterogeneous master-worker platforms], PhD thesis, October 2010.&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Poda dei</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The main advantage of the algorithm is that its storage requirements remain constant and are independent of the number of processors.&lt;ref name="stanfordpaper"/&gt;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;Robert A. van de Geijn and Jerrell Watts, [http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract SUMMA: scalable universal matrix multiplication algorithm], Concurrency: Practice and Experience. Volume 9, Issue 4, pages 255–274, April 1997.&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The Scalable Universal Matrix Multiplication Algorithm (SUMMA)&lt;ref&gt;Robert A. van de Geijn and Jerrell Watts, [http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1096-9128(199704)9:4%3C255::AID-CPE250%3E3.0.CO;2-2/abstract SUMMA: scalable universal matrix multiplication algorithm], Concurrency: Practice and Experience. Volume 9, Issue 4, pages 255–274, April 1997.&lt;/ref&gt;</div></td> </tr> </table> 14.139.181.225 https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1085446416&oldid=prev Karmanka: #suggestededit-add 1.0 2022-04-30T16:06:51Z <p>#suggestededit-add 1.0</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 16:06, 30 April 2022</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Algorithm for matrix multiplication}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[computer science]], '''Cannon's algorithm''' is a [[distributed algorithm|distributed]] [[algorithm for matrix multiplication]] for two-dimensional [[Mesh networking|meshes]] first described in 1969 by [[Lynn Elliot Cannon]].&lt;ref&gt;Lynn Elliot Cannon, ''[http://portal.acm.org/citation.cfm?coll=GUIDE&amp;dl=GUIDE&amp;id=905686 A cellular computer to implement the Kalman Filter Algorithm]'', Technical report, Ph.D. Thesis, Montana State University, 14 July 1969.&lt;/ref&gt;&lt;ref name="stanfordpaper"&gt;[http://dbpubs.stanford.edu:8090/pub/1994-25 Gupta, H.; Sadayappan, P.: Communication Efficient Matrix-Multiplication on Hypercubes], dbpubs.stanford.edu&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[computer science]], '''Cannon's algorithm''' is a [[distributed algorithm|distributed]] [[algorithm for matrix multiplication]] for two-dimensional [[Mesh networking|meshes]] first described in 1969 by [[Lynn Elliot Cannon]].&lt;ref&gt;Lynn Elliot Cannon, ''[http://portal.acm.org/citation.cfm?coll=GUIDE&amp;dl=GUIDE&amp;id=905686 A cellular computer to implement the Kalman Filter Algorithm]'', Technical report, Ph.D. Thesis, Montana State University, 14 July 1969.&lt;/ref&gt;&lt;ref name="stanfordpaper"&gt;[http://dbpubs.stanford.edu:8090/pub/1994-25 Gupta, H.; Sadayappan, P.: Communication Efficient Matrix-Multiplication on Hypercubes], dbpubs.stanford.edu&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Karmanka https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1020536525&oldid=prev WeekdayWarrior: /* Generalisation */ Reverts incorrect Hadamard Product edits 2021-04-29T16:34:59Z <p><span class="autocomment">Generalisation: </span> Reverts incorrect Hadamard Product edits</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 16:34, 29 April 2021</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 39:</td> <td colspan="2" class="diff-lineno">Line 39:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Generalisation ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Generalisation ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In practice we have much fewer processors than the matrix elements. We can replace the matrix elements with submatrices, so that every processor processes more values. The scalar multiplication and addition <del style="font-weight: bold; text-decoration: none;">are</del> <del style="font-weight: bold; text-decoration: none;">replaced</del> <del style="font-weight: bold; text-decoration: none;">by</del> <del style="font-weight: bold; text-decoration: none;">adding the [[Hadamard product (matrices) | Hadamard product]] of the submatrices of A</del> and <del style="font-weight: bold; text-decoration: none;">B to matrix C</del>. The width and height of the submatrices will be &lt;math&gt;N=n/\sqrt {p}&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In practice we have much fewer processors than the matrix elements. We can replace the matrix elements with submatrices, so that every processor processes more values. The scalar multiplication and addition <ins style="font-weight: bold; text-decoration: none;">become</ins> <ins style="font-weight: bold; text-decoration: none;">sequential</ins> <ins style="font-weight: bold; text-decoration: none;">matrix</ins> <ins style="font-weight: bold; text-decoration: none;">multiplication</ins> and <ins style="font-weight: bold; text-decoration: none;">addition</ins>. The width and height of the submatrices will be &lt;math&gt;N=n/\sqrt {p}&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The runtime of the algorithm is &lt;math&gt;T\mathcal{(n, p)} = T_{coll} (n/N, p) + N*T_{seq}(n/N) + 2(N - 1)(T_{start} + T_{byte}(n/ N)^2)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The runtime of the algorithm is &lt;math&gt;T\mathcal{(n, p)} = T_{coll} (n/N, p) + N*T_{seq}(n/N) + 2(N - 1)(T_{start} + T_{byte}(n/ N)^2)</div></td> </tr> </table> WeekdayWarrior https://en.wikipedia.org/w/index.php?title=Cannon%27s_algorithm&diff=1019407288&oldid=prev 47.215.198.231: /* Generalisation */ disambiguates Hadamard Product link 2021-04-23T04:42:31Z <p><span class="autocomment">Generalisation: </span> disambiguates Hadamard Product link</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 04:42, 23 April 2021</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 39:</td> <td colspan="2" class="diff-lineno">Line 39:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Generalisation ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Generalisation ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In practice we have much fewer processors than the matrix elements. We can replace the matrix elements with submatrices, so that every processor processes more values. The scalar multiplication and addition are replaced by adding the [[Hadamard product]] of the submatrices of A and B to matrix C. The width and height of the submatrices will be &lt;math&gt;N=n/\sqrt {p}&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In practice we have much fewer processors than the matrix elements. We can replace the matrix elements with submatrices, so that every processor processes more values. The scalar multiplication and addition are replaced by adding the [[<ins style="font-weight: bold; text-decoration: none;">Hadamard product (matrices) | </ins>Hadamard product]] of the submatrices of A and B to matrix C. The width and height of the submatrices will be &lt;math&gt;N=n/\sqrt {p}&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The runtime of the algorithm is &lt;math&gt;T\mathcal{(n, p)} = T_{coll} (n/N, p) + N*T_{seq}(n/N) + 2(N - 1)(T_{start} + T_{byte}(n/ N)^2)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The runtime of the algorithm is &lt;math&gt;T\mathcal{(n, p)} = T_{coll} (n/N, p) + N*T_{seq}(n/N) + 2(N - 1)(T_{start} + T_{byte}(n/ N)^2)</div></td> </tr> </table> 47.215.198.231