O HDF5 é, até certo ponto, um sistema de arquivos por si só. Ao introduzir B-Trees e pela maneira como gerencia os blocos, ele duplica a funcionalidade de um sistema de arquivos. Quando você está executando seu código, provavelmente o está executando em um sistema operacional com um sistema de arquivos comprovado e escalável. Portanto, sugiro que você grave seus dados numéricos em um único arquivo usando o acesso a arquivos brutos ou MPI-IO e grave os metadados (endianess, tamanho, atributos etc.) em um arquivo JSON ou XML separado. Se você tiver vários conjuntos de dados, poderá organizá-los em um diretório ou hierarquia de diretórios. Quando você deseja distribuir o conjunto de dados, basta compactá-lo em um arquivo ZIP.
A única desvantagem é que você deve lidar com o Endianness , o que, no entanto, não é difícil .
Para uma inspiração sobre como isso pode ser feito, consulte Dragly, et. al. "A. Estrutura experimental de diretórios (Exdir): uma alternativa ao HDF5 sem a introdução de um novo formato de arquivo" Front. Neuroinform., 2018, 12 .