<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cmp.wiki/w/index.php?action=history&amp;feed=atom&amp;title=P2P</id>
	<title>P2P - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://cmp.wiki/w/index.php?action=history&amp;feed=atom&amp;title=P2P"/>
	<link rel="alternate" type="text/html" href="https://cmp.wiki/w/index.php?title=P2P&amp;action=history"/>
	<updated>2026-10-31T17:26:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://cmp.wiki/w/index.php?title=P2P&amp;diff=465&amp;oldid=prev</id>
		<title>ImportBot: GPU-to-GPU peer-to-peer on the CMP 170HX: the mailbox path (Morrowmake/asm64 forks), the BAR1 path, the ForceP2P registry key, topology limits and verification. Discord Oct 2026. Gap-fill from #general 2026-10-24 to 10-25 (PLX 88096 P2P failure), @replacedriver47, @djpandaman, @nathang6866.</title>
		<link rel="alternate" type="text/html" href="https://cmp.wiki/w/index.php?title=P2P&amp;diff=465&amp;oldid=prev"/>
		<updated>2026-10-30T10:02:21Z</updated>

		<summary type="html">&lt;p&gt;GPU-to-GPU peer-to-peer on the CMP 170HX: the mailbox path (Morrowmake/asm64 forks), the BAR1 path, the ForceP2P registry key, topology limits and verification. Discord Oct 2026. Gap-fill from #general 2026-10-24 to 10-25 (PLX 88096 P2P failure), @replacedriver47, @djpandaman, @nathang6866.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:02, 30 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l65&quot;&gt;Line 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 65:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;applies even on a single-switch setup. Measured cross-root P2P latency about 1.5 us (not through a switch). His TP2 on&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;applies even on a single-switch setup. Measured cross-root P2P latency about 1.5 us (not through a switch). His TP2 on&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;2x CMP: about 4,900 tok/s prefill at 128k (TTFT 26 s) versus about 2,500 without P2P; decode about 223 tok/s at one&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;2x CMP: about 4,900 tok/s prefill at 128k (TTFT 26 s) versus about 2,500 without P2P; decode about 223 tok/s at one&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;session, 527 tok/s aggregate at four (W4A16, MTP4). {{Source|ropuls|2026-10-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;15&lt;/del&gt;|https://discord.com/channels/1518634379604136178/1528826330454429706/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1560412308469973125&lt;/del&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;session, 527 tok/s aggregate at four (W4A16, MTP4). {{Source|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;handle=mountains1605|date=2026-10-15|link=https://discord.com/channels/1518634379604136178/1528826330454429706/1560433160364490782}}&amp;lt;br /&amp;gt;{{Source|handle=&lt;/ins&gt;ropuls|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;date=&lt;/ins&gt;2026-10-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;16&lt;/ins&gt;|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;link=&lt;/ins&gt;https://discord.com/channels/1518634379604136178/1528826330454429706/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1560593914363256965&lt;/ins&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;== Verify ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;== Verify ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l84&quot;&gt;Line 84:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 84:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Dual-socket:&amp;#039;&amp;#039;&amp;#039; P2P does not work across sockets; GPU servers hang all cards off one CPU&amp;#039;s root port. Mitigations&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Dual-socket:&amp;#039;&amp;#039;&amp;#039; P2P does not work across sockets; GPU servers hang all cards off one CPU&amp;#039;s root port. Mitigations&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   are the mailbox method or bayley&amp;#039;s kernel patch. {{Source|wakeupmbrc1|2026-10-18|https://discord.com/channels/1518634379604136178/1518692084729511967/1561407364622458943}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   are the mailbox method or bayley&amp;#039;s kernel patch. {{Source|wakeupmbrc1|2026-10-18|https://discord.com/channels/1518634379604136178/1518692084729511967/1561407364622458943}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** Measured counterexample: on an 8-card dual-EPYC Supermicro H12DSG-O-CPU, the Morrowmake P2P build on 615.71.09 passed 504 of 504 content checks including every cross-socket pair, with &amp;lt;code&amp;gt;cuDeviceCanAccessPeer&amp;lt;/code&amp;gt; 1 everywhere and 0 Xids, again after later cold cycles. {{Status|Proven}} See [[Supermicro H12DSG-O-CPU]]. {{Source|handle=darkmaniac7|date=2026-10-27|note=lab notes}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Latency reference:&amp;#039;&amp;#039;&amp;#039; about 1.4-1.7 us native (CPU root / crossbar), about 14 us through a retimer plus two&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Latency reference:&amp;#039;&amp;#039;&amp;#039; about 1.4-1.7 us native (CPU root / crossbar), about 14 us through a retimer plus two&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   switches. {{Source|markshowa|2026-10-17|https://discord.com/channels/1518634379604136178/1518692084729511967/1561013734808363029}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   switches. {{Source|markshowa|2026-10-17|https://discord.com/channels/1518634379604136178/1518692084729511967/1561013734808363029}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;PLX 88096 with a 64 GB BAR1, P2P still failing:&#039;&#039;&#039; four cards behind a PLX 88096; after MMIOH and BAR tuning two of&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  them had a 64 GB BAR1, but P2P transfers between them never completed, with Morrowmake&#039;s cmpunlocker as well. The root&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  cause is unknown. People point to PixelML&#039;s 4-card BAR1 P2P over PLX notebook as the reference, and ElectroHobo thinks&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  Morrowmake&#039;s vLLM fixes it for many people on supported hardware. Details: [[Risers and bifurcation]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  {{Source|handle=replacedriver47|date=2026-10-24|link=https://discord.com/channels/1518634379604136178/1518692084729511967/1563629971082186753}}&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  {{Source|handle=djpandaman|date=2026-10-24|link=https://discord.com/channels/1518634379604136178/1518692084729511967/1563629622673936384|repo=https://github.com/PixelML/club-170hx}}&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  {{Source|handle=nathang6866|date=2026-10-25|link=https://discord.com/channels/1518634379604136178/1518692084729511967/1564023832107417662}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* P2P across different root complexes on a Threadripper board (older asm64 fork) looked right but no traffic arrived;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* P2P across different root complexes on a Threadripper board (older asm64 fork) looked right but no traffic arrived;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   mrpandagod&amp;#039;s advice is to build a local P2P patch for the specific setup.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   mrpandagod&amp;#039;s advice is to build a local P2P patch for the specific setup.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l95&quot;&gt;Line 95:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 103:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* On boards that cannot route P2P (ACS, no IOMMU passthrough, separate roots), forcing it times out instead of staging&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* On boards that cannot route P2P (ACS, no IOMMU passthrough, separate roots), forcing it times out instead of staging&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   through system memory, which is why it is opt-in.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;   through system memory, which is why it is opt-in.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* {{Status|Contested}} &#039;&#039;&#039;Does P2P make inference faster?&#039;&#039;&#039; It depends on host and model; A/B it per recipe. In the order posted:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** ElectroHobo: on a Broadwell host with one PLX switch, MiMo V2.6 Flash TP4 is about 40% slower with P2P off. {{Source|handle=nathang6866|date=2026-10-18|link=https://discord.com/channels/1518634379604136178/1528826330454429706/1561264547455569952|repo=https://github.com/ElectroHobo/mimo-v26-flash-cmp170hx-recipe}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** PixelML: on four cards behind two PLX switches on a Broadwell host, P2P helped Qwen3.8-27B TP2 decode (+11%) but hurt GLM 5.3 Flash TP4 (-20 to -26% for one user, -38 to -48% at eight users); they run TP4 with P2P off. Their notes cite Morrowmake measuring +11% from P2P on EPYC root ports. {{Source|handle=c133|date=2026-10-20|link=https://discord.com/channels/1518634379604136178/1528826330454429706/1562161732137386127|repo=https://github.com/PixelML/club-170hx}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** On an EPYC lab host, vLLM&#039;s custom all-reduce over P2P cost GLM 5.3 Flash TP4 about 40% decode but helped Qwen3.8 Flash Next TP2 by 17 to 25%. {{Source|handle=darkmaniac7|date=2026-10-28|note=lab notes}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;== Status ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;== Status ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key cmp_wiki:diff:1.41:old-368:rev-465:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>ImportBot</name></author>
	</entry>
	<entry>
		<id>https://cmp.wiki/w/index.php?title=P2P&amp;diff=368&amp;oldid=prev</id>
		<title>ImportBot: GPU-to-GPU peer-to-peer on the CMP 170HX: the mailbox path (Morrowmake/asm64 forks), the BAR1 path, the ForceP2P registry key, topology limits and verification. Discord Oct 2026.; sources: @curiouspixel, @ob88594, @seriousrising, @68x0, @ropuls, @wakeupmbrc1, @markshowa, @c133; GitHub Morrowmake/cmpunlocker</title>
		<link rel="alternate" type="text/html" href="https://cmp.wiki/w/index.php?title=P2P&amp;diff=368&amp;oldid=prev"/>
		<updated>2026-10-30T08:49:28Z</updated>

		<summary type="html">&lt;p&gt;GPU-to-GPU peer-to-peer on the CMP 170HX: the mailbox path (Morrowmake/asm64 forks), the BAR1 path, the ForceP2P registry key, topology limits and verification. Discord Oct 2026.; sources: @curiouspixel, @ob88594, @seriousrising, @68x0, @ropuls, @wakeupmbrc1, @markshowa, @c133; GitHub Morrowmake/cmpunlocker&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:49, 30 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l58&quot;&gt;Line 58:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 58:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;{{Status|warning}} These are &amp;#039;&amp;#039;&amp;#039;global&amp;#039;&amp;#039;&amp;#039; and force every NVIDIA GPU in the host to Gen2, so do not use them on a mixed&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;{{Status|warning}} These are &amp;#039;&amp;#039;&amp;#039;global&amp;#039;&amp;#039;&amp;#039; and force every NVIDIA GPU in the host to Gen2, so do not use them on a mixed&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;rig (e.g. with an RTX 4080). {{Source|68x0|2026-10-13|https://discord.com/channels/1518634379604136178/1518695289278566450/1559704654743474310}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;rig (e.g. with an RTX 4080). {{Source|68x0|2026-10-13|https://discord.com/channels/1518634379604136178/1518695289278566450/1559704654743474310}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;The gist &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;measured about 1&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5 us &lt;/del&gt;cross-root P2P latency (not through a switch). &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A longer write-up by @ropuls exists &lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gist&lt;/del&gt;, https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gist.github&lt;/del&gt;.com/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ropuls&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;d2978531ba3a1a183e70f62f3de2eb84); see Discord.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;The gist &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;([https://gist.github.com/ropuls/d2978531ba3a1a183e70f62f3de2eb84 gist.github.com/ropuls]) covers the unlock,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cross-root P2P and vLLM serving. Its key points: P2P can fail because the cmpunlocker 0011 patch sets the P2P override&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;before the PCI device id is populated, so the driver falls back to GSP caps, which report GNS for the CMP regardless of&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;topology. Check with &amp;lt;code&amp;gt;nvidia-smi topo -p2p r&amp;lt;/code&amp;gt;; if it says GNS, the &amp;lt;code&amp;gt;ForceP2P=0x11&amp;lt;/code&amp;gt; registry key&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;applies even on a single-switch setup&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Measured &lt;/ins&gt;cross-root P2P latency &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;about 1.5 us &lt;/ins&gt;(not through a switch). &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;His TP2 on&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2x CMP: about 4,900 tok/s prefill at 128k &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TTFT 26 s) versus about 2,500 without P2P; decode about 223 tok/s at one&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;session, 527 tok/s aggregate at four (W4A16&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;MTP4). {{Source|ropuls|2026-10-15|&lt;/ins&gt;https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;discord&lt;/ins&gt;.com/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;channels/1518634379604136178/1528826330454429706&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1560412308469973125}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;== Verify ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;== Verify ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key cmp_wiki:diff:1.41:old-192:rev-368:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>ImportBot</name></author>
	</entry>
	<entry>
		<id>https://cmp.wiki/w/index.php?title=P2P&amp;diff=192&amp;oldid=prev</id>
		<title>ImportBot: GPU-to-GPU peer-to-peer on the CMP 170HX: the mailbox path (Morrowmake/asm64 forks), the BAR1 path, the ForceP2P registry key, topology limits and verification. Discord Oct 2026.; sources: @curiouspixel, @ob88594, @seriousrising, @68x0, @wakeupmbrc1, @markshowa, @c133; GitHub Morrowmake/cmpunlocker</title>
		<link rel="alternate" type="text/html" href="https://cmp.wiki/w/index.php?title=P2P&amp;diff=192&amp;oldid=prev"/>
		<updated>2026-10-30T08:04:53Z</updated>

		<summary type="html">&lt;p&gt;GPU-to-GPU peer-to-peer on the CMP 170HX: the mailbox path (Morrowmake/asm64 forks), the BAR1 path, the ForceP2P registry key, topology limits and verification. Discord Oct 2026.; sources: @curiouspixel, @ob88594, @seriousrising, @68x0, @wakeupmbrc1, @markshowa, @c133; GitHub Morrowmake/cmpunlocker&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Unlock&lt;br /&gt;
