Example #1
0
int main(int argc, char **argv)
{
    int this_id=0, n_procs=0, n_workers=0;
    int status=0, ierr=0; // dummy

    ierr=MPI_Init(&argc, &argv);

    ierr=MPI_Comm_rank(MPI_COMM_WORLD, &this_id);
    ierr=MPI_Comm_size(MPI_COMM_WORLD, &n_procs);
    n_workers = n_procs-1;

    if (n_procs > 1) {
        if (this_id == MASTER) {
            ierr = run_master(n_workers);
            fprintf(stderr,"master: running MPI finalize\n");
        } else {
            ierr = run_worker(this_id);
        }
    } else {
        status=EXIT_FAILURE;
        fprintf(stderr,"need > 1 processes (master+workers)\n");
    }

    ierr=MPI_Finalize();
    if (this_id == MASTER) {
        fprintf(stderr,"master: MPI finalized\n");
    }

    if (ierr != 0) {
        status=EXIT_FAILURE;
        fprintf(stderr,"Encountered error: %d\n", ierr);
    }
    return status;
}
int run() 
{
    // if not deamon, directly run master.
    if (!_srs_config->get_deamon()) {
        return run_master();
    }
    
    srs_trace("start deamon mode...");
    
    int pid = fork();
    
    if(pid == -1){
        srs_error("create process error. ret=-1"); //ret=0
        return -1;
    }

    // grandpa
    if(pid > 0){
        int status = 0;
        if(waitpid(pid, &status, 0) == -1){
            srs_error("wait child process error! ret=-1"); //ret=0
        }
        srs_trace("grandpa process exit.");
        exit(0);
        return 0;
    }

    // father
    pid = fork();
    
    if(pid == -1){
        srs_error("create process error. ret=-1");
        return -1;
    }

    if(pid > 0){
        srs_trace("father process exit. ret=-1");
        exit(0);
        return 0;
    }

    // son
    srs_trace("son(deamon) process running.");
    
    return run_master();
}
Example #3
0
int main(int argc, char *argv[]) 
{
    coreid_t mycore = disp_get_core_id();

    debug_printf("This is mem_bench_3\n");

    if (argc < 2) {
        return run_worker(mycore);
    } else {
        return run_master(mycore, argc, argv);
    }
}
Example #4
0
void PSO::Swarm::evaluate(int vflag, ostream* out, ostream* hist) {
#ifdef USE_MPI
  if (mpi_rank == 0) run_master(-1,vflag,out,hist);
  else evaluate_slave();
  MPI::COMM_WORLD.Barrier();

#else
  double f(-INFINITY);
  for (size_t j = 0; j < swarm.size(); ++j) {
    f = evaluateParticle(j);
  }
#endif
}
Example #5
0
int main(int argc, char *argv[], char *envp[])
{
	mog_upgrade_prepare(argc, argv, envp);
	/* hack for older gcov + gcc, see nostd/setproctitle.h */
	spt_init(argc, argv, envp);
	set_program_name(argv[0]);

	mog_intr_disable();
	setup(argc, argv); /* this daemonizes */

	mog_process_init(worker_processes);
	if (worker_processes == 0)
		run_worker(0);
	else
		run_master();

	return 0;
}
Example #6
0
int main(int argc, char *argv[]) {
  int me, nprocs;

  MPI_Init(&argc, &argv);
  MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
  MPI_Comm_rank(MPI_COMM_WORLD, &me);
  MPI_Barrier(MPI_COMM_WORLD);
  
  my_id = me;

  if (me == MASTER) {
    run_master(me, nprocs, argc, argv);
  }
  else {
    run_worker(me, nprocs);
  }
  MPI_Barrier(MPI_COMM_WORLD);
  MPI_Finalize();
}
Example #7
0
int main(int argc, char** argv)
{
    srv::parameters params;

    struct sockaddr_in sock_addr;
    sock_addr.sin_family = AF_INET;

    const char* options = "h:p:d:";
    int opt = getopt(argc, argv, options);
    while(opt != -1)
    {
        switch(opt)
        {
        case 'h': params.ip = optarg; break;
        case 'p': params.port = optarg; break;
        case 'd': params.directory = optarg; break;
        default: return 1;
        }
        opt = getopt(argc, argv, options);
    }

    inet_pton(AF_INET, params.ip.c_str(), &sock_addr.sin_addr.s_addr);
    sock_addr.sin_port = htons( atoi(params.port.c_str()) );

    if(fork() == 0)
    {
        umask(0);
        setsid();

        FILE* file = fopen("masterpid.txt", "w");
        if(file)
        {
            fprintf(file, "%d\n", (unsigned int)getpid());
            fclose(file);
        }

        run_master(sock_addr, params);
    }
    return 0;
}
Example #8
0
void PSO::Swarm::run_mpi(int numInt, int vflag, ostream* out, ostream* hist) {
  if (mpi_rank == 0) run_master(numInt,vflag,out,hist);
  else evaluate_slave();
  MPI::COMM_WORLD.Barrier();
}
Example #9
0
int main(int argc,char **argv)
{
  int n_lbin=0,pol_1=0,pol_2=0;
  char fname_map_1[256]="none";
  char fname_map_2[256]="none";
  char fname_mask_1[256]="none";
  char fname_mask_2[256]="none";
  char fname_cl_noise[256]="none";
  char coupling_fname[256]="none";
  char fname_out[256]="none";

  char **c;
  for(c=argv+1;*c;c++) {
    if(!strcmp(*c,"-map"))
      sprintf(fname_map_1,"%s",*++c);
    else if(!strcmp(*c,"-map_2"))
      sprintf(fname_map_2,"%s",*++c);
    else if(!strcmp(*c,"-mask"))
      sprintf(fname_mask_1,"%s",*++c);
    else if(!strcmp(*c,"-mask_2"))
      sprintf(fname_mask_2,"%s",*++c);
    else if(!strcmp(*c,"-pol"))
      pol_1=atoi(*++c);
    else if(!strcmp(*c,"-pol_2"))
      pol_2=atoi(*++c);
    else if(!strcmp(*c,"-cl_noise"))
      sprintf(fname_cl_noise,"%s",*++c);
    else if(!strcmp(*c,"-coupling"))
      sprintf(coupling_fname,"%s",*++c);
    else if(!strcmp(*c,"-out"))
      sprintf(fname_out,"%s",*++c);
    else if(!strcmp(*c,"-nlb"))
      n_lbin=atoi(*++c);
    else if(!strcmp(*c,"-h")) {
      fprintf(stderr,"Usage: NaMaster -<opt-name> <option>\n");
      fprintf(stderr,"Options:\n");
      fprintf(stderr,"  -map      -> path to file containing map(s)\n");
      fprintf(stderr,"  -map_2    -> path to file containing 2nd map(s) (optional)\n");
      fprintf(stderr,"  -mask     -> path to file containing mask\n");
      fprintf(stderr,"  -mask_2   -> path to file containing mask for 2nd map(s) (optional)\n");
      fprintf(stderr,"  -pol      -> spin-0 (0) or spin-2 (1) input map(s)\n");
      fprintf(stderr,"  -pol_2    -> spin-0 (0) or spin-2 (1) 2nd input map(s)\n");
      fprintf(stderr,"  -cl_noise -> path to file containing noise Cl(s)\n");
      fprintf(stderr,"  -coupling -> path to file containing coupling matrix (optional)\n");
      fprintf(stderr,"               If non-existing, it will be computed and\n");
      fprintf(stderr,"               written there\n");
      fprintf(stderr,"  -out      -> output filename\n");
      fprintf(stderr,"  -nlb      -> number of ells per bin\n");
      fprintf(stderr,"  -h        -> this help\n\n");
      return 0;
    }
    else {
      fprintf(stderr,"Unknown option %s\n",*c);
      exit(1);
    }
  }

  if(!strcmp(fname_map_1,"none"))
    report_error(1,"Must provide map to correlate!\n");
  if(!strcmp(fname_mask_1,"none"))
    report_error(1,"Must provide mask\n");
  if(!strcmp(fname_cl_noise,"none"))
    report_error(1,"Must provide noise power spectra\n");
  if(!strcmp(fname_out,"none"))
    report_error(1,"Must provide output filename\n");
  if(n_lbin<=0)
    report_error(1,"#ell per bin must be positive\n");

  if(!strcmp(fname_map_2,"none")) {
    sprintf(fname_map_2,"%s",fname_map_1);
    pol_2=pol_1;
  }
  if(!strcmp(fname_mask_2,"none"))
    sprintf(fname_mask_2,"%s",fname_mask_1);

  run_master(fname_map_1,fname_map_2,
	     fname_mask_1,fname_mask_2,
	     pol_1,pol_2,
	     fname_cl_noise,
	     coupling_fname,
	     fname_out,n_lbin);

  return 0;
}
Example #10
0
 void mpijob_manager::run() {
   if (is_master())
     run_master();
   else
     run_slave();
 }