HighFive : Modern HDF5 Header-only C++ interface

Hi All,

A little announcement, like I think potentially people in the HDF5
community could be interested in that.

We developed at Blue Brain Project ( http://bluebrain.epfl.ch/ ) /
Human Brain Project (https://www.humanbrainproject.eu/\) a simple,
modern, header-only C++ interface to the libhdf5.
Mainly to overcome the current limitations of the actual HDF5 C++
interface ( no parallel HDF5, no thread safety, not modern C++ friendly )

It is Open Source and here is a non-explicit list of features :

- It supports both serial and parallel HDF5 with C++ ( contrary to the
official bindings that disable c++ bindings when compiled with parallel
mode )

- It does not require any compilation, and is embeddable in any project
( Boost Software License ).

- It supports automatic type mapping with C++ types and STL containers :
std::vector, std::string, std::array, etc...

- It supports Boost MultiArray and Boost UBLAS for Multi-dimentional
dataset and Matrix load/save to/from HDF5 datasets.

- It is design to be modern C++11 / C++14 friendly

- It aims to be minimalsit and does not have any other dependencies than
libhdf5 itself

It does not support the integrality of the libhdf5 API for now, but If
you have any interest or comment about it, let us know.

Adrien Devresse
Blue Brain Project / Human Brain Project

That sounds cool. Thanks for sharing and making it available on github.

Mark

"Hdf-forum on behalf of Adrien Devresse" wrote:

Hi All,

A little announcement, like I think potentially people in the HDF5
community could be interested in that.

We developed at Blue Brain Project ( http://bluebrain.epfl.ch/ ) /
Human Brain Project (https://www.humanbrainproject.eu/) a simple,
modern, header-only C++ interface to the libhdf5.
Mainly to overcome the current limitations of the actual HDF5 C++
interface ( no parallel HDF5, no thread safety, not modern C++ friendly )

It is Open Source and here is a non-explicit list of features :

- It supports both serial and parallel HDF5 with C++ ( contrary to the
official bindings that disable c++ bindings when compiled with parallel
mode )

- It does not require any compilation, and is embeddable in any project
( Boost Software License ).

- It supports automatic type mapping with C++ types and STL containers :
std::vector, std::string, std::array, etc...

- It supports Boost MultiArray and Boost UBLAS for Multi-dimentional
dataset and Matrix load/save to/from HDF5 datasets.

- It is design to be modern C++11 / C++14 friendly

- It aims to be minimalsit and does not have any other dependencies than
libhdf5 itself

It does not support the integrality of the libhdf5 API for now, but If
you have any interest or comment about it, let us know.

Adrien Devresse
Blue Brain Project / Human Brain Project

···

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org<mailto:Hdf-forum@lists.hdfgroup.org>
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Hi All,

A little announcement, like I think potentially people in the HDF5
community could be interested in that.

We developed at Blue Brain Project ( http://bluebrain.epfl.ch/ ) /
Human Brain Project (https://www.humanbrainproject.eu/) a simple,
modern, header-only C++ interface to the libhdf5.
Mainly to overcome the current limitations of the actual HDF5 C++
interface ( no parallel HDF5, no thread safety, not modern C++ friendly )

This looks very nice, thanks for sharing! I have my own (much much more
basic) HDF5File class, but I'm seriously considering using this instead,
now that I know about it.

I'm interested in how you handle thread safety. I've only had a quick look,
but looking at e.g. SliceTraits<Derivate>::read, I can't see any lock being
taken before the call to H5Dread (nor around the surrounding C++ code). Do
you assume the HDF5 library is compiled in thread safe mode? And is are the
wrappers themselves thread safe?

Thanks,
Elvis

···

Den 23 mars 2017 1:58 em skrev "Adrien Devresse" <Adev@adev.name>:

https://github.com/BlueBrain/HighFive

It is Open Source and here is a non-explicit list of features :

- It supports both serial and parallel HDF5 with C++ ( contrary to the
official bindings that disable c++ bindings when compiled with parallel
mode )

- It does not require any compilation, and is embeddable in any project
( Boost Software License ).

- It supports automatic type mapping with C++ types and STL containers :
std::vector, std::string, std::array, etc...

- It supports Boost MultiArray and Boost UBLAS for Multi-dimentional
dataset and Matrix load/save to/from HDF5 datasets.

- It is design to be modern C++11 / C++14 friendly

- It aims to be minimalsit and does not have any other dependencies than
libhdf5 itself

It does not support the integrality of the libhdf5 API for now, but If
you have any interest or comment about it, let us know.

Adrien Devresse
Blue Brain Project / Human Brain Project

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

I’ll definitely be cloning and checking it out. Thanks!

···

From: Hdf-forum [mailto:hdf-forum-bounces@lists.hdfgroup.org] On Behalf Of Miller, Mark C.
Sent: Thursday, March 23, 2017 8:58 AM
To: HDF Users Discussion List <hdf-forum@lists.hdfgroup.org>
Subject: Re: [Hdf-forum] HighFive : Modern HDF5 Header-only C++ interface

That sounds cool. Thanks for sharing and making it available on github.

Mark

"Hdf-forum on behalf of Adrien Devresse" wrote:

Hi All,

A little announcement, like I think potentially people in the HDF5
community could be interested in that.

We developed at Blue Brain Project ( http://bluebrain.epfl.ch/ ) /
Human Brain Project (https://www.humanbrainproject.eu/) a simple,
modern, header-only C++ interface to the libhdf5.
Mainly to overcome the current limitations of the actual HDF5 C++
interface ( no parallel HDF5, no thread safety, not modern C++ friendly )

It is Open Source and here is a non-explicit list of features :

- It supports both serial and parallel HDF5 with C++ ( contrary to the
official bindings that disable c++ bindings when compiled with parallel
mode )

- It does not require any compilation, and is embeddable in any project
( Boost Software License ).

- It supports automatic type mapping with C++ types and STL containers :
std::vector, std::string, std::array, etc...

- It supports Boost MultiArray and Boost UBLAS for Multi-dimentional
dataset and Matrix load/save to/from HDF5 datasets.

- It is design to be modern C++11 / C++14 friendly

- It aims to be minimalsit and does not have any other dependencies than
libhdf5 itself

It does not support the integrality of the libhdf5 API for now, but If
you have any interest or comment about it, let us know.

Adrien Devresse
Blue Brain Project / Human Brain Project

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org<mailto:Hdf-forum@lists.hdfgroup.org>
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

This looks very nice, thanks for sharing! I have my own (much much
more basic) HDF5File class, but I'm seriously considering using this
instead, now that I know about it.

Thanks :slight_smile:

I'm interested in how you handle thread safety. I've only had a quick
look, but looking at e.g. SliceTraits<Derivate>::read, I can't see any
lock being taken before the call to H5Dread (nor around the
surrounding C++ code). Do you assume the HDF5 library is compiled in
thread safe mode? And is are the wrappers themselves thread safe?

For now, you get the thread safety provided by the HDF5 library yes.
If libhdf5 has been compiled with thread safety, then HighFive is thread
safe. If not, you need to do the locking yourself unfortunately.
All the wrappers around libhdf5 provided by HighFive are thread-safe.

Adrien

···

Le 24. 03. 17 à 08:41, Elvis Stansvik a écrit :

Den 23 mars 2017 1:58 em skrev "Adrien Devresse" <Adev@adev.name
<mailto:Adev@adev.name>>:
>
> Hi All,
>
> A little announcement, like I think potentially people in the HDF5
> community could be interested in that.
>
> We developed at Blue Brain Project ( http://bluebrain.epfl.ch/ ) /
> Human Brain Project (https://www.humanbrainproject.eu/) a simple,
> modern, header-only C++ interface to the libhdf5.
> Mainly to overcome the current limitations of the actual HDF5 C++
> interface ( no parallel HDF5, no thread safety, not modern C++
friendly )

This looks very nice, thanks for sharing! I have my own (much much
more basic) HDF5File class, but I'm seriously considering using this
instead, now that I know about it.

I'm interested in how you handle thread safety. I've only had a quick
look, but looking at e.g. SliceTraits<Derivate>::read, I can't see any
lock being taken before the call to H5Dread (nor around the
surrounding C++ code). Do you assume the HDF5 library is compiled in
thread safe mode? And is are the wrappers themselves thread safe?

Thanks,
Elvis

>
>
> https://github.com/BlueBrain/HighFive
>
>
> It is Open Source and here is a non-explicit list of features :
>
> - It supports both serial and parallel HDF5 with C++ ( contrary to the
> official bindings that disable c++ bindings when compiled with parallel
> mode )
>
> - It does not require any compilation, and is embeddable in any project
> ( Boost Software License ).
>
> - It supports automatic type mapping with C++ types and STL containers :
> std::vector, std::string, std::array, etc...
>
> - It supports Boost MultiArray and Boost UBLAS for Multi-dimentional
> dataset and Matrix load/save to/from HDF5 datasets.
>
> - It is design to be modern C++11 / C++14 friendly
>
> - It aims to be minimalsit and does not have any other dependencies than
> libhdf5 itself
>
>
> It does not support the integrality of the libhdf5 API for now, but If
> you have any interest or comment about it, let us know.
>
>
> Adrien Devresse
> Blue Brain Project / Human Brain Project
>
>
>
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> Hdf-forum@lists.hdfgroup.org <mailto:Hdf-forum@lists.hdfgroup.org>
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

This looks very nice, thanks for sharing! I have my own (much much more
basic) HDF5File class, but I'm seriously considering using this instead, now
that I know about it.

Thanks :slight_smile:

I'm interested in how you handle thread safety. I've only had a quick look,
but looking at e.g. SliceTraits<Derivate>::read, I can't see any lock being
taken before the call to H5Dread (nor around the surrounding C++ code). Do
you assume the HDF5 library is compiled in thread safe mode? And is are the
wrappers themselves thread safe?

For now, you get the thread safety provided by the HDF5 library yes.
If libhdf5 has been compiled with thread safety, then HighFive is thread
safe. If not, you need to do the locking yourself unfortunately.
All the wrappers around libhdf5 provided by HighFive are thread-safe.

Alright, thanks for clarifying.

Elvis

···

2017-03-24 9:02 GMT+01:00 Adrien Devresse <Adev@adev.name>:

Adrien

Le 24. 03. 17 à 08:41, Elvis Stansvik a écrit :

Den 23 mars 2017 1:58 em skrev "Adrien Devresse" <Adev@adev.name>:

Hi All,

A little announcement, like I think potentially people in the HDF5
community could be interested in that.

We developed at Blue Brain Project ( http://bluebrain.epfl.ch/ ) /
Human Brain Project (https://www.humanbrainproject.eu/) a simple,
modern, header-only C++ interface to the libhdf5.
Mainly to overcome the current limitations of the actual HDF5 C++
interface ( no parallel HDF5, no thread safety, not modern C++ friendly )

This looks very nice, thanks for sharing! I have my own (much much more
basic) HDF5File class, but I'm seriously considering using this instead, now
that I know about it.

I'm interested in how you handle thread safety. I've only had a quick look,
but looking at e.g. SliceTraits<Derivate>::read, I can't see any lock being
taken before the call to H5Dread (nor around the surrounding C++ code). Do
you assume the HDF5 library is compiled in thread safe mode? And is are the
wrappers themselves thread safe?

Thanks,
Elvis

https://github.com/BlueBrain/HighFive

It is Open Source and here is a non-explicit list of features :

- It supports both serial and parallel HDF5 with C++ ( contrary to the
official bindings that disable c++ bindings when compiled with parallel
mode )

- It does not require any compilation, and is embeddable in any project
( Boost Software License ).

- It supports automatic type mapping with C++ types and STL containers :
std::vector, std::string, std::array, etc...

- It supports Boost MultiArray and Boost UBLAS for Multi-dimentional
dataset and Matrix load/save to/from HDF5 datasets.

- It is design to be modern C++11 / C++14 friendly

- It aims to be minimalsit and does not have any other dependencies than
libhdf5 itself

It does not support the integrality of the libhdf5 API for now, but If
you have any interest or comment about it, let us know.

Adrien Devresse
Blue Brain Project / Human Brain Project

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5