|unlocks=GPU-to-GPU P2P (mailbox / BAR1)&lt;br /&gt;
|variant=both&lt;br /&gt;
|driver_version=nvidia-open 610.57.04 (measured) / 615.71.09&lt;br /&gt;
|unlock_build=Morrowmake/cmpunlocker (--p2p) or asm64-hooligan (--p2p)&lt;br /&gt;
|steps_page=P2P&lt;br /&gt;
|status=Reported&lt;br /&gt;
|tested_by=curiouspixel&lt;br /&gt;
|source=https://github.com/Morrowmake/cmpunlocker&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
GSP reports PCIe P2P unsupported on the CMP, but the GA100 mailbox P2P hardware is present. P2P matters for tensor&lt;br /&gt;
parallelism; without it, pipeline parallel is usually the better default on these PCIe-only cards. There are two paths.&lt;br /&gt;
&lt;br /&gt;
== Mailbox P2P (works on 64 MB BAR) ==&lt;br /&gt;
&lt;br /&gt;
The [[cmpunlocker forks|Morrowmake fork]]&amp;#039;s &amp;lt;code&amp;gt;--p2p&amp;lt;/code&amp;gt; and asm64&amp;#039;s &amp;lt;code&amp;gt;--p2p&amp;lt;/code&amp;gt; force the driver to&lt;br /&gt;
advertise peer access and arm the mailbox trap. This runs in a 512 KB window inside the stock 64 MB BAR1, so it needs&lt;br /&gt;
no ReBAR and no Above 4G decoding, and works where the board cannot open the 64 GB BAR.&lt;br /&gt;
{{Source|ob88594|2026-10-05|https://discord.com/channels/1518634379604136178/1518692084729511967/1556527198540922981}}&lt;br /&gt;
&lt;br /&gt;
curiouspixel&amp;#039;s P2P patch in the Morrowmake fork fixed P2P for Trust Inter and GhostInTheDatacenter on the same board.&lt;br /&gt;
{{Source|curiouspixel|2026-10-05|https://discord.com/channels/1518634379604136178/1518692084729511967/1556489123999780987}}&lt;br /&gt;
Morrowmake&amp;#039;s measured 4-card result: all 12 ordered pairs passed content checks; 16 MiB copies reached about&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;6.65 GB/s&amp;#039;&amp;#039;&amp;#039; each way (610.57.04, Gen2 x16). asm64&amp;#039;s mailbox is about 1.7 GB/s behind one switch at Gen2 x4.&lt;br /&gt;
&lt;br /&gt;
Mechanism (Morrowmake &amp;lt;code&amp;gt;p2p-unlock.patch&amp;lt;/code&amp;gt;): it forces &amp;lt;code&amp;gt;pcieP2PReadCaps/WriteCaps&amp;lt;/code&amp;gt; OK for&lt;br /&gt;
&amp;lt;code&amp;gt;0x20C2&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;0x2082&amp;lt;/code&amp;gt; only when PRI decode trap 31&amp;#039;s PLM &amp;lt;code&amp;gt;0x0012277c&amp;lt;/code&amp;gt; reads&lt;br /&gt;
&amp;lt;code&amp;gt;0xFFFFFFFF&amp;lt;/code&amp;gt;; around the mailbox setup it arms trap 31 and restores it after. The Booter change adds&lt;br /&gt;
&amp;lt;code&amp;gt;TRAP31_PLM 0x0012277c = 0xffffffff&amp;lt;/code&amp;gt;, opened only when the &amp;lt;code&amp;gt;ForceP2P&amp;lt;/code&amp;gt; registry key is set. On a&lt;br /&gt;
part whose trap PLM read &amp;lt;code&amp;gt;0xFFFFFF8F&amp;lt;/code&amp;gt; the mailbox could not be programmed and a copy silently returned 33 of&lt;br /&gt;
33.5 MB wrong (only the first 128 KiB intact), which is why the caps are forced only when the trap is writable and why&lt;br /&gt;
a content check is required.&lt;br /&gt;
&lt;br /&gt;
Install and the registry line (Morrowmake):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./install.sh --p2p --profile=8gb --no-iommu --no-passthrough   # --profile=10gb for 10 GB cards&lt;br /&gt;
# writes:&lt;br /&gt;
# options nvidia NVreg_RegistryDwords=&amp;quot;RmForceEnableGen2=1;RMPcieLinkSpeed=0x1;ForceP2P=0x11&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BAR1 P2P (needs the 64 GB BAR) ==&lt;br /&gt;
&lt;br /&gt;
The other path uses the [[Resizable BAR and BAR1 64 GB|64 GB BAR1]] (bayley&amp;#039;s research). It is a few percent faster&lt;br /&gt;
than mailbox under pipeline parallelism but needs a board that can open the big BAR. Where the board cannot, use&lt;br /&gt;
mailbox. {{Source|seriousrising|2026-10-05|https://discord.com/channels/1518634379604136178/1518692084729511967/1556499525579837481}}&lt;br /&gt;
&lt;br /&gt;
== ropuls gist (cross-root P2P + serving) ==&lt;br /&gt;
&lt;br /&gt;
68x reported higher decode/prefill after the extra modprobe parameters from ropuls&amp;#039; gist &amp;quot;2x CMP 170HX for LLM&lt;br /&gt;
inference: unlock, cross-root P2P, serving (vLLM)&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
options nvidia NVreg_RegistryDwords=&amp;quot;RmForceEnableGen2=1;RMPcieLinkSpeed=0x1;RMForceStaticBar1=1;RMPcieP2PType=1;RMForceP2PType=1;ForceP2P=0x11&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Status|warning}} These are &amp;#039;&amp;#039;&amp;#039;global&amp;#039;&amp;#039;&amp;#039; and force every NVIDIA GPU in the host to Gen2, so do not use them on a mixed&lt;br /&gt;
rig (e.g. with an RTX 4080). {{Source|68x0|2026-10-13|https://discord.com/channels/1518634379604136178/1518695289278566450/1559704654743474310}}&lt;br /&gt;
The gist measured about 1.5 us cross-root P2P latency (not through a switch). A longer write-up by @ropuls exists (the&lt;br /&gt;
gist, https://gist.github.com/ropuls/d2978531ba3a1a183e70f62f3de2eb84); see Discord.&lt;br /&gt;
&lt;br /&gt;
== Verify ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nvidia-smi topo -p2p r          # OK, not GNS&lt;br /&gt;
nvidia-smi topo -m&lt;br /&gt;
python3 tools/p2p-content-check.py   # Morrowmake: verifies the bytes actually arrive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nvidia-smi topo&amp;lt;/code&amp;gt; and advertised peer support alone do not prove the data moves; always run a content check.&lt;br /&gt;
&lt;br /&gt;
== Topology limits ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PLX switches:&amp;#039;&amp;#039;&amp;#039; many boards have MMIO problems behind a PLX, so only mailbox P2P works; in &amp;#039;&amp;#039;&amp;#039;TP&amp;#039;&amp;#039;&amp;#039; mode that&lt;br /&gt;
  mailbox P2P can throw &amp;#039;&amp;#039;&amp;#039;XID 13&amp;#039;&amp;#039;&amp;#039; and crash the inference process. Avoid PLX risers for TP, or disable P2P.&lt;br /&gt;
  {{Source|ob88594|2026-10-07|https://discord.com/channels/1518634379604136178/1518692084729511967/1557383845844615241}}&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Dual-socket:&amp;#039;&amp;#039;&amp;#039; P2P does not work across sockets; GPU servers hang all cards off one CPU&amp;#039;s root port. Mitigations&lt;br /&gt;
  are the mailbox method or bayley&amp;#039;s kernel patch. {{Source|wakeupmbrc1|2026-10-18|https://discord.com/channels/1518634379604136178/1518692084729511967/1561407364622458943}}&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Latency reference:&amp;#039;&amp;#039;&amp;#039; about 1.4-1.7 us native (CPU root / crossbar), about 14 us through a retimer plus two&lt;br /&gt;
  switches. {{Source|markshowa|2026-10-17|https://discord.com/channels/1518634379604136178/1518692084729511967/1561013734808363029}}&lt;br /&gt;
* P2P across different root complexes on a Threadripper board (older asm64 fork) looked right but no traffic arrived;&lt;br /&gt;
  mrpandagod&amp;#039;s advice is to build a local P2P patch for the specific setup.&lt;br /&gt;
  {{Source|c133|2026-10-22|https://discord.com/channels/1518634379604136178/1534370835220004885/1562876840593457225}}&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
* No release ships P2P and ECC together; the Morrowmake fork drops the ECC patches. A v0.6 request is open.&lt;br /&gt;
* On boards that cannot route P2P (ACS, no IOMMU passthrough, separate roots), forcing it times out instead of staging&lt;br /&gt;
  through system memory, which is why it is opt-in.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Mailbox P2P reproduced on the same board by two people (curiouspixel&amp;#039;s patch, Trust Inter and GhostInTheDatacenter) and&lt;br /&gt;
measured on a 4-card rig, so {{Status|Proven}} where the topology allows; it is {{Status|Reported}} to&lt;br /&gt;
{{Status|Contested}} on PLX and cross-root setups. See the confirmation below.&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
&lt;br /&gt;
[[cmpunlocker forks]], [[Resizable BAR and BAR1 64 GB]], [[Platforms]], [[Kernel parameters and module options]],&lt;br /&gt;
[[Troubleshooting]], [[Tools]].&lt;br /&gt;
&lt;br /&gt;
{{ImportFooter}}&lt;br /&gt;
[[Category:Unlocks]]&lt;br /&gt;
[[Category:8 GB]]&lt;br /&gt;
[[Category:10 GB]]&lt;/div&gt;</summary>
		<author><name>ImportBot</name></author>
	</entry>
</feed>