in astra-sim-alibabacloud/astra-sim/network_frontend/ns3/AstraSimNetwork.cc [260:335]
int main(int argc, char *argv[]) {
struct user_param user_param;
MockNcclLog::set_log_name("SimAI.log");
MockNcclLog* NcclLog = MockNcclLog::getInstance();
NcclLog->writeLog(NcclLogLevel::INFO," init SimAI.log ");
if(user_param_prase(argc,argv,&user_param)){
return 0;
}
#ifdef NS3_MTP
MtpInterface::Enable(user_param.thread);
#endif
main1(user_param.network_topo,user_param.network_conf);
int nodes_num = node_num - switch_num;
int gpu_num = node_num - nvswitch_num - switch_num;
std::map<int, int> node2nvswitch;
for(int i = 0; i < gpu_num; ++ i) {
node2nvswitch[i] = gpu_num + i / gpus_per_server;
}
for(int i = gpu_num; i < gpu_num + nvswitch_num; ++ i){
node2nvswitch[i] = i;
NVswitchs.push_back(i);
}
LogComponentEnable("OnOffApplication", LOG_LEVEL_INFO);
LogComponentEnable("PacketSink", LOG_LEVEL_INFO);
LogComponentEnable("GENERIC_SIMULATION", LOG_LEVEL_INFO);
std::vector<ASTRASimNetwork *> networks(nodes_num, nullptr);
std::vector<AstraSim::Sys *> systems(nodes_num, nullptr);
for (int j = 0; j < nodes_num; j++) {
networks[j] =
new ASTRASimNetwork(j ,0);
systems[j ] = new AstraSim::Sys(
networks[j],
nullptr,
j,
0,
1,
{nodes_num},
{1},
"",
user_param.workload,
1,
1,
1,
1,
0,
RESULT_PATH,
"test1",
true,
false,
gpu_type,
{gpu_num},
NVswitchs,
gpus_per_server
);
systems[j ]->nvswitch_id = node2nvswitch[j];
systems[j ]->num_gpus = nodes_num - nvswitch_num;
}
for (int i = 0; i < nodes_num; i++) {
systems[i]->workload->fire();
}
std::cout << "simulator run " << std::endl;
Simulator::Run();
Simulator::Stop(Seconds(2000000000));
Simulator::Destroy();
#ifdef NS3_MPI
MpiInterface::Disable ();
#endif
return 0;
}