Ho circa 500 file HDF5 ciascuno di circa 1,5 GB.Concatena un numero elevato di file HDF5
Ciascuno dei file ha la stessa struttura esatta, ovvero 7 dataset composti (int, doppio, doppio) e numero variabile di campioni.
Ora voglio concatenare tutti questi file concatenando ciascuno dei set di dati in modo che alla fine abbia un singolo file da 750 GB con i miei 7 set di dati.
Attualmente sto facendo funzionare uno script h5py cui:
- crea un file HDF5 con i giusti set di dati di massimo illimitato
- aperti in sequenza tutti i file
- verifica qual è il numero di campioni (come è variabile)
- ridimensionare il file globale
- aggiungere i dati
questo ovviamente richiede molte ore, avete un suggerimento per migliorare questo?
Sto lavorando su un cluster, quindi potrei usare HDF5 in parallelo, ma non sono abbastanza bravo nella programmazione C per implementare qualcosa da solo, avrei bisogno di uno strumento già scritto.
Una possibilità è unire coppie di file sul tuo cluster; ridurre il problema a 250 file da 3 GB, quindi a 125 file da 6 GB e così via. Ciò è utile solo se i file parzialmente uniti offrono un risparmio di tempo durante l'unione dei risultati in seguito. – sarnold
@sarnold Sto lavorando su hopper in NERSC, la velocità di I/O teorica è di 25 GB/s, anche il filesystem è completamente parallelo e supporta I/O MPI. –
Stavo pensando di leggere forse 3 o 4 file alla volta e di scriverli tutti insieme, ma la cosa migliore sarebbe un'utilità c che sfrutta in qualche modo l'I/O mpi. –