Using 400G QSFP cables with Tenstorrent P150 hardware
Sep 16, 2025
Tenstorrent blackhole officially supports only 800G QSFP cables. As these are 3x the price than 400G cables, and I don’t expect high traffic over the link with sensible sharding when doing tensor-parallel inference, I figured I just get some cheap 10gtek 400G cables.
Getting this to work with tt-metal / ttnn requires a little bit of work. tt-metal has a hard-coded list of supported topologies in x_mesh_graph_descriptor.yaml files, and it uses various heuristics to pick which one to use. Each file lists how devices are connected, including the number of ethernet links used.
When using a QSFP-DD 800G cable, the cards establish 4 ethernet links, while 400G cable has it establishing only 2. This means that the selected mesh graph would declare more links than actually exist, and fail.
RuntimeError: TT_FATAL @ /home/yiding/projects/tt/tt-metal/tt_metal/fabric/fabric_host_utils.cpp:313: topology_info.corners.size() == 2
info:
Expected 2 corners for 1D mesh, got 0. We can fix this by using a custom mesh graph descriptor. Here’s an example for 2 p150 connected by a single 400g cable. The notable change here is changing ChipSpec.ethernet_ports from 4 to 2:
# p150_x2_400g_mesh_graph_descriptor.yaml
ChipSpec:
arch: blackhole
ethernet_ports:
N: 2
E: 2
S: 2
W: 2
Board:
- name: P150
type: Mesh
topology: [1, 2]
Mesh:
- id: 0
board: P150
device_topology: [1, 2]
host_topology: [1, 1]
host_ranks: [[0]]
Graph: [] Then set the environment variable TT_MESH_GRAPH_DESC_PATH to point to that path of that file to force tt-metal to use it.