static int orcm_osub_init(int argc, char *argv[]) { int ret; /* * Make sure to init util before parse_args * to ensure installdirs is setup properly * before calling mca_base_open(); */ if( ORTE_SUCCESS != (ret = opal_init_util(&argc, &argv)) ) { return ret; } /* * Parse Command Line Arguments */ if (ORTE_SUCCESS != (ret = parse_args(argc, argv))) { return ret; } /* * Setup OPAL Output handle from the verbose argument */ if( orcm_osub_globals.verbose ) { orcm_osub_globals.output = opal_output_open(NULL); opal_output_set_verbosity(orcm_osub_globals.output, 10); } else { orcm_osub_globals.output = 0; /* Default=STDERR */ } ret = orcm_init(ORCM_TOOL); return ret; }
int main(int argc, char* argv[]) { struct timespec tp; int rc, delay; target.jobid = ORTE_JOBID_INVALID; target.vpid = ORTE_VPID_INVALID; /* init the ORCM library - this includes registering * a multicast recv so we hear announcements and * their responses from other apps */ if (ORCM_SUCCESS != (rc = orcm_init(ORCM_APP))) { fprintf(stderr, "Failed to init: error %d\n", rc); exit(1); } opal_event_signal_set(opal_event_base, &sigterm_handler, SIGTERM, signal_trap, &sigterm_handler); opal_event_signal_add(&sigterm_handler, NULL); opal_event_signal_set(opal_event_base, &sigint_handler, SIGINT, signal_trap, &sigint_handler); opal_event_signal_add(&sigint_handler, NULL); /* for this application, register to hear messages sent to our input */ if (ORCM_SUCCESS != (rc = orcm_pnp.register_receive("client", "2.0", "beta", ORCM_PNP_GROUP_INPUT_CHANNEL, ORCM_TEST_CLIENT_SERVER_TAG, recv_input, NULL))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* open a channel to any client 1.0 peers */ if (ORCM_SUCCESS != (rc = orcm_pnp.open_channel("client", "1.0", NULL, ORTE_JOBID_WILDCARD, found_channel))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* announce our existence */ if (ORCM_SUCCESS != (rc = orcm_pnp.announce("CLIENT", "2.0", "beta", responses))) { ORTE_ERROR_LOG(rc); goto cleanup; } opal_output(0, "CLIENT2 %s ACTIVE", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)); /* init the msg number */ msg_num = 0; /* wake up every x seconds send something */ ORTE_TIMER_EVENT(ORTE_PROC_MY_NAME->vpid + 1, 0, send_data); opal_event_dispatch(opal_event_base); cleanup: orcm_finalize(); return rc; }
int main(int argc, char* argv[]) { int i, j, maxrun; double pi; float fail, randval; struct timeval tp; char hostname[1024]; int restarts; char *rstrt; int rc; /* seed the random number generator */ gettimeofday (&tp, NULL); srand (tp.tv_usec); randval = rand(); fail = randval/RAND_MAX; maxrun = 3*fail * 1000000; if (maxrun < 100) { maxrun = 100; } gethostname(hostname, 1024); /* init the ORCM library - this includes registering * a multicast recv so we hear announcements and * their responses from other apps */ if (ORCM_SUCCESS != (rc = orcm_init(ORCM_APP))) { fprintf(stderr, "Failed to init: error %d\n", rc); exit(1); } fprintf(stderr, "%s is on node %s\n", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), hostname); /* get the number of restarts */ if (NULL == (rstrt = getenv("OMPI_MCA_orte_num_restarts"))) { fprintf(stderr, "%s could not get number of restarts\n", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)); } else { restarts = strtol(rstrt, NULL, 10); fprintf(stderr, "%s restarting for %d time\n", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), restarts); } sleep(1); i = 0; while (i < maxrun) { i++; for (j=0; j < 100; j++) { pi = (i*j) / 3.14159256; } } orte_errmgr.abort(1, NULL); }
int main(int argc, char* argv[]) { int i; float pi; int rc; /* init the ORCM library - this includes registering * a multicast recv so we hear announcements and * their responses from other apps */ if (ORCM_SUCCESS != (rc = orcm_init(ORCM_APP))) { fprintf(stderr, "Failed to init: error %d\n", rc); exit(1); } opal_event_signal_set(opal_event_base, &sigterm_handler, SIGTERM, signal_trap, &sigterm_handler); opal_event_signal_add(&sigterm_handler, NULL); opal_event_signal_set(opal_event_base, &sigint_handler, SIGINT, signal_trap, &sigint_handler); opal_event_signal_add(&sigint_handler, NULL); /* listen on my input channel for direct messages */ if (ORCM_SUCCESS != (rc = orcm_pnp.register_receive("LISTENER_IOVEC", "1.0", "alpha", ORCM_PNP_GROUP_INPUT_CHANNEL, ORCM_PNP_TAG_WILDCARD, recv_input, NULL))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* announce our existence */ if (ORCM_SUCCESS != (rc = orcm_pnp.announce("LISTENER_IOVEC", "1.0", "alpha", NULL))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* just sit here */ opal_event_dispatch(opal_event_base); cleanup: orcm_finalize(); return rc; }
int main(int argc, char* argv[]) { struct timespec tp; int rc; /* init the ORCM library - this includes registering * a multicast recv so we hear announcements and * their responses from other apps */ if (ORCM_SUCCESS != (rc = orcm_init(ORCM_APP))) { fprintf(stderr, "Failed to init: error %d\n", rc); exit(1); } opal_event_signal_set(opal_event_base, &sigterm_handler, SIGTERM, signal_trap, &sigterm_handler); opal_event_signal_add(&sigterm_handler, NULL); opal_event_signal_set(opal_event_base, &sigint_handler, SIGINT, signal_trap, &sigint_handler); opal_event_signal_add(&sigint_handler, NULL); /* announce our existence */ if (ORCM_SUCCESS != (rc = orcm_pnp.announce("TALKER_IOVEC", "1.0", "alpha", NULL))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* for this application, there are no desired * inputs, so we don't register any */ ORTE_TIMER_EVENT(ORTE_PROC_MY_NAME->vpid + 1, 0, send_data); opal_event_dispatch(opal_event_base); cleanup: orcm_finalize(); return rc; }
int main(int argc, char* argv[]) { int rc; if (1 < argc) { tp.tv_sec = strtol(argv[1], NULL, 10); } else { tp.tv_sec = 0; } if (2 < argc) { tp.tv_usec = strtol(argv[2], NULL, 10); } else { tp.tv_usec = 10000; } /* init the ORCM library - this includes registering * a multicast recv so we hear announcements and * their responses from other apps */ if (ORCM_SUCCESS != (rc = orcm_init(ORCM_APP))) { fprintf(stderr, "Failed to init: error %d\n", rc); exit(1); } opal_event_signal_set(opal_event_base, &sigterm_handler, SIGTERM, signal_trap, &sigterm_handler); opal_event_signal_add(&sigterm_handler, NULL); opal_event_signal_set(opal_event_base, &sigint_handler, SIGINT, signal_trap, &sigint_handler); opal_event_signal_add(&sigint_handler, NULL); /* open a channel to send to the listener application */ if (ORCM_SUCCESS != (rc = orcm_pnp.open_channel("LISTENER_IOVEC", "1.0", "alpha", ORTE_JOBID_WILDCARD, found_channel))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* listen on my input channel for direct messages */ if (ORCM_SUCCESS != (rc = orcm_pnp.register_receive("TALKER_IOVEC", "1.0", "alpha", ORCM_PNP_GROUP_INPUT_CHANNEL, ORCM_PNP_TAG_WILDCARD, recv_input, NULL))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* announce our existence */ if (ORCM_SUCCESS != (rc = orcm_pnp.announce("TALKER_IOVEC", "1.0", "alpha", NULL))) { ORTE_ERROR_LOG(rc); goto cleanup; } /* wake up every x seconds to send something */ ORTE_TIMER_EVENT(tp.tv_sec, tp.tv_usec, send_data); opal_event_dispatch(opal_event_base); cleanup: orcm_finalize(); return rc; }
int main(int argc, char *argv[]) { int32_t ret, i; opal_cmd_line_t cmd_line; char **inpt; opal_buffer_t *buf; int count; char cwd[OPAL_PATH_MAX]; orcm_tool_cmd_t flag = ORCM_TOOL_STOP_CMD; int32_t master=0; uint16_t jfam=0; /*************** * Initialize ***************/ /* * Make sure to init util before parse_args * to ensure installdirs is setup properly * before calling mca_base_open(); */ if( ORTE_SUCCESS != (ret = orcm_init_util()) ) { return ret; } /* initialize the globals */ my_globals.help = false; my_globals.replicas = NULL; my_globals.sched = NULL; my_globals.hnp_uri = NULL; /* Parse the command line options */ opal_cmd_line_create(&cmd_line, cmd_line_opts); mca_base_open(); mca_base_cmd_line_setup(&cmd_line); ret = opal_cmd_line_parse(&cmd_line, true, argc, argv); /* extract the MCA/GMCA params */ mca_base_cmd_line_process_args(&cmd_line, &environ, &environ); /** * Now start parsing our specific arguments */ if (OPAL_SUCCESS != ret || my_globals.help) { char *args = NULL; args = opal_cmd_line_get_usage_msg(&cmd_line); orte_show_help("help-orcm-stop.txt", "usage", true, args); free(args); return ORTE_ERROR; } if (NULL != my_globals.sched) { if (0 == strncmp(my_globals.sched, "file", strlen("file")) || 0 == strncmp(my_globals.sched, "FILE", strlen("FILE"))) { char input[1024], *filename; FILE *fp; /* it is a file - get the filename */ filename = strchr(my_globals.sched, ':'); if (NULL == filename) { /* filename is not correctly formatted */ orte_show_help("help-openrcm-runtime.txt", "hnp-filename-bad", true, "scheduler", my_globals.sched); return ORTE_ERROR; } ++filename; /* space past the : */ if (0 >= strlen(filename)) { /* they forgot to give us the name! */ orte_show_help("help-openrcm-runtime.txt", "hnp-filename-bad", true, "scheduler", my_globals.sched); return ORTE_ERROR; } /* open the file and extract the pid */ fp = fopen(filename, "r"); if (NULL == fp) { /* can't find or read file! */ orte_show_help("help-openrcm-runtime.txt", "hnp-filename-access", true, "scheduler", filename); return ORTE_ERROR; } if (NULL == fgets(input, 1024, fp)) { /* something malformed about file */ fclose(fp); orte_show_help("help-openrcm-runtime.txt", "hnp-file-bad", "scheduler", true, filename); return ORTE_ERROR; } fclose(fp); input[strlen(input)-1] = '\0'; /* remove newline */ /* convert the pid */ master = strtoul(input, NULL, 10); } else { /* should just be the master itself */ master = strtoul(my_globals.sched, NULL, 10); } } /* if we were given HNP contact info, parse it and * setup the process_info struct with that info */ if (NULL != my_globals.hnp_uri) { if (0 == strncmp(my_globals.hnp_uri, "file", strlen("file")) || 0 == strncmp(my_globals.hnp_uri, "FILE", strlen("FILE"))) { char input[1024], *filename; FILE *fp; /* it is a file - get the filename */ filename = strchr(my_globals.hnp_uri, ':'); if (NULL == filename) { /* filename is not correctly formatted */ orte_show_help("help-openrcm-runtime.txt", "hnp-filename-bad", true, "uri", my_globals.hnp_uri); goto cleanup; } ++filename; /* space past the : */ if (0 >= strlen(filename)) { /* they forgot to give us the name! */ orte_show_help("help-openrcm-runtime.txt", "hnp-filename-bad", true, "uri", my_globals.hnp_uri); goto cleanup; } /* open the file and extract the uri */ fp = fopen(filename, "r"); if (NULL == fp) { /* can't find or read file! */ orte_show_help("help-openrcm-runtime.txt", "hnp-filename-access", true, filename); goto cleanup; } if (NULL == fgets(input, 1024, fp)) { /* something malformed about file */ fclose(fp); orte_show_help("help-openrcm-runtime.txt", "hnp-file-bad", true, filename); goto cleanup; } fclose(fp); input[strlen(input)-1] = '\0'; /* remove newline */ /* put into the process info struct */ orte_process_info.my_hnp_uri = strdup(input); } else { /* should just be the uri itself */ orte_process_info.my_hnp_uri = strdup(my_globals.hnp_uri); } } if (OPAL_SUCCESS != opal_getcwd(cwd, sizeof(cwd))) { opal_output(orte_clean_output, "failed to get cwd\n"); return ORTE_ERR_NOT_FOUND; } /*************************** * We need all of OPAL and ORTE - this will * automatically connect us to the CM ***************************/ if (ORTE_SUCCESS != orcm_init(ORCM_TOOL)) { orcm_finalize(); return 1; } /* if we were given the hnp uri, extract the job family for the * master id */ if (NULL != my_globals.hnp_uri) { master = ORTE_JOB_FAMILY(ORTE_PROC_MY_HNP->jobid); } /* register to receive responses */ if (ORCM_SUCCESS != (ret = orcm_pnp.register_receive("orcm-stop", "0.1", "alpha", ORCM_PNP_GROUP_INPUT_CHANNEL, ORCM_PNP_TAG_TOOL, ack_recv, NULL))) { ORTE_ERROR_LOG(ret); goto cleanup; } /* announce my existence */ if (ORCM_SUCCESS != (ret = orcm_pnp.announce("orcm-stop", "0.1", "alpha", NULL))) { ORTE_ERROR_LOG(ret); goto cleanup; } /* setup the buffer to send our cmd */ buf = OBJ_NEW(opal_buffer_t); /* indicate the scheduler to be used */ jfam = master & 0x0000ffff; opal_dss.pack(buf, &jfam, 1, OPAL_UINT16); /* get the apps to stop */ inpt = NULL; opal_cmd_line_get_tail(&cmd_line, &count, &inpt); if (0 == count) { /* if no apps were given, then we stop the entire * DVM itself by telling the daemon's to terminate */ if (ORCM_SUCCESS != (ret = orcm_pnp.output_nb(ORCM_PNP_SYS_CHANNEL, NULL, ORCM_PNP_TAG_TERMINATE, NULL, 0, buf, cbfunc, NULL))) { ORTE_ERROR_LOG(ret); } goto cleanup; } else { /* load the stop cmd */ opal_dss.pack(buf, &flag, 1, ORCM_TOOL_CMD_T); /* for each app */ for (i=0; NULL != inpt[i]; i++) { opal_dss.pack(buf, &inpt[i], 1, OPAL_STRING); /* pack the replicas to be stopped */ opal_dss.pack(buf, &my_globals.replicas, 1, OPAL_STRING); } opal_argv_free(inpt); if (ORCM_SUCCESS != (ret = orcm_pnp.output_nb(ORCM_PNP_SYS_CHANNEL, NULL, ORCM_PNP_TAG_TOOL, NULL, 0, buf, cbfunc, NULL))) { ORTE_ERROR_LOG(ret); } } /* now wait for ack */ opal_event_dispatch(opal_event_base); /*************** * Cleanup ***************/ cleanup: orcm_finalize(); return ret; }
int main(int argc, char *argv[]) { int32_t ret; opal_cmd_line_t cmd_line; char *args = NULL; /*************** * Initialize ***************/ /* * Make sure to init util before parse_args * to ensure installdirs is setup properly * before calling mca_base_open(); */ if( ORTE_SUCCESS != (ret = orcm_init_util()) ) { return ret; } /* initialize the globals */ my_globals.help = false; my_globals.monitor = false; my_globals.update_rate = 5; my_globals.sched = 0; /* Parse the command line options */ opal_cmd_line_create(&cmd_line, cmd_line_opts); mca_base_open(); mca_base_cmd_line_setup(&cmd_line); ret = opal_cmd_line_parse(&cmd_line, true, argc, argv); /* extract the MCA/GMCA params */ mca_base_cmd_line_process_args(&cmd_line, &environ, &environ); /** * Now start parsing our specific arguments */ if (OPAL_SUCCESS != ret || my_globals.help) { args = opal_cmd_line_get_usage_msg(&cmd_line); orte_show_help("help-orcm-ps.txt", "usage", true, args); free(args); return ORTE_ERROR; } /*************************** * We need all of OPAL and ORTE - this will * automatically connect us to the CM ***************************/ if (ORCM_SUCCESS != (ret = orcm_init(ORCM_TOOL))) { goto cleanup; } /* register to receive responses */ if (ORCM_SUCCESS != (ret = orcm_pnp.register_receive("orcm-ps", "0.1", "alpha", ORCM_PNP_GROUP_INPUT_CHANNEL, ORCM_PNP_TAG_PS, ps_recv, NULL))) { ORTE_ERROR_LOG(ret); goto cleanup; } /* announce my existence */ if (ORCM_SUCCESS != (ret = orcm_pnp.announce("orcm-ps", "0.1", "alpha", NULL))) { ORTE_ERROR_LOG(ret); goto cleanup; } /* define an event to signal completion */ if (pipe(rel_pipe) < 0) { opal_output(0, "Cannot open release pipe"); goto cleanup; } opal_event_set(opal_event_base, &rel_ev, rel_pipe[0], OPAL_EV_READ, process_release, NULL); opal_event_add(&rel_ev, 0); /* we know we need to print the data once */ update_data(0, 0, NULL); opal_event_dispatch(opal_event_base); /*************** * Cleanup ***************/ cleanup: /* cleanup orcm */ orcm_finalize(); return ret; }