/* exit_error: Prints an error message and terminates all processes. */ void exit_error(const char *format, ...) { va_list ap; static char buf[ERROR_BUF_MAX]; if (IS_MASTER_RANK) { va_start(ap, format); vsprintf(buf, format, ap); va_end(ap); if (strlen(buf) > 0) { fprintf(stderr, "%s: error: %s\n", mpiperf_progname, buf); } } mpiperf_finalize(); MPI_Abort(MPI_COMM_WORLD, 1); exit(EXIT_FAILURE); }
int main(int argc, char **argv) { int i; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &mpiperf_commsize); MPI_Comm_rank(MPI_COMM_WORLD, &mpiperf_rank); /* Save command line */ mpiperf_cmdline = (char *)malloc(sizeof(*mpiperf_cmdline) * MPIPERF_CMDLINE_MAX); if (mpiperf_cmdline) { strcpy(mpiperf_cmdline, argv[0]); for (i = 1; i < argc; i++) { strcat(mpiperf_cmdline, " "); strcat(mpiperf_cmdline, argv[i]); } } if (parse_options(argc, argv) == MPIPERF_FAILURE) { MPI_Finalize(); exit(EXIT_FAILURE); } mpiperf_initialize(); if (is_pt2pt_benchmark(mpiperf_bench)) { /* Point-to-point benchmark */ run_pt2pt_bench(mpiperf_bench); } else { /* Collective benchmark */ run_collective_bench(mpiperf_bench); } mpiperf_finalize(); free(mpiperf_cmdline); MPI_Finalize(); return EXIT_SUCCESS; }