Tengo aproximadamente 500 archivos HDF5 cada uno de aproximadamente 1,5 GB.Concatenar una gran cantidad de archivos HDF5
Cada uno de los archivos tiene la misma estructura exacta, que es 7 conjuntos de datos compuestos (int, dobles, dobles) y número variable de muestras.
Ahora quiero concatenar todos estos archivos concatenando cada uno de los conjuntos de datos para que al final tenga un solo archivo de 750 GB con mis 7 datasets.
Actualmente estoy ejecutando un script h5py cuales:
- crea un archivo HDF5 con los datos correctos de máximo ilimitado
- abiertas en secuencia todos los archivos
- cheque cuál es el número de muestras (ya que es variable)
- redimensionar el archivo global
- anexar los datos
Esto, obviamente, toma muchas horas, ¿Tiene alguna sugerencia acerca de cómo mejorar esto?
Estoy trabajando en un clúster, así que podría usar HDF5 en paralelo, pero no soy lo suficientemente bueno en C programando para implementar algo yo mismo, necesitaría una herramienta ya escrita.
Una posibilidad es fusionar juntos pares de archivos en tu grupo; reduzca el problema a 250 archivos de 3 GB, luego a 125 archivos de 6 GB, y así sucesivamente. Esto solo ayuda si los archivos parcialmente fusionados proporcionan algún ahorro de tiempo al fusionar los resultados más adelante. – sarnold
@sarnold Estoy trabajando en la tolva en NERSC, la velocidad teórica de E/S es de 25 GB/s, también el sistema de archivos es totalmente paralelo y admite MPI I/O. –
Estaba pensando en leer quizás 3 o 4 archivos a la vez y volver a escribirlos, pero lo mejor sería una utilidad c que explote de alguna manera la E/S mpi. –