diff options
author | Leon Arber <larber@ncsa.uiuc.edu> | 2005-02-08 05:42:49 (GMT) |
---|---|---|
committer | Leon Arber <larber@ncsa.uiuc.edu> | 2005-02-08 05:42:49 (GMT) |
commit | 2183c5971ad1ef5ddbff3fd19d8af13737f4f03f (patch) | |
tree | 818a85e1aecc8e8aab2eda3deccb4df03f49b6cc /tools/h5diff/h5diff_main.c | |
parent | b4153b4f5edef4833abea9a1249baf4690984258 (diff) | |
download | hdf5-2183c5971ad1ef5ddbff3fd19d8af13737f4f03f.zip hdf5-2183c5971ad1ef5ddbff3fd19d8af13737f4f03f.tar.gz hdf5-2183c5971ad1ef5ddbff3fd19d8af13737f4f03f.tar.bz2 |
[svn-r9956] Purpose:
Fixed numerous ph5diff bugs.
Description:
Fixed manager output printing
Fixed out of order output printing
Fixed test script execution problem
Temporary fix for large amounts of output overflowing buffer.
Solution:
The manager task buffers its output. However, since the manager task
never gets a print token, this output was lost. Solution: new function called
print_manager_output that prints buffered output is called in places where the
manager buffers its output.
printf was apparently buffering output. This means that a task would sometimes
print even after it had given up its print token. Added fflush() call after
printf() calls, which seems to have fixed the problem.
calling rsh multiple times in succession seems to overwhelm something in Linux,
as it begins to refuse new connections until the old ones reset. Since each
call to mpirun in the test script starts up 4 rsh sessions, the test script
eventually is unable to run any further tests. Solution: Added a short delay in the
testscript between successive calls to mpirun to allow old connections to reset.
The 10k output buffer was of insufficient size to hold the large amounts of
output generated by some of the tests. Since code to buffer to a file has not
been implemented yet, a temporary fix was to increase the size of the output
buffer to 50k.
Platforms tested:
heping
Misc. update:
Diffstat (limited to 'tools/h5diff/h5diff_main.c')
-rw-r--r-- | tools/h5diff/h5diff_main.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c index 4a15f78..5c15d16 100644 --- a/tools/h5diff/h5diff_main.c +++ b/tools/h5diff/h5diff_main.c @@ -55,6 +55,8 @@ static void ph5diff_worker( void ); *------------------------------------------------------------------------- */ + int nID = 0; + int main(int argc, const char *argv[]) { int i; @@ -64,7 +66,6 @@ int main(int argc, const char *argv[]) const char *objname1 = NULL; const char *objname2 = NULL; hsize_t nfound=0; - int nID = 0; int ret; diff_opt_t options; @@ -91,7 +92,7 @@ int main(int argc, const char *argv[]) MPI_Comm_rank(MPI_COMM_WORLD, &nID); MPI_Comm_size(MPI_COMM_WORLD, &g_nTasks); #else - printf("You cannot run ph5diff unless you compiles a parallel build of HDF5\n"); + printf("You cannot run ph5diff unless you compile a parallel build of HDF5\n"); h5diff_exit(2); #endif } @@ -263,7 +264,10 @@ int main(int argc, const char *argv[]) else { if (!options.err_stat) + { print_found(nfound); + print_manager_output(); + } } } @@ -365,6 +369,7 @@ ph5diff_worker(void) /*When get token, print stuff out and return token */ printf("%s", outBuff); + fflush(stdout); memset(outBuff, 0, OUTBUFF_SIZE); outBuffOffset = 0; @@ -377,7 +382,7 @@ ph5diff_worker(void) else if(Status.MPI_TAG == MPI_TAG_END) { MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_END, MPI_COMM_WORLD, &Status); - /*printf("exiting..., task: %d\n", nID);*/ + /* printf("exiting..., task: %d\n", nID); */ break; } else @@ -388,6 +393,7 @@ ph5diff_worker(void) } } + MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); } @@ -546,6 +552,7 @@ void usage(void) */ void h5diff_exit(int status) { + #ifdef H5_HAVE_PARALLEL /* if in parallel mode, dismiss workers, close down MPI, then exit */ if(g_nTasks > 1){ |