mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-12 15:04:59 +08:00
[svn-r13801] Output improvement.
Added a header message showing the purpose and explanation that the test is for inoformation and always exits 0. Also added a summary at the end. Some other cosmetic changes (moved couple function code up, added some more printf, fflush statements.) Tested platform: kagiso.
This commit is contained in:
parent
6ea2260ea7
commit
3efa9c8b05
@ -57,6 +57,7 @@
|
||||
static char* testfile = NULL;
|
||||
static int err_flag = 0;
|
||||
static int max_err_print = 5;
|
||||
int nmismatches = 0; /* warnings encountered */
|
||||
|
||||
/* globals needed for getopt
|
||||
* Although they *should* be defined in unistd.h */
|
||||
@ -435,6 +436,7 @@ static int allwrite_allread_interlaced(int numprocs, int rank, int write_size)
|
||||
|
||||
}
|
||||
}
|
||||
nmismatches += counter;
|
||||
mpio_result = MPI_File_close(&fh);
|
||||
CHECK_SUCCESS(mpio_result);
|
||||
|
||||
@ -556,6 +558,7 @@ static int allwrite_allread_overlap(int numprocs, int rank, int write_size)
|
||||
}
|
||||
}
|
||||
|
||||
nmismatches += counter;
|
||||
mpio_result = MPI_File_close(&fh);
|
||||
CHECK_SUCCESS(mpio_result);
|
||||
HDfree(writebuf);
|
||||
@ -677,6 +680,62 @@ static int onewrite_allread_interlaced(int numprocs, int rank, int write_size)
|
||||
|
||||
}
|
||||
|
||||
static int find_writesize(int rank, int numprocs, int size)
|
||||
{
|
||||
/* Largest number in the file */
|
||||
int tmp = (size-1)*numprocs;
|
||||
int x = 0;
|
||||
int write_size = 0;
|
||||
|
||||
/* Find largest multiple not greater than tmp */
|
||||
while(x <= tmp)
|
||||
{
|
||||
if( (rank == 0) || (rank == 1) )
|
||||
x+=2;
|
||||
else
|
||||
x += (rank+1);
|
||||
|
||||
write_size++;
|
||||
}
|
||||
|
||||
return write_size;
|
||||
}
|
||||
|
||||
static void vrfy_elements(int* a, int* b, int size, int rank)
|
||||
{
|
||||
int i, counter = 0;
|
||||
|
||||
for(i=0; i<size; i++)
|
||||
{
|
||||
if(a[i] != b[i])
|
||||
{
|
||||
if( (rank == 0) && (counter == 0))
|
||||
printf("\n");
|
||||
if(counter++ < max_err_print)
|
||||
fprintf(stderr, "Arrays do not match! Prcoess %d, element %d: [%d, %d]\n", rank, i, a[i], b[i]);
|
||||
else if(counter++ == max_err_print+1)
|
||||
fprintf(stderr, "Printed %d errors. Omitting the rest\n", max_err_print);
|
||||
err_flag = -1;
|
||||
}
|
||||
}
|
||||
nmismatches += counter;
|
||||
fflush(stderr);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
/* print an explanation message by MAIN (0) process.
|
||||
*/
|
||||
header_msg(void)
|
||||
{
|
||||
printf(
|
||||
"Purpose:\n"
|
||||
"This tests if the file system is posix compliant when POSIX and MPI IO APIs\n"
|
||||
"are used. This is for information only and always exits with 0 even when\n"
|
||||
"non-compliance errors are encounter. This is to prevent this test from\n"
|
||||
"aborting the remaining parallel HDF5 tests unnecessarily.\n\n"
|
||||
);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
|
||||
@ -692,6 +751,8 @@ int main(int argc, char* argv[])
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
|
||||
|
||||
if (rank == 0)
|
||||
header_msg();
|
||||
while((opt = getopt(argc, argv, optstring)) != -1)
|
||||
{
|
||||
switch(opt)
|
||||
@ -749,7 +810,9 @@ int main(int argc, char* argv[])
|
||||
testfile = strdup(TESTFNAME);
|
||||
}
|
||||
}
|
||||
printf("Proc %d: testfile=%s\n", rank, testfile);
|
||||
printf("Process %d: testfile=%s\n", rank, testfile);
|
||||
fflush(stdout);
|
||||
MPI_Barrier(MPI_COMM_WORLD);
|
||||
|
||||
if(write_size == 0)
|
||||
{
|
||||
@ -847,52 +910,13 @@ int main(int argc, char* argv[])
|
||||
done:
|
||||
if (testfile)
|
||||
HDfree(testfile);
|
||||
if (rank == 0){
|
||||
printf("\nSummary:\n");
|
||||
fflush(stdout);
|
||||
}
|
||||
MPI_Barrier(MPI_COMM_WORLD);
|
||||
printf("Process %d: encountered %d mismatches.\n", rank, nmismatches);
|
||||
MPI_Finalize();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int find_writesize(int rank, int numprocs, int size)
|
||||
{
|
||||
/* Largest number in the file */
|
||||
int tmp = (size-1)*numprocs;
|
||||
int x = 0;
|
||||
int write_size = 0;
|
||||
|
||||
/* Find largest multiple not greater than tmp */
|
||||
while(x <= tmp)
|
||||
{
|
||||
if( (rank == 0) || (rank == 1) )
|
||||
x+=2;
|
||||
else
|
||||
x += (rank+1);
|
||||
|
||||
write_size++;
|
||||
}
|
||||
|
||||
return write_size;
|
||||
}
|
||||
|
||||
static void vrfy_elements(int* a, int* b, int size, int rank)
|
||||
{
|
||||
int i, counter = 0;
|
||||
|
||||
for(i=0; i<size; i++)
|
||||
{
|
||||
if(a[i] != b[i])
|
||||
{
|
||||
if( (rank == 0) && (counter == 0))
|
||||
printf("\n");
|
||||
if(counter++ < max_err_print)
|
||||
fprintf(stderr, "Arrays do not match! Prcoess %d, element %d: [%d, %d]\n", rank, i, a[i], b[i]);
|
||||
else if(counter++ == max_err_print+1)
|
||||
fprintf(stderr, "Printed %d errors. Omitting the rest\n", max_err_print);
|
||||
err_flag = -1;
|
||||
}
|
||||
}
|
||||
fflush(stderr);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user