# Installing ITensor with HDF5 Support
HDF5 is a standardized file format for storing numerical data,
making it ideal for storing data such as tensors or tensor networks.
Benefits of using HDF5 include:
- binary-portable files, which can be read on any system (Mac, Linux, etc.)
- HDF5 files have structure similar to a file system, so that objects stored
can be retrieved using their name
- attributes can be associated to stored data, for example, stating which
version of code was using to write the data
## Steps to Compile ITensor with HDF5 Support
Step 0 of compiling ITensor with HDF5 is to have the HDF5
library available on your system. It may already be available: one way
to check is to see if the command `h5cc` exists and is in your path.
If HDF5 is not installed or you are unsure, use your package manager
on Linux, or a package manager such as Homebrew on Mac to install it.
Alternatively, you can download and install HDF5 from source similar
to many other libraries.
Step 1 is then to determine where your HDF5 libraries and header files
are located. A very convenient way to do this is to run the command
h5cc -show
Which shows the commands used to compile a program with HDF5 support.
By observing the folder names occurring after the "-L" flag in the
output, you can determine the prefix where HDF5 is installed. This
prefix is the folder just before the part beginning with "/lib/libhdf5...".
So if the output includes "/usr/local/lib/libhdf5_hl.a" then the prefix
is "/usr/local".
Step 2 is to modify your options.mk file, which is used to configure
the ITensor compilation process. In options.mk, find the line
#HDF5_PREFIX=/usr/local
then uncomment this line (remove the "#" character) and edit the prefix
to be the one where HDF5 is installed on your computer.
Step 3 is to compile, or recompile ITensor fully, so that
HDF5 support is built throughout the library:
make clean
make
If the compilation succeeds, you will have HDF5 support within ITensor.