int Group::run() { if (_master_mode) { return masterRun(); } else { return memberRun(); } }
int main(int argc, char** argv) { setvbuf(stdout, NULL, _IONBF, 0); int err; int myrank; if(argc != 1) { printf("Usage: %s\nThe env var POWERACTUATOR_BOUND sets the global bound\n",argv[0]); return 1; } bound = strtod(getenv("POWERACTUATOR_BOUND"),NULL); printf("Actuator settings:\n\tbound: %f\n",bound); myrapl_init(); MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); err = gethostname(hostname, HOST_NAME_MAX); if(err) { printf("%s fails due to gethostname() error...\n",argv[0]); return 1; } err = EXPOSE_init(); if(err) { printf("EXPOSE_init() failure\n"); return 1; } int toggle=0; err = EXPOSE_bcasthaltwait(&running, &toggle); if(err) { printf("shutdown will not work.\n"); } if(myrank==0) { // subscribe for kicks and control exec MPI_Comm_size(MPI_COMM_WORLD, &commsize); allocations=(double*)malloc(sizeof(double)*commsize*2); masterRun(); } else { // enter the barrier to wait on the leader workerRun(); } MPI_Finalize(); }