本文整理汇总了C++中H5Dread函数的典型用法代码示例。如果您正苦于以下问题:C++ H5Dread函数的具体用法?C++ H5Dread怎么用?C++ H5Dread使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了H5Dread函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
printf(" Source filename %s\n", filename);
/* Get source dataset name */
len = H5Pget_virtual_dsetname (dcpl, (size_t)i, NULL, 0);
dsetname = (char *)malloc((size_t)len*sizeof(char)+1);
H5Pget_virtual_dsetname (dcpl, (size_t)i, dsetname, len+1);
printf(" Source dataset name %s\n", dsetname);
/* Get selection in the source dataset */
printf(" Selection in the source dataset \n");
src_space = H5Pget_virtual_srcspace (dcpl, (size_t)i);
if (H5Sget_select_type(src_space) == H5S_SEL_HYPERSLABS) {
if (H5Sis_regular_hyperslab(src_space)) {
status = H5Sget_regular_hyperslab (src_space, start_out, stride_out, count_out, block_out);
printf(" start = [%llu, %llu, %llu] \n", (unsigned long long)start_out[0], (unsigned long long)start_out[1], (unsigned long long)start_out[2]);
printf(" stride = [%llu, %llu, %llu] \n", (unsigned long long)stride_out[0], (unsigned long long)stride_out[1], (unsigned long long)stride_out[2]);
printf(" count = [%llu, %llu, %llu] \n", (unsigned long long)count_out[0], (unsigned long long)count_out[1], (unsigned long long)count_out[2]);
printf(" block = [%llu, %llu, %llu] \n", (unsigned long long)block_out[0], (unsigned long long)block_out[1], (unsigned long long)block_out[2]);
}
}
H5Sclose(vspace);
H5Sclose(src_space);
free(filename);
free(dsetname);
}
/*
* Read data from VDS.
*/
vspace = H5Dget_space (vdset);
H5Sget_simple_extent_dims (vspace, vdsdims_out, vdsdims_max_out);
printf ("VDS dimensions second time \n");
printf (" Current: ");
for (i=0; i<RANK; i++)
printf (" %d ", (int)vdsdims_out[i]);
printf ("\n");
/* Read all VDS data */
/* EIP We should be able to do it by using H5S_ALL instead of making selection
* or using H5Sselect_all from vspace.
*/
start[0] = 0;
start[1] = 0;
start[2] = 0;
count[0] = 1;
count[1] = 1;
count[2] = 1;
block[0] = vdsdims_out[0];
block[1] = vdsdims_out[1];
block[2] = vdsdims_out[2];
status = H5Sselect_hyperslab (vspace, H5S_SELECT_SET, start, NULL, count, block);
mem_space = H5Screate_simple(RANK, vdsdims_out, NULL);
status = H5Dread (vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT,
rdata);
printf (" All data: \n");
for (i=0; i < (int)vdsdims_out[0]; i++) {
for (j=0; j < (int)vdsdims_out[1]; j++) {
printf ("(%d, %d, 0)", i, j);
for (k=0; k < (int)vdsdims_out[2]; k++)
printf (" %d ", rdata[i][j][k]);
printf ("\n");
}
}
/* Read VDS, but only data mapeed to dataset a.h5 */
start[0] = 0;
start[1] = 0;
start[2] = 0;
stride[0] = PLANE_STRIDE;
stride[1] = 1;
stride[2] = 1;
count[0] = 2*DIM0_1;
count[1] = 1;
count[2] = 1;
block[0] = 1;
block[1] = vdsdims_out[1];
block[2] = vdsdims_out[2];
dims[0] = 2*DIM0_1;
status = H5Sselect_hyperslab (vspace, H5S_SELECT_SET, start, stride, count, block);
mem_space = H5Screate_simple(RANK, dims, NULL);
status = H5Dread (vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT,
a_rdata);
printf (" All data: \n");
for (i=0; i < 2*DIM0_1; i++) {
for (j=0; j < (int)vdsdims_out[1]; j++) {
printf ("(%d, %d, 0)", i, j);
for (k=0; k < (int)vdsdims_out[2]; k++)
printf (" %d ", a_rdata[i][j][k]);
printf ("\n");
}
}
/*
* Close and release resources.
*/
status = H5Sclose(mem_space);
status = H5Pclose (dcpl);
status = H5Dclose (vdset);
status = H5Fclose (vfile);
return 0;
}
开发者ID:Starlink,项目名称:hdf5,代码行数:101,代码来源:h5_vds-percival-unlim.c
示例2: import_struct
static types::InternalType* import_struct(int dataset)
{
//get struct dims node
int complex = 0;
std::vector<int> pdims;
int size = getDimsNode(dataset, &complex, pdims);
types::Struct* str = new types::Struct(static_cast<int>(pdims.size()), pdims.data());
size = str->getSize();
if (size == 0)
{
//empty struct
closeList6(dataset);
delete str;
return new types::Struct();
}
types::SingleStruct** sstr = str->get();
int fieldCount = 0;
int ret = getListDims6(dataset, &fieldCount);
if (ret < 0)
{
closeList6(dataset);
return str;
}
//get fields name
int dfield = getDataSetIdFromName(dataset, "__fields__");
int dim = 0;
getDatasetInfo(dfield, &complex, &dim, NULL);
std::vector<int> d(dim);
size = getDatasetInfo(dfield, &complex, &dim, d.data());
if (size < 0)
{
closeList6(dataset);
delete str;
return nullptr;
}
//get dims value
std::vector<char*> fields(size);
readStringMatrix(dfield, fields.data());
//open __refs__ node
int refs = getDataSetIdFromName(dataset, "__refs__");
for (const auto & name : fields)
{
wchar_t* field = to_wide_string(name);
str->addField(field);
int dataref = getDataSetIdFromName(dataset, name);
if (dataref < 0)
{
closeList6(dataset);
freeStringMatrix(dfield, fields.data());
FREE(field);
delete str;
return nullptr;
}
int refdim = 0;
getDatasetInfo(dataref, &complex, &refdim, NULL);
std::vector<int> refdims(refdim);
int refcount = getDatasetInfo(dataref, &complex, &refdim, refdims.data());
std::vector<hobj_ref_t> vrefs(refcount);
ret = H5Dread(dataref, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, vrefs.data());
if (ret < 0)
{
freeStringMatrix(dfield, fields.data());
FREE(field);
delete str;
return nullptr;
}
//import field
for (int j = 0; j < refcount; ++j)
{
int data = H5Rdereference(refs, H5R_OBJECT, &vrefs[j]);
if (data < 0)
{
freeStringMatrix(dfield, fields.data());
FREE(field);
delete str;
return nullptr;
}
types::InternalType* val = import_data(data);
if (val == nullptr)
{
freeStringMatrix(dfield, fields.data());
FREE(field);
delete str;
return nullptr;
}
sstr[j]->set(field, val);
//.........这里部分代码省略.........
开发者ID:ScilabOrg,项目名称:scilab,代码行数:101,代码来源:sci_hdf5_load_v3.cpp
示例3: switch
CPLErr HDF5ImageDataset::CreateProjections()
{
switch(iSubdatasetType)
{
case CSK_PRODUCT:
{
const char *osMissionLevel = NULL;
int productType = PROD_UNKNOWN;
if(GetMetadataItem("Product_Type")!=NULL)
{
//Get the format's level
osMissionLevel = HDF5Dataset::GetMetadataItem("Product_Type");
if(EQUALN(osMissionLevel,"RAW",3))
productType = PROD_CSK_L0;
if(EQUALN(osMissionLevel,"SSC",3))
productType = PROD_CSK_L1A;
if(EQUALN(osMissionLevel,"DGM",3))
productType = PROD_CSK_L1B;
if(EQUALN(osMissionLevel,"GEC",3))
productType = PROD_CSK_L1C;
if(EQUALN(osMissionLevel,"GTC",3))
productType = PROD_CSK_L1D;
}
CaptureCSKGeoTransform(productType);
CaptureCSKGeolocation(productType);
CaptureCSKGCPs(productType);
break;
}
case UNKNOWN_PRODUCT:
{
#define NBGCPLAT 100
#define NBGCPLON 30
hid_t LatitudeDatasetID = -1;
hid_t LongitudeDatasetID = -1;
hid_t LatitudeDataspaceID;
hid_t LongitudeDataspaceID;
float* Latitude;
float* Longitude;
int i,j;
int nDeltaLat;
int nDeltaLon;
nDeltaLat = nRasterYSize / NBGCPLAT;
nDeltaLon = nRasterXSize / NBGCPLON;
if( nDeltaLat == 0 || nDeltaLon == 0 )
return CE_None;
/* -------------------------------------------------------------------- */
/* Create HDF5 Data Hierarchy in a link list */
/* -------------------------------------------------------------------- */
poH5Objects=HDF5FindDatasetObjects( poH5RootGroup, "Latitude" );
if( !poH5Objects ) {
return CE_None;
}
/* -------------------------------------------------------------------- */
/* The Lattitude and Longitude arrays must have a rank of 2 to */
/* retrieve GCPs. */
/* -------------------------------------------------------------------- */
if( poH5Objects->nRank != 2 ) {
return CE_None;
}
/* -------------------------------------------------------------------- */
/* Retrieve HDF5 data information */
/* -------------------------------------------------------------------- */
LatitudeDatasetID = H5Dopen( hHDF5,poH5Objects->pszPath );
LatitudeDataspaceID = H5Dget_space( dataset_id );
poH5Objects=HDF5FindDatasetObjects( poH5RootGroup, "Longitude" );
LongitudeDatasetID = H5Dopen( hHDF5,poH5Objects->pszPath );
LongitudeDataspaceID = H5Dget_space( dataset_id );
if( ( LatitudeDatasetID > 0 ) && ( LongitudeDatasetID > 0) ) {
Latitude = ( float * ) CPLCalloc( nRasterYSize*nRasterXSize,
sizeof( float ) );
Longitude = ( float * ) CPLCalloc( nRasterYSize*nRasterXSize,
sizeof( float ) );
memset( Latitude, 0, nRasterXSize*nRasterYSize*sizeof( float ) );
memset( Longitude, 0, nRasterXSize*nRasterYSize*sizeof( float ) );
H5Dread ( LatitudeDatasetID,
H5T_NATIVE_FLOAT,
H5S_ALL,
H5S_ALL,
H5P_DEFAULT,
Latitude );
H5Dread ( LongitudeDatasetID,
H5T_NATIVE_FLOAT,
//.........这里部分代码省略.........
开发者ID:imincik,项目名称:pkg-gdal,代码行数:101,代码来源:hdf5imagedataset.cpp
示例4: main
int
main (int argc, char **argv)
{
hid_t file_id, dset_id, grp_id;
hid_t fapl, sid, mem_dataspace;
herr_t ret;
char filename[1024];
int mpi_size, mpi_rank, ndims, i, j;
MPI_Comm comm = MPI_COMM_WORLD;
MPI_Info info = MPI_INFO_NULL;
hsize_t dims[RANK];
hsize_t start[RANK];
hsize_t count[RANK];
hsize_t stride[RANK];
hsize_t block[RANK];
DATATYPE *data_array = NULL, *dataptr; /* data buffer */
MPI_Init(&argc, &argv);
MPI_Comm_size(comm, &mpi_size);
MPI_Comm_rank(comm, &mpi_rank);
if(MAINPROCESS)
TESTING("proper shutdown of HDF5 library");
/* Set up file access property list with parallel I/O access */
fapl = H5Pcreate(H5P_FILE_ACCESS);
VRFY((fapl >= 0), "H5Pcreate succeeded");
ret = H5Pset_fapl_mpio(fapl, comm, info);
VRFY((ret >= 0), "");
h5_fixname(FILENAME[0], fapl, filename, sizeof filename);
file_id = H5Fopen(filename, H5F_ACC_RDONLY, fapl);
VRFY((file_id >= 0), "H5Fopen succeeded");
grp_id = H5Gopen2(file_id, "Group", H5P_DEFAULT);
VRFY((grp_id >= 0), "H5Gopen succeeded");
dset_id = H5Dopen2(grp_id, "Dataset", H5P_DEFAULT);
VRFY((dset_id >= 0), "H5Dopen succeeded");
sid = H5Dget_space(dset_id);
VRFY((dset_id >= 0), "H5Dget_space succeeded");
ndims = H5Sget_simple_extent_dims(sid, dims, NULL);
VRFY((ndims == 2), "H5Sget_simple_extent_dims succeeded");
VRFY(dims[0] == ROW_FACTOR*mpi_size, "Wrong dataset dimensions");
VRFY(dims[1] == COL_FACTOR*mpi_size, "Wrong dataset dimensions");
/* allocate memory for data buffer */
data_array = (DATATYPE *)HDmalloc(dims[0]*dims[1]*sizeof(DATATYPE));
VRFY((data_array != NULL), "data_array HDmalloc succeeded");
/* Each process takes a slabs of rows. */
block[0] = dims[0]/mpi_size;
block[1] = dims[1];
stride[0] = block[0];
stride[1] = block[1];
count[0] = 1;
count[1] = 1;
start[0] = mpi_rank*block[0];
start[1] = 0;
ret = H5Sselect_hyperslab(sid, H5S_SELECT_SET, start, stride, count, block);
VRFY((ret >= 0), "H5Sset_hyperslab succeeded");
/* create a memory dataspace independently */
mem_dataspace = H5Screate_simple (RANK, block, NULL);
VRFY((mem_dataspace >= 0), "");
/* write data independently */
ret = H5Dread(dset_id, H5T_NATIVE_INT, mem_dataspace, sid,
H5P_DEFAULT, data_array);
VRFY((ret >= 0), "H5Dwrite succeeded");
dataptr = data_array;
for (i=0; i < block[0]; i++){
for (j=0; j < block[1]; j++){
if(*dataptr != mpi_rank+1) {
printf("Dataset Verify failed at [%lu][%lu](row %lu, col %lu): expect %d, got %d\n",
(unsigned long)i, (unsigned long)j,
(unsigned long)(i+start[0]), (unsigned long)(j+start[1]),
mpi_rank+1, *(dataptr));
nerrors ++;
}
dataptr++;
}
}
MPI_Finalize();
HDremove(filename);
/* release data buffers */
if(data_array)
HDfree(data_array);
nerrors += GetTestNumErrs();
if(MAINPROCESS) {
if(0 == nerrors)
PASSED()
//.........这里部分代码省略.........
开发者ID:Starlink,项目名称:hdf5,代码行数:101,代码来源:t_prestart.c
示例5: H5Fopen
bool HDFWalkerInput_0_0::put(xmlNodePtr cur)
{
hid_t h_file = H5Fopen(FileName.c_str(),H5F_ACC_RDWR,H5P_DEFAULT);
hid_t h_config = H5Gopen(h_file,"config_collection");
if(h_config<0)
{
app_error() << " HDFWalkerInput_0_0::put config_collection is not found in " << FileName << "." << endl;
H5Fclose(h_file);
return false;
}
int NumSets=0;
hid_t h1=H5Dopen(h_config,"NumOfConfigurations");
if(h1>-1)
{
H5Dread(h1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT,&(NumSets));
H5Dclose(h1);
}
if(!NumSets)
{
//resolve the integer and long problem with 64bit
hsize_t nset;
H5Gget_num_objs(h_config,&nset);
NumSets=nset;
}
if(!NumSets)
{
app_error() << " HDFWalkerInput_0_0::put " << FileName << " does not contain walkers!" << endl;
H5Gclose(h_config);
H5Gclose(h_file);
return false;
}
//select the last block
int selected=NumSets-1;
typedef MCWalkerConfiguration::PosType PosType;
typedef MCWalkerConfiguration::PropertyContainer_t ProtertyContainer_t;
typedef Matrix<PosType> PosContainer_t;
int nwt = 0;
int npt = 0;
//2D array of PosTypes (x,y,z) indexed by (walker,particle)
PosContainer_t Pos_temp;
//open the group
char GrpName[128];
sprintf(GrpName,"config%04d",selected);
hid_t group_id = H5Gopen(h_config,GrpName);
HDFAttribIO<PosContainer_t> Pos_in(Pos_temp);
//read the dataset
Pos_in.read(group_id,"coord");
//close groups
H5Gclose(group_id);
H5Gclose(h_config);
H5Fclose(h_file);
/*check to see if the number of walkers and particles is consistent with W */
int nptcl = Pos_temp.cols();
nwt = Pos_temp.rows();
int curWalker = targetW.getActiveWalkers();
if(curWalker)
{
app_log() << "HDFWalkerInput_0_0::put Adding " << nwt << " walkers to " << curWalker << endl;
targetW.createWalkers(nwt);
}
else
{
app_log() << "HDFWalkerInput_0_0::put Creating " << nwt << " walkers." << endl;
targetW.resize(nwt,nptcl);
}
//assign configurations to W
int iw=0;
MCWalkerConfiguration::iterator it = targetW.begin()+curWalker;
MCWalkerConfiguration::iterator it_end = targetW.end();
while(it != it_end)
{
std::copy(Pos_temp[iw],Pos_temp[iw+1], (*it)->R.begin());
++it;
++iw;
}
return true;
}
开发者ID:digideskio,项目名称:qmcpack,代码行数:77,代码来源:HDFWalkerInput_0_0.cpp
示例6: memset
CPLErr BAGRasterBand::IReadBlock( int nBlockXOff, int nBlockYOff,
void *pImage )
{
const int nXOff = nBlockXOff * nBlockXSize;
H5OFFSET_TYPE offset[3] = {
static_cast<H5OFFSET_TYPE>(
std::max(0, nRasterYSize - (nBlockYOff + 1) * nBlockYSize)),
static_cast<H5OFFSET_TYPE>(nXOff),
static_cast<H5OFFSET_TYPE>(0)
};
const int nSizeOfData = static_cast<int>(H5Tget_size(native));
memset(pImage, 0, nBlockXSize * nBlockYSize * nSizeOfData);
// Blocksize may not be a multiple of imagesize.
hsize_t count[3] = {
std::min(static_cast<hsize_t>(nBlockYSize), GetYSize() - offset[0]),
std::min(static_cast<hsize_t>(nBlockXSize), GetXSize() - offset[1]),
static_cast<hsize_t>(0)
};
if( nRasterYSize - (nBlockYOff + 1) * nBlockYSize < 0 )
{
count[0] += (nRasterYSize - (nBlockYOff + 1) * nBlockYSize);
}
// Select block from file space.
{
const herr_t status =
H5Sselect_hyperslab(dataspace, H5S_SELECT_SET,
offset, nullptr, count, nullptr);
if( status < 0 )
return CE_Failure;
}
// Create memory space to receive the data.
hsize_t col_dims[3] = {
static_cast<hsize_t>(nBlockYSize),
static_cast<hsize_t>(nBlockXSize),
static_cast<hsize_t>(0)
};
const int rank = 2;
const hid_t memspace = H5Screate_simple(rank, col_dims, nullptr);
H5OFFSET_TYPE mem_offset[3] = { 0, 0, 0 };
const herr_t status =
H5Sselect_hyperslab(memspace, H5S_SELECT_SET,
mem_offset, nullptr, count, nullptr);
if( status < 0 )
return CE_Failure;
const herr_t status_read =
H5Dread(hDatasetID, native, memspace, dataspace, H5P_DEFAULT, pImage);
H5Sclose(memspace);
// Y flip the data.
const int nLinesToFlip = static_cast<int>(count[0]);
const int nLineSize = nSizeOfData * nBlockXSize;
GByte * const pabyTemp = static_cast<GByte *>(CPLMalloc(nLineSize));
GByte * const pbyImage = static_cast<GByte *>(pImage);
for( int iY = 0; iY < nLinesToFlip / 2; iY++ )
{
memcpy(pabyTemp, pbyImage + iY * nLineSize, nLineSize);
memcpy(pbyImage + iY * nLineSize,
pbyImage + (nLinesToFlip - iY - 1) * nLineSize,
nLineSize);
memcpy(pbyImage + (nLinesToFlip - iY - 1) * nLineSize, pabyTemp,
nLineSize);
}
CPLFree(pabyTemp);
// Return success or failure.
if( status_read < 0 )
{
CPLError(CE_Failure, CPLE_AppDefined, "H5Dread() failed for block.");
return CE_Failure;
}
return CE_None;
}
开发者ID:ksshannon,项目名称:gdal,代码行数:82,代码来源:bagdataset.cpp
示例7: VecLoad_HDF5
//.........这里部分代码省略.........
#if (H5_VERS_MAJOR * 10000 + H5_VERS_MINOR * 100 + H5_VERS_RELEASE >= 10800)
dset_id = H5Dopen2(group, vecname, H5P_DEFAULT);
#else
dset_id = H5Dopen(group, vecname);
#endif
if (dset_id == -1) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_LIB,"Could not H5Dopen() with Vec named %s",vecname);
/* Retrieve the dataspace for the dataset */
filespace = H5Dget_space(dset_id);
if (filespace == -1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_LIB,"Could not H5Dget_space()");
dim = 0;
if (timestep >= 0) ++dim;
++dim;
if (bs >= 1) ++dim;
#if defined(PETSC_USE_COMPLEX)
++dim;
#endif
rdim = H5Sget_simple_extent_dims(filespace, dims, NULL);
#if defined(PETSC_USE_COMPLEX)
bsInd = rdim-2;
#else
bsInd = rdim-1;
#endif
lenInd = timestep >= 0 ? 1 : 0;
if (rdim != dim) {
if (rdim == dim+1 && bs == -1) bs = dims[bsInd];
else SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_FILE_UNEXPECTED, "Dimension of array in file %d not %d as expected",rdim,dim);
} else if (bs >= 1 && bs != (PetscInt) dims[bsInd]) SETERRQ2(PETSC_COMM_SELF, PETSC_ERR_FILE_UNEXPECTED, "Block size %d specified for vector does not match blocksize in file %d",bs,dims[bsInd]);
/* Set Vec sizes,blocksize,and type if not already set */
if ((xin)->map->n < 0 && (xin)->map->N < 0) {
ierr = VecSetSizes(xin, PETSC_DECIDE, dims[lenInd]*bs);CHKERRQ(ierr);
}
/* If sizes and type already set,check if the vector global size is correct */
ierr = VecGetSize(xin, &N);CHKERRQ(ierr);
if (N/bs != (PetscInt) dims[lenInd]) SETERRQ2(PETSC_COMM_SELF,PETSC_ERR_FILE_UNEXPECTED, "Vector in file different length (%d) then input vector (%d)", (PetscInt) dims[lenInd], N/bs);
/* Each process defines a dataset and reads it from the hyperslab in the file */
ierr = VecGetLocalSize(xin, &n);CHKERRQ(ierr);
dim = 0;
if (timestep >= 0) {
count[dim] = 1;
++dim;
}
ierr = PetscHDF5IntCast(n/bs,count + dim);CHKERRQ(ierr);
++dim;
if (bs >= 1) {
count[dim] = bs;
++dim;
}
#if defined(PETSC_USE_COMPLEX)
count[dim] = 2;
++dim;
#endif
memspace = H5Screate_simple(dim, count, NULL);
if (memspace == -1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_LIB,"Could not H5Screate_simple()");
/* Select hyperslab in the file */
ierr = VecGetOwnershipRange(xin, &low, NULL);CHKERRQ(ierr);
dim = 0;
if (timestep >= 0) {
offset[dim] = timestep;
++dim;
}
ierr = PetscHDF5IntCast(low/bs,offset + dim);CHKERRQ(ierr);
++dim;
if (bs >= 1) {
offset[dim] = 0;
++dim;
}
#if defined(PETSC_USE_COMPLEX)
offset[dim] = 0;
++dim;
#endif
status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL, count, NULL);CHKERRQ(status);
/* Create property list for collective dataset read */
plist_id = H5Pcreate(H5P_DATASET_XFER);
if (plist_id == -1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_LIB,"Could not H5Pcreate()");
#if defined(PETSC_HAVE_H5PSET_FAPL_MPIO)
status = H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE);CHKERRQ(status);
#endif
/* To write dataset independently use H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_INDEPENDENT) */
ierr = VecGetArray(xin, &x);CHKERRQ(ierr);
status = H5Dread(dset_id, H5T_NATIVE_DOUBLE, memspace, filespace, plist_id, x);CHKERRQ(status);
ierr = VecRestoreArray(xin, &x);CHKERRQ(ierr);
/* Close/release resources */
if (group != file_id) {
status = H5Gclose(group);CHKERRQ(status);
}
status = H5Pclose(plist_id);CHKERRQ(status);
status = H5Sclose(filespace);CHKERRQ(status);
status = H5Sclose(memspace);CHKERRQ(status);
status = H5Dclose(dset_id);CHKERRQ(status);
ierr = VecAssemblyBegin(xin);CHKERRQ(ierr);
ierr = VecAssemblyEnd(xin);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
开发者ID:ZJLi2013,项目名称:petsc,代码行数:101,代码来源:vecio.c
示例8: diff_datasetid
//.........这里部分代码省略.........
H5Tclose(m_tid2);
if ((m_tid2=h5tools_get_native_type(f_tid1)) < 0)
goto error;
m_size2 = H5Tget_size( m_tid2 );
}
}
assert(m_size1==m_size2);
/* print names */
if (obj1_name) {
name1=diff_basename(obj1_name);
}
if (obj2_name) {
name2=diff_basename(obj2_name);
}
/*-------------------------------------------------------------------------
* read/compare
*-------------------------------------------------------------------------
*/
need = (size_t)(nelmts1*m_size1); /* bytes needed */
if ( need < H5TOOLS_MALLOCSIZE)
{
buf1 = HDmalloc(need);
buf2 = HDmalloc(need);
}
if ( buf1!=NULL && buf2!=NULL)
{
if ( H5Dread(did1,m_tid1,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf1) < 0 )
goto error;
if ( H5Dread(did2,m_tid2,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf2) < 0 )
goto error;
/* array diff */
nfound = diff_array(buf1,
buf2,
nelmts1,
(hsize_t)0,
rank1,
dims1,
options,
name1,
name2,
m_tid1,
did1,
did2);
}
else /* possibly not enough memory, read/compare by hyperslabs */
{
size_t p_type_nbytes = m_size1; /*size of memory type */
hsize_t p_nelmts = nelmts1; /*total selected elmts */
hsize_t elmtno; /*counter */
int carry; /*counter carry value */
unsigned int vl_data = 0; /*contains VL datatypes */
/* stripmine info */
hsize_t sm_size[H5S_MAX_RANK]; /*stripmine size */
hsize_t sm_nbytes; /*bytes per stripmine */
hsize_t sm_nelmts; /*elements per stripmine*/
开发者ID:ihutch,项目名称:sceptic3D,代码行数:67,代码来源:h5diff_dset.c
示例9: main
int
main (int argc, char **argv)
{
char myh5[STR_LENG] = { 0 };
int rec_start = rec_max/2;
float *qr, *qi;
float k1r, k1i, k2r, k2i, x1, x2;
char name[500];
double chi1[6];
hid_t memspace;
hsize_t count[2];
hsize_t offset[2];
hsize_t col_dims[1];
hid_t file_id, dataset_id, dataspace_id;
hid_t filespace;
herr_t status;
offset[0] = 0;
count[0] = rec_max;
count[1] = 1;
col_dims[0] = rec_max;
qr = (float *) malloc (sizeof (float) * rec_max);
qi = (float *) malloc (sizeof (float) * rec_max);
int pair, rec, k, g;
if (argc == 3)
{
pair=atoi(argv[1]);
offset[1]=atoi(argv[2]);
}
else
{
printf ("Error: usage: dist_chi0 sample_index beta_index\n");
return 0;
}
// for (pair = 0; pair < SAMPLES; pair++) {
sprintf(myh5,"sample_pair_%05d.h5",pair);
file_id = H5Fopen (myh5, H5F_ACC_RDONLY, H5P_DEFAULT);
if(file_id<0){
printf("File do not exist!\n");
exit(0);
}
for(k=0;k<6;k++)
{
x1 = 0.0f;
k1r = 0.0f;
k1i= 0.0f;
sprintf (name, "qk_real_%02d",k+4);
dataset_id = H5Dopen2 (file_id, name, H5P_DEFAULT);
filespace = H5Dget_space (dataset_id);
memspace = H5Screate_simple (RANKC, col_dims, NULL);
status = H5Sselect_hyperslab (filespace, H5S_SELECT_SET, offset, NULL,
count, NULL);
status =
H5Dread (dataset_id, H5T_NATIVE_FLOAT, memspace, filespace,
H5P_DEFAULT, qr);
status = H5Dclose (dataset_id);
sprintf (name, "qk_imag_%02d",k+4);
dataset_id = H5Dopen2 (file_id, name, H5P_DEFAULT);
filespace = H5Dget_space (dataset_id);
memspace = H5Screate_simple (RANKC, col_dims, NULL);
status = H5Sselect_hyperslab (filespace, H5S_SELECT_SET, offset, NULL,
count, NULL);
status =
H5Dread (dataset_id, H5T_NATIVE_FLOAT, memspace, filespace,
H5P_DEFAULT, qi);
status = H5Dclose (dataset_id);
for (rec = rec_start; rec < rec_max; rec++) {
x1 += qr[rec] * qr[rec] + qi[rec]*qi[rec];
k1r += qr[rec];
k1i += qi[rec];
}
double ax1 = x1 / (rec_max - rec_start);
double aq1r = k1r / (rec_max - rec_start);
double aq1i = k1i / (rec_max - rec_start);
//.........这里部分代码省略.........
开发者ID:GeauxMushroom,项目名称:GeauxIsing,代码行数:101,代码来源:dist_chi2.c
示例10: phdf5read2
void
phdf5read2(char *filename, hio_context_t context)
{
hid_t fid1; /* HDF5 file IDs */
hid_t acc_tpl1; /* File access templates */
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */
DATATYPE data_origin1[SPACE1_DIM1][SPACE1_DIM2]; /* expected data buffer */
hsize_t start[SPACE1_RANK]; /* for hyperslab setting */
hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */
herr_t ret; /* Generic return value */
if (verbose)
printf("Collective read test on file %s\n", filename);
/* -------------------
* OPEN AN HDF5 FILE
* -------------------*/
/* setup file access template with hio IO access. */
acc_tpl1 = H5Pcreate (H5P_FILE_ACCESS);
assert(acc_tpl1 != FAIL);
MESG("H5Pcreate access succeed");
/* set Hio access with communicator */
H5FD_hio_set_read_io(&settings, H5FD_HIO_STRIDED);
ret = H5Pset_fapl_hio(acc_tpl1, &settings);
assert(ret != FAIL);
MESG("H5Pset_fapl_hio succeed");
/* open the file collectively */
fid1=H5Fopen(filename,H5F_ACC_RDONLY, acc_tpl1);
assert(fid1 != FAIL);
MESG("H5Fopen succeed");
/* Release file-access template */
ret=H5Pclose(acc_tpl1);
assert(ret != FAIL);
/* --------------------------
* Open the datasets in it
* ------------------------- */
/* open the dataset1 collectively */
dataset1 = H5Dopen2(fid1, DATASETNAME1, H5P_DEFAULT);
assert(dataset1 != FAIL);
MESG("H5Dopen2 succeed");
/* open another dataset collectively */
dataset2 = H5Dopen2(fid1, DATASETNAME2, H5P_DEFAULT);
assert(dataset2 != FAIL);
MESG("H5Dopen2 2 succeed");
/*
* Set up dimensions of the slab this process accesses.
*/
/* Dataset1: each process takes a block of columns. */
slab_set(start, count, stride, BYROW);
if (verbose)
printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n",
(unsigned long)start[0], (unsigned long)start[1],
(unsigned long)count[0], (unsigned long)count[1],
(unsigned long)(count[0]*count[1]));
/* create a file dataspace independently */
file_dataspace = H5Dget_space (dataset1);
assert(file_dataspace != FAIL);
MESG("H5Dget_space succeed");
ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride,
count, NULL);
assert(ret != FAIL);
MESG("H5Sset_hyperslab succeed");
/* create a memory dataspace independently */
mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL);
assert (mem_dataspace != FAIL);
/* fill dataset with test data */
dataset_fill(start, count, stride, &data_origin1[0][0]);
MESG("data_array initialized");
if (verbose){
MESG("data_array created");
dataset_print(start, count, stride, &data_origin1[0][0]);
}
/* read data collectively */
ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
H5P_DEFAULT, data_array1);
assert(ret != FAIL);
MESG("H5Dread succeed");
/* verify the read data with original expected data */
ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]);
assert(ret != FAIL);
//.........这里部分代码省略.........
开发者ID:hugegreenbug,项目名称:libhio,代码行数:101,代码来源:hdf5_hio_example.c
示例11: _get_all_samples
static void* _get_all_samples(hid_t gid_series, char* nam_series, uint32_t type,
int nsamples)
{
void* data = NULL;
hid_t id_data_set, dtyp_memory, g_sample, sz_dest;
herr_t ec;
int smpx ,len;
void *data_prior = NULL, *data_cur = NULL;
char name_sample[MAX_GROUP_NAME+1];
hdf5_api_ops_t* ops;
ops = profile_factory(type);
if (ops == NULL) {
error("Failed to create operations for %s",
acct_gather_profile_type_to_string(type));
return NULL;
}
data = (*(ops->init_job_series))(nsamples);
if (data == NULL) {
xfree(ops);
error("Failed to get memory for combined data");
return NULL;
}
dtyp_memory = (*(ops->create_memory_datatype))();
if (dtyp_memory < 0) {
xfree(ops);
xfree(data);
error("Failed to create %s memory datatype",
acct_gather_profile_type_to_string(type));
return NULL;
}
for (smpx=0; smpx<nsamples; smpx++) {
len = H5Lget_name_by_idx(gid_series, ".", H5_INDEX_NAME,
H5_ITER_INC, smpx, name_sample,
MAX_GROUP_NAME, H5P_DEFAULT);
if (len<1 || len>MAX_GROUP_NAME) {
error("Invalid group name %s", name_sample);
continue;
}
g_sample = H5Gopen(gid_series, name_sample, H5P_DEFAULT);
if (g_sample < 0) {
info("Failed to open %s", name_sample);
}
id_data_set = H5Dopen(g_sample, get_data_set_name(name_sample),
H5P_DEFAULT);
if (id_data_set < 0) {
H5Gclose(g_sample);
error("Failed to open %s dataset",
acct_gather_profile_type_to_string(type));
continue;
}
sz_dest = (*(ops->dataset_size))();
data_cur = xmalloc(sz_dest);
if (data_cur == NULL) {
H5Dclose(id_data_set);
H5Gclose(g_sample);
error("Failed to get memory for prior data");
continue;
}
ec = H5Dread(id_data_set, dtyp_memory, H5S_ALL, H5S_ALL,
H5P_DEFAULT, data_cur);
if (ec < 0) {
xfree(data_cur);
H5Dclose(id_data_set);
H5Gclose(g_sample);
error("Failed to read %s data",
acct_gather_profile_type_to_string(type));
continue;
}
(*(ops->merge_step_series))(g_sample, data_prior, data_cur,
data+(smpx)*sz_dest);
xfree(data_prior);
data_prior = data_cur;
H5Dclose(id_data_set);
H5Gclose(g_sample);
}
xfree(data_cur);
H5Tclose(dtyp_memory);
xfree(ops);
return data;
}
开发者ID:FredHutch,项目名称:slurm,代码行数:84,代码来源:sh5util.c
示例12: phdf5read1
/* Example of using the hio HDF5 library to read a dataset */
void
phdf5read1(char *filename, hio_context_t context)
{
hid_t fid1; /* HDF5 file IDs */
hid_t acc_tpl1; /* File access templates */
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */
DATATYPE data_origin1[SPACE1_DIM1][SPACE1_DIM2]; /* expected data buffer */
hsize_t start[SPACE1_RANK]; /* for hyperslab setting */
hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */
herr_t ret; /* Generic return value */
if (verbose)
printf("Independent read test on file %s\n", filename);
/* setup file access template */
acc_tpl1 = H5Pcreate (H5P_FILE_ACCESS);
assert(acc_tpl1 != FAIL);
/* set Hio access with communicator */
H5FD_hio_set_read_io(&settings, H5FD_HIO_CONTIGUOUS);
ret = H5Pset_fapl_hio(acc_tpl1, &settings);
assert(ret != FAIL);
/* open the file collectively */
fid1=H5Fopen(filename,H5F_ACC_RDONLY,acc_tpl1);
assert(fid1 != FAIL);
/* Release file-access template */
ret=H5Pclose(acc_tpl1);
assert(ret != FAIL);
/* open the dataset1 collectively */
dataset1 = H5Dopen2(fid1, DATASETNAME1, H5P_DEFAULT);
assert(dataset1 != FAIL);
/* open another dataset collectively */
dataset2 = H5Dopen2(fid1, DATASETNAME1, H5P_DEFAULT);
assert(dataset2 != FAIL);
/* set up dimensions of the slab this process accesses */
start[0] = mpi_rank*SPACE1_DIM1/mpi_size;
start[1] = 0;
count[0] = SPACE1_DIM1/mpi_size;
count[1] = SPACE1_DIM2;
stride[0] = 1;
stride[1] =1;
if (verbose)
printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n",
(unsigned long)start[0], (unsigned long)start[1],
(unsigned long)count[0], (unsigned long)count[1],
(unsigned long)(count[0]*count[1]));
/* create a file dataspace independently */
file_dataspace = H5Dget_space (dataset1);
assert(file_dataspace != FAIL);
ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride,
count, NULL);
assert(ret != FAIL);
/* create a memory dataspace independently */
mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL);
assert (mem_dataspace != FAIL);
/* fill dataset with test data */
dataset_fill(start, count, stride, &data_origin1[0][0]);
/* read data blocking and contiguous */
ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
H5P_DEFAULT, data_array1);
assert(ret != FAIL);
/* verify the read data with original expected data */
ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]);
assert(ret != FAIL);
ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace,
H5P_DEFAULT, data_array1);
assert(ret != FAIL);
/* verify the read data with original expected data */
ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]);
assert(ret == 0);
/* close dataset collectively */
ret=H5Dclose(dataset1);
assert(ret != FAIL);
ret=H5Dclose(dataset2);
assert(ret != FAIL);
/* release all IDs created */
H5Sclose(file_dataspace);
/* close the file collectively */
//.........这里部分代码省略.........
开发者ID:hugegreenbug,项目名称:libhio,代码行数:101,代码来源:hdf5_hio_example.c
示例13: ReadHDF5file
bool ReadHDF5file(char* filename, char* fieldname, dtype** outArray, int* dims)
{
#ifdef _HDF5_H
// Open the file
hid_t file_id;
file_id = H5Fopen(filename,H5F_ACC_RDONLY,H5P_DEFAULT);
//? file_id = H5Fopen(filename,H5F_ACC_RDONLY,faplist_id);
if(file_id < 0){
printf("ERROR: Could not open file %s\n",filename);
return false;
}
// Open the dataset
hid_t dataset_id;
hid_t dataspace_id;
dataset_id = H5Dopen1(file_id, fieldname);
if(dataset_id < 0){
printf("ERROR: Could not open the data field %s\n",fieldname);
return false;
}
dataspace_id = H5Dget_space(dataset_id);
// Test if 2D data
int ndims;
ndims = H5Sget_simple_extent_ndims(dataspace_id);
// Get dimensions of data set (nx, ny, nn)
hsize_t* dimsl = new hsize_t[ndims];
H5Sget_simple_extent_dims(dataspace_id,dimsl,NULL);
for(int i = 0;(i<ndims&&i<3);i++)
dims[i] = dimsl[ndims-1-i]; //!!!!!!!! NOT SURE
size_t nn = 1;
for(int i = 0;i<ndims;i++)
nn *= dimsl[i];
// Create space for the new data
dtype* data = *outArray;
if (data!=NULL) delete data;//free(data);
*outArray = new dtype[nn];
data = *outArray;
hid_t datatype_id;
H5T_class_t dataclass;
size_t size;
datatype_id = H5Dget_type(dataset_id);
dataclass = H5Tget_class(datatype_id);
size = H5Tget_size(datatype_id);
int rrr = sizeof(int);
if(dataclass == H5T_FLOAT){
if (size == sizeof(float)) {
float* buffer = (float *) calloc(nn, sizeof(float));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else if (size == sizeof(double)) {
double* buffer = (double *) calloc(nn, sizeof(double));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else {
printf("2dData::readHDF5: unknown floating point type, size=%i\n",(int) size);
return false;
}
}
else if(dataclass == H5T_INTEGER){
if (size == sizeof(short)) {
short* buffer = (short*) calloc(nn, sizeof(short));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else if (size == sizeof(int)) {
int* buffer = (int *) calloc(nn, sizeof(int));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else if (size == sizeof(long)) {
long* buffer = (long *) calloc(nn, sizeof(long));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else {
printf("2dData::readHDF5: unknown integer type, size=%i\n",(int) size);
return false;
}
}
else {
printf("2dData::readHDF5: unknown HDF5 data type\n");
return false;
}
//.........这里部分代码省略.........
开发者ID:shibom,项目名称:scripts_sls,代码行数:101,代码来源:cbf2hdf5.cpp
示例14: H5Fopen
void cData2d::readHDF5(char* filename, char* fieldname){
// Open the file
hid_t file_id;
file_id = H5Fopen(filename,H5F_ACC_RDONLY,H5P_DEFAULT);
if(file_id < 0){
printf("ERROR: Could not open file %s\n",filename);
return;
}
// Open the dataset
hid_t dataset_id;
hid_t dataspace_id;
dataset_id = H5Dopen1(file_id, fieldname);
dataspace_id = H5Dget_space(dataset_id);
// Test if 2D data
int ndims;
ndims = H5Sget_simple_extent_ndims(dataspace_id);
if(ndims != 2) {
printf("2dData::readHDF5: Not 2D data set, ndims=%i\n",ndims);
exit(0);
}
// Get dimensions of data set (nx, ny, nn)
hsize_t dims[ndims];
H5Sget_simple_extent_dims(dataspace_id,dims,NULL);
ny = dims[0];
nx = dims[1];
nn = 1;
for(int i = 0;i<ndims;i++)
nn *= dims[i];
// Create space for the new data
free(data); data = NULL;
data = (tData2d *) calloc(nn, sizeof(tData2d));
// Read in data after setting up a temporary buffer of the appropriate variable type
// Somehow this works best when split out accordint to different data types
// Fix into general form later
hid_t datatype_id;
H5T_class_t dataclass;
size_t size;
datatype_id = H5Dget_type(dataset_id);
dataclass = H5Tget_class(datatype_id);
size = H5Tget_size(datatype_id);
if(dataclass == H5T_FLOAT){
if (size == sizeof(float)) {
float* buffer = (float *) calloc(nn, sizeof(float));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else if (size == sizeof(double)) {
double* buffer = (double *) calloc(nn, sizeof(double));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else {
printf("2dData::readHDF5: unknown floating point type, size=%i\n",(int) size);
return;
}
}
else if(dataclass == H5T_INTEGER){
if (size == sizeof(char)) {
char* buffer = (char*) calloc(nn, sizeof(char));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else if (size == sizeof(short)) {
short* buffer = (short*) calloc(nn, sizeof(short));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else if (size == sizeof(int)) {
int* buffer = (int *) calloc(nn, sizeof(int));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
else if (size == sizeof(long)) {
long* buffer = (long *) calloc(nn, sizeof(long));
H5Dread(dataset_id, datatype_id, H5S_ALL,H5S_ALL, H5P_DEFAULT, buffer);
for(long i=0; i<nn; i++)
data[i] = buffer[i];
free(buffer);
}
//.........这里部分代码省略.........
开发者ID:antonbarty,项目名称:cheetah-old,代码行数:101,代码来源:data2d.cpp
|
请发表评论