aliyun / aliyun/SimAI

Manual single node with 1 nvswitch and 0 switch network topo caused coredump

Open
#19 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.2k
Forks
184
Avg merge
13h 4m
Merged PRs (30d)
1

Description

I manually wrote a network topo file which describes a single node with 6 GPUs, no NVSwitch, and no swtich case.
Although theoretically nvswitch_num should be 0, but I found that this will cause MockNcclGroup function crashed:

        std::vector<int>NVSwitch;
        for(int k = 0;k<nNodesPerTPGroup;k++){
          NVSwitch.push_back(_NVSwitch[nvswitch_idx]);
          nvswitch_idx++;

Therefore, for the case of TP=4 and DP=1, I created a virtual nvswitch and wrote the below topo file:

~
7 6 1 0 14 A800
6
0 6 202Gbps 0.00173ms 0
1 6 202Gbps 0.0017ms 0
2 6 1481Gbps 0.00242ms 0
3 6 1481Gbps 0.00253ms 0
4 0 147Gbps 0.00225ms 0
4 1 146Gbps 0.00224ms 0
4 2 147Gbps 0.00222ms 0
4 3 147Gbps 0.00244ms 0
4 5 1481Gbps 0.00253ms 0
5 0 148Gbps 0.00228ms 0
5 1 148Gbps 0.00227ms 0
5 2 148Gbps 0.00227ms 0
5 3 147Gbps 0.00226ms 0
5 4 1481Gbps 0.00252ms 0

My command is as below, and I found the coredump happened in function uint32_t nic_idx = GetNicIdxOfQp(qp);:

AS_LOG_LEVEL=DEBUG AS_SEND_LAT=3 AS_NVLS_ENABLE=1 ./bin/SimAI_simulator -t 16 -w example/workload_analytical.txt -n ./one_server_A800_gpus_6 -c astra-sim-alibabacloud/inputs/config/SimAI.conf

The log is as below:

id: mlp_moelayer , depen: -1 , wg_comp_time: 1
id: mlp_moelayer , depen: -1 , wg_comp_time: 1
id: final_column , depen: -1 , wg_comp_time: 875420
id: cross_entropy1 , depen: -1 , wg_comp_time: 0
id: cross_entropy2 , depen: -1 , wg_comp_time: 0
id: cross_entropy3 , depen: -1 , wg_comp_time: 0
id: optimizer1 , depen: -1 , wg_comp_time: 0
id: optimizer2 , depen: -1 , wg_comp_time: 0
id: optimizer3 , depen: -1 , wg_comp_time: 0
id: optimizer4 , depen: -1 , wg_comp_time: 0
type: HYBRID_TRANSFORMER_FWD_IN_BCKWD ,num passes: 1 ,lines: 1789 compute scale: 1 ,comm scale: 1
stat path: ./ncclFlowModel_ ,total rows: 1 ,stat row: 0
CSV path and filename: ./ncclFlowModel_detailed_7.csv
CSV path and filename: ./ncclFlowModel_EndToEnd.csv
simulator run
info: no forward pass collective for layer: grad_gather
info: no forward pass collective for layer: grad_param_comm
info: no forward pass collective for layer: grad_param_compute
info: no forward pass collective for layer: embedding_grads
info: no forward pass collective for layer: moe_grad_norm1
info: no forward pass collective for layer: moe_grad_norm2
chunk size is: 50331648 , size is: 50331648 , layer_num is: 6 , node: 0
info: all-reduce forward pass collective issued for layer: embedding_layer, involved dimensions:  1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
assert failed. cond="false", msg="We assume at least one NIC is alive", +0.000625753s assert failed. cond="4 file=/src/SimAI/astra-sim-alibabacloud/extern/network_backend/ns3-interface/simulation/src/point-to-point/model/rdma-hw.cc, line=251
falseterminate called without an active exception
", msg="We assume at least one NIC is alive", Aborted (core dumped)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at extern/network_backend/ns3-interface/simulation/src/point-to-point/model/rdma-hw.cc:251, where the log reports that no NIC is alive, and trace the GetNicIdxOfQp(qp) call back through MockNcclGroup. Compare that path with the supplied one_server_A800_gpus_6 topology and its zero-NVSwitch case. Done means the reported single-node topology no longer aborts or core dumps when running the supplied command.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.