Skip to content

Commit bc81940

Browse files
authored
bug fix: empty per-partition topology when tree topology is not set (#162)
Signed-off-by: Dmitry Shmulevich <[email protected]>
1 parent 5d9698d commit bc81940

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

pkg/translate/topology.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"sort"
1212

1313
"github.com/agrea/ptr"
14+
"k8s.io/klog/v2"
1415

1516
"github.com/NVIDIA/topograph/pkg/topology"
1617
)
@@ -126,6 +127,7 @@ func (nt *NetworkTopology) initTree(root *topology.Vertex) {
126127
nt.vertices[v.ID] = v
127128
if len(v.Vertices) == 0 {
128129
nt.nodeInfo[v.Name] = &nodeInfo{instanceID: v.ID}
130+
klog.V(4).InfoS("initTree: adding nodeInfo", "name", v.Name, "instanceID", v.ID)
129131
}
130132
}
131133
for id, w := range v.Vertices {
@@ -165,6 +167,13 @@ func (nt *NetworkTopology) initBlocks(root *topology.Vertex) {
165167
}
166168
for _, w := range v.Vertices {
167169
bInfo.nodes = append(bInfo.nodes, w.Name)
170+
171+
nt.nodeInfo[w.Name] = &nodeInfo{
172+
instanceID: w.ID,
173+
blockID: id,
174+
blockIndx: ptr.Int(indx),
175+
}
176+
klog.V(4).InfoS("initBlocks: adding nodeInfo", "name", w.Name, "blockID", id, "blockIndx", indx)
168177
}
169178
nt.blocks = append(nt.blocks, bInfo)
170179
indx++

pkg/translate/yaml_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,45 @@ func TestMixedYamlTopology(t *testing.T) {
172172
require.NoError(t, err)
173173
require.Equal(t, expected, buf.String())
174174
}
175+
176+
func TestBlockOnlyYamlTopology(t *testing.T) {
177+
expected := `- topology: topo1
178+
clusterDefault: true
179+
block:
180+
blockSizes:
181+
- 2
182+
blocks:
183+
- block: block0
184+
nodes: Node[104-105]
185+
- topology: topo2
186+
clusterDefault: false
187+
block:
188+
blockSizes:
189+
- 2
190+
blocks:
191+
- block: block0
192+
nodes: Node[301,303]
193+
`
194+
195+
v, _ := GetBlockWithMultiIBTestSet()
196+
delete(v.Vertices, topology.TopologyTree)
197+
198+
cfg := &Config{
199+
Topologies: map[string]*TopologySpec{
200+
"topo1": {
201+
Plugin: topology.TopologyBlock,
202+
Nodes: []string{"Node[104,105]"},
203+
ClusterDefault: true,
204+
},
205+
"topo2": {
206+
Plugin: topology.TopologyBlock,
207+
Nodes: []string{"Node[301,303]"},
208+
},
209+
},
210+
}
211+
nt, _ := NewNetworkTopology(v, cfg)
212+
buf := &bytes.Buffer{}
213+
err := nt.Generate(buf)
214+
require.NoError(t, err)
215+
require.Equal(t, expected, buf.String())
216+
}

0 commit comments

Comments
 (0)