Hi all,
I’m working on a possible open-source/barebones backplane for 4x NVIDIA V100 SXM2 modules.
The rough idea is to make something that people could potentially build or have fabricated themselves, rather than relying on rare and expensive OEM trays. I’m trying to keep the design as cheap and simple as possible, but I want to sanity-check the PCIe topology before I go too far down the wrong road.
The basic assumption is that each 4-GPU PCB/backplane would act as its own NVLink island. So inside one 4x V100 SXM2 board, the GPUs can talk over NVLink, assuming the backplane routing/topology is valid.
The thing I’m trying to understand properly is what happens when you have two of these 4-GPU boards.
So:
4-GPU backplane A = NVLink island A
4-GPU backplane B = NVLink island B
As far as I can tell, there is no simple/cheap way to make those two islands talk to each other over NVLink unless you are basically building a proper NVIDIA/OEM-style NVSwitch/NVLink baseboard. So for a DIY budget design, I’m assuming island-to-island traffic has to go over PCIe.
That means the real design question is not “how fast is each individual GPU to the host?” The model weights live in VRAM, and the GPUs inside each 4-GPU board already have local NVLink. The important question is:
How fast can backplane A talk to backplane B?
This is where I’m trying to decide between passive PCIe wiring and a PEX8749 switched design.
Option 1: Passive x4 / OCuLink per GPU
One 4-GPU board would use one host x16 slot split into x4/x4/x4/x4.
So per 4-GPU board:
1x host x16 slot
4x OCuLink x4 cables
4x GPUs, each with its own PCIe 3.0 x4 link
For two boards / 8 GPUs total:
2x host x16 slots
8x OCuLink x4 cables
The island-to-island ceiling should be around:
4x PCIe 3.0 x4 = about 16 GB/s one-way, best case
This seems cheap and simple from a PCB point of view. No PEX chip, no switch cooling, no switch configuration. But it needs x4/x4/x4/x4 bifurcation and uses a lot of cables.
Also, if the software traffic only crosses between the two islands through one “boundary” GPU, then the real path could be only x4, so about 4 GB/s one-way. If traffic is spread across all four GPUs, then the aggregate can be around 16 GB/s.
Option 2: PEX8749 switched 4-GPU backplane
This is the common 4-GPU PLX/PEX style layout I keep seeing.
PEX8749 is 48 lanes, so the obvious layout is:
1x PCIe 3.0 x16 upstream to the host
4x PCIe 3.0 x8 downstream to GPUs
That uses all 48 lanes.
So per 4-GPU board:
1x host x16 slot
1x x16 uplink cable
PEX8749 on the backplane
4x GPUs downstream at x8
For two boards / 8 GPUs total:
2x host x16 slots
2x x16 uplinks
2x PEX8749 backplanes
The path between islands would be:
Backplane A GPUs
to PEX8749 A
to shared x16 uplink
to host/root complex
to shared x16 uplink
to PEX8749 B
to Backplane B GPUs
So as far as I understand it, the island-to-island ceiling is still around:
PCIe 3.0 x16 = about 16 GB/s one-way
That means two PEX8749 boards are not really faster than passive x4/OCuLink in best-case aggregate island-to-island bandwidth.
The advantage is more practical:
far fewer cables
one host connection per 4-GPU board
doesn’t need motherboard bifurcation
cleaner product/backplane design
probably easier for other people to use
The downside is:
PEX chip cost
heat
PCB complexity
still only one shared x16 exit from each 4-GPU island
Option 3: Passive x8 per GPU
This seems like the only realistic cheap-ish way to beat the 16 GB/s island-to-island limit.
One 4-GPU board would use two host x16 slots, each split x8/x8.
So per 4-GPU board:
2x host x16 slots
4x PCIe x8 links
For two boards / 8 GPUs total:
4x host x16 slots
8x x8 cables
The best-case island-to-island bandwidth would be:
4x PCIe 3.0 x8 = about 32 GB/s one-way
This seems like the best performance/value option on lane-rich platforms like EPYC or Threadripper, but it is obviously messier as a product. It uses more host slots and more cables, and requires working x8/x8 bifurcation.
Again, this only helps if the workload can actually use multiple GPU paths between islands. If the traffic only crosses through one GPU, then you only get one x8 path.
Option 4: Passive x16 per GPU
This is mostly just a reference point.
For two 4-GPU boards, you would need:
8x x16 host lane sources
8x x16 cables
That would give a theoretical island-to-island aggregate of:
4x PCIe 3.0 x16 = about 64 GB/s one-way
But this is not realistic for most people and not really relevant to the budget/open-source goal.
Where I think I am currently landing
For a cheap open-source design, my instinct is:
Base design:
passive board
ideally x8-capable
allow x4/OCuLink as the cheaper/dense mode
Optional premium/easy wiring design:
PEX8749 switched version
one x16 host uplink per 4-GPU board
cleaner and easier for users, but not faster island-to-island
So my current mental model is:
passive x4/OCuLink:
cheap, simple, about 16 GB/s island-to-island best case
2x PEX8749 boards:
cleaner wiring, fewer host cables, also about 16 GB/s island-to-island
passive x8:
more cables and host slots, but about 32 GB/s island-to-island best case
PEX8796 or larger switch fabric:
interesting, but probably too expensive/complex for the kind of project I’m aiming at
NVSwitch / true 8-GPU NVLink fabric:
probably not realistic unless reusing or cloning an OEM-style design
Questions
Am I right that two separate 4x V100 SXM2 NVLink backplanes cannot practically be bridged together with a simple DIY NVLink PCB?
Am I right that, for a budget design, island-to-island traffic should be assumed to go over PCIe?
With two normal PEX8749 4-GPU boards, is island-to-island traffic basically limited by the shared PCIe 3.0 x16 uplink from each board, so around 16 GB/s one-way?
Is passive x8 per GPU the only realistic budget way to get meaningfully more island-to-island bandwidth?
Are there any PCIe switch options I’m missing that are faster than PEX8749 but still not silly money?
For LLM inference across two 4-GPU NVLink islands, does the theoretical passive x8 aggregate actually matter in practice, or do frameworks often end up bottlenecking through one or two boundary GPUs anyway?
If you were designing a barebones DIY/open-source 4x V100 SXM2 backplane, would you prioritise:
passive x4/OCuLink for lowest cost,
passive x8 for better island-to-island bandwidth,
or PEX8749 for cleaner wiring and broader host compatibility?
My reflex is always to make the cheapest useful option for the end user, so I’m leaning passive unless there is a strong practical reason to use PEX. I just want to check I’m not missing something obvious before I design the board around the wrong assumptions.



