in astra-sim-alibabacloud/astra-sim/network_frontend/analytical/AnalyticalAstra.cc [68:142]
int main(int argc,char *argv[]) {
UserParam* param = UserParam::getInstance();
if (param->parseArg(argc,argv)) {
std::cerr << "-h, --help Help message" << std::endl;
return -1;
}
param->mode = ModeType::ANALYTICAL;
physical_dims = {param->gpus};
// AnaInit(argc, argv);
uint32_t using_num_gpus = 0;
uint32_t all_gpu_num = param->gpus[0];
for (auto &a : physical_dims) {
int job_npus = 1;
for (auto &dim : a) {
job_npus *= dim;
}
using_num_gpus += job_npus;
}
std::map<int, int> node2nvswitch; //
for(int i = 0; i < all_gpu_num; ++ i) {
node2nvswitch[i] = all_gpu_num + i / param->net_work_param.gpus_per_server;
}
for(int i = all_gpu_num; i < all_gpu_num + param->net_work_param.nvswitch_num; ++ i){
node2nvswitch[i] = i;
param->net_work_param.NVswitchs.push_back(i);
}
physical_dims[0][0] += param->net_work_param.nvswitch_num;
using_num_gpus += param->net_work_param.nvswitch_num;
std::vector<int> queues_per_dim(physical_dims[0].size(), 1);
int job_npus = 1;
for (auto dim : physical_dims[0]) {
job_npus *= dim;
}
AnalyticalNetWork *analytical_network = new AnalyticalNetWork(0);
AstraSim::Sys *systems = new AstraSim::Sys(
analytical_network,
nullptr,
0,
0,
1,
physical_dims[0],
queues_per_dim,
"",
WORKLOAD_PATH + param->workload,
param->comm_scale,
1,
1,
1,
0,
RESULT_PATH + param->res,
"Analytical_test",
true,
false,
param->net_work_param.gpu_type,
param->gpus,
param->net_work_param.NVswitchs,
param->net_work_param.gpus_per_server
);
systems->nvswitch_id = node2nvswitch[0];
systems->num_gpus = using_num_gpus - param->net_work_param.nvswitch_num;
systems->workload->fire();
std::cout << "SimAI begin run Analytical" << std::endl;
AnaSim::Run();
AnaSim::Stop();
AnaSim::Destroy();
std::cout << "SimAI-Analytical finished." << std::endl;
return 0;
};