mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-18 15:15:56 +08:00
[svn-r25659] fix filename generation with prefix for perf test.
tested h5commitest, jam & platypus parallel.
This commit is contained in:
parent
bd9c6d829a
commit
26400c392b
@ -46,10 +46,6 @@
|
||||
# include <mpio.h>
|
||||
#endif
|
||||
|
||||
#ifndef HDF5_PARAPREFIX
|
||||
# define HDF5_PARAPREFIX ""
|
||||
#endif /* !HDF5_PARAPREFIX */
|
||||
|
||||
/* Macro definitions */
|
||||
/* Verify:
|
||||
* if val is false (0), print mesg and if fatal is true (non-zero), die.
|
||||
@ -67,6 +63,8 @@
|
||||
} \
|
||||
} while(0)
|
||||
#define RANK 1
|
||||
#define MAX_PATH 1024
|
||||
|
||||
hsize_t dims[RANK]; /* dataset dim sizes */
|
||||
hsize_t block[RANK], stride[RANK], count[RANK];
|
||||
hssize_t start[RANK];
|
||||
@ -93,6 +91,11 @@ char opt_file[256] = "perftest.out";
|
||||
char opt_pvfstab[256] = "notset";
|
||||
int opt_pvfstab_set = 0;
|
||||
|
||||
const char *FILENAME[] = {
|
||||
opt_file,
|
||||
NULL
|
||||
};
|
||||
|
||||
/* function prototypes */
|
||||
static int parse_args(int argc, char **argv);
|
||||
|
||||
@ -117,8 +120,7 @@ int main(int argc, char **argv)
|
||||
MPI_File fh;
|
||||
MPI_Status status;
|
||||
int nchars;
|
||||
const char *prefix;
|
||||
char *fullname=NULL;
|
||||
char filename[MAX_PATH];
|
||||
herr_t ret; /* Generic return value */
|
||||
|
||||
/* startup MPI and determine the rank of this process */
|
||||
@ -131,21 +133,6 @@ int main(int argc, char **argv)
|
||||
|
||||
if (mynod == 0) printf("# Using hdf5-io calls.\n");
|
||||
|
||||
/* create filename with correct prefix using HDF5_PARAPREFIX */
|
||||
prefix = HDgetenv("HDF5_PARAPREFIX");
|
||||
|
||||
#ifdef HDF5_PARAPREFIX
|
||||
if (!prefix)
|
||||
prefix = HDF5_PARAPREFIX;
|
||||
#endif /* HDF5_PARAPREFIX */
|
||||
fullname = (char*) malloc(strlen(prefix) + strlen(opt_file) + 2);
|
||||
if (strlen(prefix) > 0)
|
||||
{
|
||||
strcpy(fullname, prefix);
|
||||
strcat(fullname, "/");
|
||||
}
|
||||
strcat(fullname, opt_file);
|
||||
|
||||
/* kindof a weird hack- if the location of the pvfstab file was
|
||||
* specified on the command line, then spit out this location into
|
||||
* the appropriate environment variable: */
|
||||
@ -217,8 +204,10 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
h5_fixname_no_suffix(FILENAME[0], acc_tpl, filename, sizeof filename);
|
||||
|
||||
/* create the parallel file */
|
||||
fid = H5Fcreate(fullname, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
|
||||
fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
|
||||
VRFY((fid >= 0), "H5Fcreate succeeded", H5FATAL);
|
||||
|
||||
/* define a contiquous dataset of opt_iter*nprocs*opt_block chars */
|
||||
@ -280,7 +269,7 @@ int main(int argc, char **argv)
|
||||
MPI_Barrier(MPI_COMM_WORLD);
|
||||
|
||||
/* reopen the file for reading */
|
||||
fid=H5Fopen(fullname,H5F_ACC_RDONLY,acc_tpl);
|
||||
fid=H5Fopen(filename,H5F_ACC_RDONLY,acc_tpl);
|
||||
VRFY((fid >= 0), "", H5FATAL);
|
||||
|
||||
/* open the dataset */
|
||||
@ -401,7 +390,6 @@ die_jar_jar_die:
|
||||
|
||||
free(tmp);
|
||||
if (opt_correct) free(tmp2);
|
||||
if(fullname) free(fullname);
|
||||
|
||||
MPI_Finalize();
|
||||
|
||||
@ -426,6 +414,7 @@ parse_args(int argc, char **argv)
|
||||
break;
|
||||
case 'f': /* filename */
|
||||
strncpy(opt_file, optarg, 255);
|
||||
FILENAME[0] = opt_file;
|
||||
break;
|
||||
case 'p': /* pvfstab file */
|
||||
strncpy(opt_pvfstab, optarg, 255);
|
||||
|
@ -92,6 +92,8 @@ MPI_Info h5_io_info_g=MPI_INFO_NULL;/* MPI INFO object for IO */
|
||||
static const char *multi_letters = "msbrglo";
|
||||
|
||||
static herr_t h5_errors(hid_t estack, void *client_data);
|
||||
static char * h5_fixname_real(const char *base_name, hid_t fapl, const char *suffix,
|
||||
char *fullname, size_t size);
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -267,10 +269,60 @@ h5_reset(void)
|
||||
*/
|
||||
char *
|
||||
h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
|
||||
{
|
||||
return (h5_fixname_real(base_name, fapl, ".h5", fullname, size));
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: h5_fixname_no_suffix
|
||||
*
|
||||
* Purpose: Same as h5_fixname but with no suffix appended
|
||||
*
|
||||
* Return: Success: The FULLNAME pointer.
|
||||
*
|
||||
* Failure: NULL if BASENAME or FULLNAME is the null
|
||||
* pointer or if FULLNAME isn't large enough for
|
||||
* the result.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
char *
|
||||
h5_fixname_no_suffix(const char *base_name, hid_t fapl, char *fullname, size_t size)
|
||||
{
|
||||
return (h5_fixname_real(base_name, fapl, NULL, fullname, size));
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: h5_fixname_real
|
||||
*
|
||||
* Purpose: Create a file name from a file base name like `test' and
|
||||
* return it through the FULLNAME (at most SIZE characters
|
||||
* counting the null terminator). The full name is created by
|
||||
* prepending the contents of HDF5_PREFIX (separated from the
|
||||
* base name by a slash) and appending a file extension based on
|
||||
* the driver supplied, resulting in something like
|
||||
* `ufs:/u/matzke/test.h5'.
|
||||
*
|
||||
* Return: Success: The FULLNAME pointer.
|
||||
*
|
||||
* Failure: NULL if BASENAME or FULLNAME is the null
|
||||
* pointer or if FULLNAME isn't large enough for
|
||||
* the result.
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* Thursday, November 19, 1998
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static char *
|
||||
h5_fixname_real(const char *base_name, hid_t fapl, const char *_suffix,
|
||||
char *fullname, size_t size)
|
||||
{
|
||||
const char *prefix = NULL;
|
||||
const char *suffix = ".h5"; /* suffix has default */
|
||||
char *ptr, last = '\0';
|
||||
const char *suffix = _suffix;
|
||||
size_t i, j;
|
||||
hid_t driver = -1;
|
||||
int isppdriver = 0; /* if the driver is MPI parallel */
|
||||
@ -285,11 +337,13 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
|
||||
if((driver = H5Pget_driver(fapl)) < 0)
|
||||
return NULL;
|
||||
|
||||
if(suffix) {
|
||||
if(H5FD_FAMILY == driver)
|
||||
suffix = "%05d.h5";
|
||||
else if (H5FD_MULTI == driver)
|
||||
suffix = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Must first check fapl is not H5P_DEFAULT (-1) because H5FD_XXX
|
||||
* could be of value -1 if it is not defined.
|
||||
|
@ -142,8 +142,8 @@ extern "C" {
|
||||
|
||||
/* Generally useful testing routines */
|
||||
H5TEST_DLL int h5_cleanup(const char *base_name[], hid_t fapl);
|
||||
H5TEST_DLL char *h5_fixname(const char *base_name, hid_t fapl, char *fullname,
|
||||
size_t size);
|
||||
H5TEST_DLL char *h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size);
|
||||
H5TEST_DLL char *h5_fixname_no_suffix(const char *base_name, hid_t fapl, char *fullname, size_t size);
|
||||
H5TEST_DLL hid_t h5_fileaccess(void);
|
||||
H5TEST_DLL void h5_no_hwconv(void);
|
||||
H5TEST_DLL const char *h5_rmprefix(const char *filename);
|
||||
|
Loading…
Reference in New Issue
Block a user