int main()

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;
};