Ich benutze HDF5 seit Jahren, aber mit zunehmender Größe des Datensatzes treten die gleichen Probleme auf, die hier aufgeführt sind
http://cyrille.rossant.net/moving-away-hdf5/
Können Sie mich auf ein Format wie HDF5 verweisen mit - Gute Unterstützung für paralleles Schreiben - Unterstützung für den Chunked-Zugriff auf große Matrizen
Mein typischer Anwendungsfall ist eine 100k x 100k Integer-Matrix. Ich möchte es aus logischer Sicht als ganze Datei haben, aber ich muss es Stück für Stück mit parallelen Arbeitern schreiben.
Antworten:
HDF5 ist bis zu einem gewissen Grad ein eigenständiges Dateisystem. Durch die Einführung von B-Trees und die Art und Weise, wie Blöcke verwaltet werden, wird die Funktionalität eines Dateisystems dupliziert. Wenn Sie Ihren Code ausführen, führen Sie ihn wahrscheinlich auf einem Betriebssystem mit einem bewährten und skalierbaren Dateisystem aus. Daher würde ich vorschlagen, Ihre numerischen Rohdaten mit Rohdateizugriff oder MPI-IO in eine einzelne Datei zu schreiben und die Metadaten (Endianess, Größe, Attribute usw.) in eine separate JSON- oder XML-Datei zu schreiben. Wenn Sie über mehrere Datasets verfügen, können Sie diese in einem Verzeichnis oder einer Hierarchie von Verzeichnissen organisieren. Wenn Sie das Dataset verteilen möchten, müssen Sie es nur in eine ZIP-Datei packen.
Der einzige Nachteil ist, dass Sie sich selbst mit Endianness befassen müssen , was jedoch nicht schwer ist .
Für eine Inspiration, wie dies getan werden kann, siehe Dragly et al. al. "A. Experimentelle Verzeichnisstruktur (Exdir): Eine Alternative zu HDF5 ohne Einführung eines neuen Dateiformats" Vorderseite. Neuroinform., 2018, 12 .
quelle