Hardware Reference
In-Depth Information
The HDF5 data model provides a flexible and deep set of objects that
application developers can use to store and retrieve data structures in a self-
described and portable way.
16.3.2 The HDF5 Library
The HDF5 library is implemented in C, with wrappers for many other
programming languages, such as FORTRAN, C++, Perl, Python, .NET, Java,
and ADA|all of which call the C API routines. Although the core library
is written in C, its API routines are designed in an object-oriented manner
that enables simple operations to be written quickly, and still makes complex
operations possible in a straightforward way.
In addition to the classes described in the data model section earlier, ad-
ditional classes are available at runtime for setting properties that control the
behavior of objects and operations, selecting regions of dataspaces to perform
partial I/O, and a variety of classes that support infrastructure operations
like error reporting and object management.
Operations that support partial I/O and property lists that control how
to write data in parallel are particularly important in the high performance
computing arena. Multiple processes within an MPI application that coor-
dinate to write elements to a single HDF5 dataset can each select part of
that dataset in the container and then set a \collective I/O" property when
writing their information, allowing all the processes to collaboratively choose
an ecient manner to write all the elements to the dataset. Other properties
allow further optimizations without adding complexity to the core set of data
access routines.
The listing in Figure 16.4 shows a simple program that creates an HDF5
file, creates a three-dimensional dataset of floating-point values linked from
FIGURE 16.4: A simple HDF5 application.
 
Search WWH ::




Custom Search