int main(int argc, const char *argv[]) { int nID = 0; const char *fname1 = NULL; const char *fname2 = NULL; const char *objname1 = NULL; const char *objname2 = NULL; diff_opt_t options; h5tools_setprogname(PROGRAMNAME); h5tools_setstatus(EXIT_SUCCESS); outBuffOffset = 0; g_Parallel = 1; MPI_Init(&argc, (char***) &argv); MPI_Comm_rank(MPI_COMM_WORLD, &nID); MPI_Comm_size(MPI_COMM_WORLD, &g_nTasks); if(g_nTasks == 1) { printf("Only 1 task available...doing serial diff\n"); g_Parallel = 0; parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); h5diff(fname1, fname2, objname1, objname2, &options); print_info(&options); } /* Parallel h5diff */ else { /* Have the manager process the command-line */ if(nID == 0) { parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); h5diff(fname1, fname2, objname1, objname2, &options); MPI_Barrier(MPI_COMM_WORLD); print_info(&options); print_manager_output(); } /* All other tasks become workers and wait for assignments. */ else { ph5diff_worker(nID); MPI_Barrier(MPI_COMM_WORLD); } /* end else */ } /* end else */ MPI_Finalize(); return 0; }
int main(int argc, const char *argv[]) { int ret; const char *fname1 = NULL; const char *fname2 = NULL; const char *objname1 = NULL; const char *objname2 = NULL; hsize_t nfound=0; diff_opt_t options; h5tools_setprogname(PROGRAMNAME); h5tools_setstatus(EXIT_SUCCESS); /* Initialize h5tools lib */ h5tools_init(); /*------------------------------------------------------------------------- * process the command-line *------------------------------------------------------------------------- */ parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); /*------------------------------------------------------------------------- * do the diff *------------------------------------------------------------------------- */ nfound = h5diff(fname1,fname2,objname1,objname2,&options); print_info(&options); /*------------------------------------------------------------------------- * exit code * 1 if differences, 0 if no differences, 2 if error *------------------------------------------------------------------------- */ ret = (nfound == 0 ? 0 : 1 ); /* if graph difference return 1 for differences */ if ( options.contents == 0 ) ret = 1; /* and return 2 for error */ if (options.err_stat) ret = 2; return ret; }