He estado usando HDF5 durante años, pero a medida que aumenta el tamaño del conjunto de datos, estoy empezando a experimentar los mismos problemas enumerados aquí.
http://cyrille.rossant.net/moving-away-hdf5/
¿Me puede indicar un formato como HDF5 con - Buen soporte para escrituras paralelas - Soporte para acceso fragmentado de matrices enormes
Mi caso de uso típico es una matriz entera de 100k x 100k. Me gustaría tenerlo como un archivo completo desde una perspectiva lógica, pero necesito escribirlo trozo a trozo con trabajadores paralelos.
Respuestas:
HDF5 es, en cierta medida, un sistema de archivos en sí mismo. Al introducir B-Trees y por la forma en que gestiona los bloques, duplica la funcionalidad de un sistema de archivos. Cuando está ejecutando su código, probablemente lo esté ejecutando en un sistema operativo con un sistema de archivos probado y escalable. Por lo tanto, sugeriría escribir sus datos brutos numéricos en un solo archivo usando acceso a archivos brutos o MPI-IO y escribir los metadatos (endianess, tamaño, atributos, etc.) en un archivo JSON o XML separado. Si tiene múltiples conjuntos de datos, puede organizarlos en un directorio o una jerarquía de directorios. Cuando desee distribuir el conjunto de datos, solo tiene que empaquetarlo en un archivo ZIP.
El único inconveniente es que tienes que lidiar con Endianness tú mismo, lo cual, sin embargo, no es difícil .
Para una inspiración sobre cómo se puede hacer esto, ver Dragly, et. Alabama. "A. Estructura de directorio experimental (Exdir): una alternativa a HDF5 sin introducir un nuevo formato de archivo" Frente. Neuroinform., 2018, 12 .
fuente