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(); }
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); } }
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 }
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; }
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(); }
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; }
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(); }
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; }
void mpijob_manager::run() { if (is_master()) run_master(); else run_slave(); }