示例#1
0
文件: util.c 项目: Egor-Skv/mpiperf
/* 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);
}
示例#2
0
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;
}