Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1c8a5dd0d1 | |||
| 64f8552443 | |||
| da1ceec4f5 | |||
| b12b39dedf | |||
| aac94b38e8 | |||
| 3e918f8001 | |||
| 0be5518252 | |||
| 9fa5becf1e | |||
| 8d04bca079 |
@@ -1,3 +1,11 @@
|
|||||||
|
*.o
|
||||||
|
*.lo
|
||||||
|
*.la
|
||||||
|
*~
|
||||||
|
*.h5
|
||||||
|
*.vtk
|
||||||
|
.deps
|
||||||
|
.libs
|
||||||
/H5hut
|
/H5hut
|
||||||
/INSTALL
|
/INSTALL
|
||||||
/Makefile
|
/Makefile
|
||||||
@@ -5,6 +13,7 @@
|
|||||||
/aclocal.m4
|
/aclocal.m4
|
||||||
/autom4te.cache
|
/autom4te.cache
|
||||||
/build
|
/build
|
||||||
|
/compile
|
||||||
/config.guess
|
/config.guess
|
||||||
/config.h
|
/config.h
|
||||||
/config.h.in
|
/config.h.in
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
AC_INIT([H5hut], [1.99.12], [h5part@lists.psi.ch], H5hut)
|
AC_INIT([H5hut], [1.99.14], [h5part@lists.psi.ch], H5hut)
|
||||||
AC_PREREQ(2.60)
|
AC_PREREQ(2.60)
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
|||||||
@@ -925,6 +925,7 @@ hdf5_set_fapl_mpio_property (
|
|||||||
HDF5_WRAPPER_RETURN (H5_SUCCESS);
|
HDF5_WRAPPER_RETURN (H5_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if H5_VERSION_LE(1,8,12)
|
||||||
static inline h5_err_t
|
static inline h5_err_t
|
||||||
hdf5_set_fapl_mpiposix_property (
|
hdf5_set_fapl_mpiposix_property (
|
||||||
hid_t fapl_id,
|
hid_t fapl_id,
|
||||||
@@ -942,6 +943,7 @@ hdf5_set_fapl_mpiposix_property (
|
|||||||
" the file access property list."));
|
" the file access property list."));
|
||||||
HDF5_WRAPPER_RETURN (H5_SUCCESS);
|
HDF5_WRAPPER_RETURN (H5_SUCCESS);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static inline h5_err_t
|
static inline h5_err_t
|
||||||
hdf5_set_dxpl_mpio_property (
|
hdf5_set_dxpl_mpio_property (
|
||||||
|
|||||||
@@ -139,11 +139,14 @@ h5_err_t mpi_init (
|
|||||||
TRY (f->access_prop = hdf5_create_property(H5P_FILE_ACCESS));
|
TRY (f->access_prop = hdf5_create_property(H5P_FILE_ACCESS));
|
||||||
|
|
||||||
/* select the HDF5 VFD */
|
/* select the HDF5 VFD */
|
||||||
|
#if H5_VERSION_LE(1,8,12)
|
||||||
if (f->mode & H5_VFD_MPIPOSIX) {
|
if (f->mode & H5_VFD_MPIPOSIX) {
|
||||||
h5_info("Selecting MPI-POSIX VFD");
|
h5_info("Selecting MPI-POSIX VFD");
|
||||||
hbool_t use_gpfs = 0; // TODO autodetect GPFS?
|
hbool_t use_gpfs = 0; // TODO autodetect GPFS?
|
||||||
TRY (hdf5_set_fapl_mpiposix_property(f->access_prop, comm, use_gpfs));
|
TRY (hdf5_set_fapl_mpiposix_property(f->access_prop, comm, use_gpfs));
|
||||||
} else {
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
h5_info("Selecting MPI-IO VFD");
|
h5_info("Selecting MPI-IO VFD");
|
||||||
TRY (hdf5_set_fapl_mpio_property(f->access_prop, comm, MPI_INFO_NULL));
|
TRY (hdf5_set_fapl_mpio_property(f->access_prop, comm, MPI_INFO_NULL));
|
||||||
if (f->mode & H5_VFD_INDEPENDENT) {
|
if (f->mode & H5_VFD_INDEPENDENT) {
|
||||||
|
|||||||
@@ -292,7 +292,11 @@ h5_set_throttle (
|
|||||||
const int factor
|
const int factor
|
||||||
) {
|
) {
|
||||||
H5_CORE_API_ENTER (h5_err_t, "f=%p, factor=%d", f, factor);
|
H5_CORE_API_ENTER (h5_err_t, "f=%p, factor=%d", f, factor);
|
||||||
|
#if H5_VERSION_LE(1,8,12)
|
||||||
if ( (f->mode & H5_VFD_INDEPENDENT) || (f->mode & H5_VFD_MPIPOSIX) ) {
|
if ( (f->mode & H5_VFD_INDEPENDENT) || (f->mode & H5_VFD_MPIPOSIX) ) {
|
||||||
|
#else
|
||||||
|
if (f->mode & H5_VFD_INDEPENDENT) {
|
||||||
|
#endif
|
||||||
f->throttle = factor;
|
f->throttle = factor;
|
||||||
h5_info ("Throttling enabled with factor = %d", f->throttle );
|
h5_info ("Throttling enabled with factor = %d", f->throttle );
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -547,8 +547,8 @@ h5b_3d_set_view (
|
|||||||
p->k_end = k_end;
|
p->k_end = k_end;
|
||||||
_normalize_partition(p);
|
_normalize_partition(p);
|
||||||
|
|
||||||
#ifdef PARALLEL_IO
|
|
||||||
h5b_fdata_t *b = f->b;
|
h5b_fdata_t *b = f->b;
|
||||||
|
#ifdef PARALLEL_IO
|
||||||
h5b_partition_t *user_layout;
|
h5b_partition_t *user_layout;
|
||||||
h5b_partition_t *write_layout;
|
h5b_partition_t *write_layout;
|
||||||
|
|
||||||
@@ -565,7 +565,6 @@ h5b_3d_set_view (
|
|||||||
TRY( _dissolve_ghostzones(f, user_layout, write_layout) );
|
TRY( _dissolve_ghostzones(f, user_layout, write_layout) );
|
||||||
b->user_layout[0] = user_layout[f->myproc];
|
b->user_layout[0] = user_layout[f->myproc];
|
||||||
b->write_layout[0] = write_layout[f->myproc];
|
b->write_layout[0] = write_layout[f->myproc];
|
||||||
b->have_layout = 1;
|
|
||||||
|
|
||||||
p = b->user_layout;
|
p = b->user_layout;
|
||||||
h5_debug (
|
h5_debug (
|
||||||
@@ -587,9 +586,9 @@ h5b_3d_set_view (
|
|||||||
|
|
||||||
h5_free(user_layout);
|
h5_free(user_layout);
|
||||||
h5_free(write_layout);
|
h5_free(write_layout);
|
||||||
|
|
||||||
TRY( h5bpriv_release_hyperslab(f) );
|
|
||||||
#endif
|
#endif
|
||||||
|
TRY( h5bpriv_release_hyperslab(f) );
|
||||||
|
b->have_layout = 1;
|
||||||
|
|
||||||
H5_CORE_API_RETURN (H5_SUCCESS);
|
H5_CORE_API_RETURN (H5_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ _select_hyperslab_for_writing (
|
|||||||
/*
|
/*
|
||||||
re-use existing hyperslab
|
re-use existing hyperslab
|
||||||
*/
|
*/
|
||||||
if ( f->b->shape >= 0 ) return H5_SUCCESS;
|
if ( f->b->shape >= 0 )
|
||||||
|
H5_PRIV_FUNC_LEAVE (H5_SUCCESS);
|
||||||
|
|
||||||
h5b_fdata_t *b = f->b;
|
h5b_fdata_t *b = f->b;
|
||||||
h5b_partition_t *p = b->write_layout;
|
h5b_partition_t *p = b->write_layout;
|
||||||
|
|||||||
+2
-1
@@ -28,7 +28,8 @@ extern "C" {
|
|||||||
|
|
||||||
You can also select a "virtual file driver" in the HDF5 layer using:
|
You can also select a "virtual file driver" in the HDF5 layer using:
|
||||||
- H5_VFD_INDEPENDENT: MPI-IO in independent (asynchronous) mode
|
- H5_VFD_INDEPENDENT: MPI-IO in independent (asynchronous) mode
|
||||||
- H5_VFD_MPIPOSIX: parallel I/O implemented directly by HDF5, bypassing MPI-IO
|
- H5_VFD_MPIPOSIX: parallel I/O implemented directly by HDF5, bypassing
|
||||||
|
MPI-IO (only for hdf5 <= 1.8.12)
|
||||||
|
|
||||||
\return File handle.
|
\return File handle.
|
||||||
\return NULL on error.
|
\return NULL on error.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ LDFLAGS += -L${abs_top_builddir}/src/lib
|
|||||||
|
|
||||||
LDADD =
|
LDADD =
|
||||||
|
|
||||||
LDADD += -lH5hut -lvtkIO -lvtkFiltering -lvtkCommon -lvtksys
|
LDADD += -lH5hut -lvtkIO -lvtkFiltering -lvtkCommon -lvtksys -lpthread -ldl
|
||||||
|
|
||||||
|
|
||||||
bin_PROGRAMS =
|
bin_PROGRAMS =
|
||||||
|
|||||||
@@ -14,9 +14,21 @@
|
|||||||
|
|
||||||
#include "H5hut.h"
|
#include "H5hut.h"
|
||||||
|
|
||||||
|
#if !defined (PARALLEL_IO)
|
||||||
|
#define MPI_Init(argc, argv)
|
||||||
|
#define MPI_Comm_size(comm, nprocs) { *nprocs = 1; }
|
||||||
|
#define MPI_Comm_rank(comm, myproc) { *myproc = 0; }
|
||||||
|
#define MPI_Finalize()
|
||||||
|
#define MPI_COMM_WORLD (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
const char* version = "0.1.0";
|
const char* version = "0.1.0";
|
||||||
int convert_boundary = 1;
|
int convert_boundary = 1;
|
||||||
int convert_volume = 0;
|
int convert_volume = 0;
|
||||||
|
double x_shift = 0.0;
|
||||||
|
double y_shift = 0.0;
|
||||||
|
double z_shift = 0.0;
|
||||||
|
|
||||||
const struct option longopts[] = {
|
const struct option longopts[] = {
|
||||||
{"version", no_argument, 0, 'v'},
|
{"version", no_argument, 0, 'v'},
|
||||||
{"help", no_argument, 0, 'h'},
|
{"help", no_argument, 0, 'h'},
|
||||||
@@ -24,6 +36,7 @@ const struct option longopts[] = {
|
|||||||
{"volume", no_argument, &convert_volume, 1},
|
{"volume", no_argument, &convert_volume, 1},
|
||||||
{"no-boundary", no_argument, &convert_boundary, 0},
|
{"no-boundary", no_argument, &convert_boundary, 0},
|
||||||
{"no-volume", no_argument, &convert_volume, 0},
|
{"no-volume", no_argument, &convert_volume, 0},
|
||||||
|
{"shift", required_argument, 0, 's'},
|
||||||
{0,0,0,0},
|
{0,0,0,0},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -75,6 +88,10 @@ init (
|
|||||||
case 'v':
|
case 'v':
|
||||||
print_version (argv[0]);
|
print_version (argv[0]);
|
||||||
break;
|
break;
|
||||||
|
case 's':
|
||||||
|
sscanf (optarg, "%lf,%lf,%lf", &x_shift, &y_shift, &z_shift);
|
||||||
|
cout << "shift = (" << x_shift << ", " << y_shift << ", " << z_shift << ")" << endl;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return argc - optind;
|
return argc - optind;
|
||||||
@@ -106,6 +123,9 @@ convert_vtk2h5grid (
|
|||||||
// add point to H5hut mesh
|
// add point to H5hut mesh
|
||||||
double pt[3];
|
double pt[3];
|
||||||
vtk_grid->GetPoint (pts[i], pt);
|
vtk_grid->GetPoint (pts[i], pt);
|
||||||
|
pt[0] += x_shift;
|
||||||
|
pt[1] += y_shift;
|
||||||
|
pt[2] += z_shift;
|
||||||
H5FedStoreVertex (h5_grid, -1, pt);
|
H5FedStoreVertex (h5_grid, -1, pt);
|
||||||
// map pt index in vtk file to pt index in H5hut file
|
// map pt index in vtk file to pt index in H5hut file
|
||||||
idmap.insert (IdMap::value_type (pts[i], h5_vertex_idx));
|
idmap.insert (IdMap::value_type (pts[i], h5_vertex_idx));
|
||||||
@@ -145,6 +165,10 @@ main (
|
|||||||
int argc,
|
int argc,
|
||||||
char* argv[]
|
char* argv[]
|
||||||
) {
|
) {
|
||||||
|
MPI_Init (&argc, &argv);
|
||||||
|
MPI_Comm comm = MPI_COMM_WORLD;
|
||||||
|
int comm_size;
|
||||||
|
MPI_Comm_size (comm,&comm_size);
|
||||||
|
|
||||||
argc = init (argc, argv);
|
argc = init (argc, argv);
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
@@ -200,5 +224,6 @@ main (
|
|||||||
}
|
}
|
||||||
H5CloseFile (f);
|
H5CloseFile (f);
|
||||||
}
|
}
|
||||||
|
MPI_Finalize ();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user