2016-06-30 18 views
0

Ich habe eine Instanz eines Programms in einem Cluster ausgeführt, führt das Programm im Grunde numerische Berechnungen lesen und schreiben numerische Arrays in eine HDF5 Datei mit h5py.Beschädigte Knoten in einer HDF5-Datei

Wenn ich versuche, mehrere Instanzen meines Codes in verschiedenen Computerknoten im Cluster auszuführen, stürzen alle laufenden Skripts außer einem ab. Der angezeigte Fehler ist

KeyError: 'Unable to get link info (Bad symbol table node signature)'

Das überlebende Skript läuft ohne ein Problem weiter. Ich habe die mit Anweisung in allen Funktionen verwendet, die mit dem HDF5 sprechen, um sicherzustellen, dass die Datei ordnungsgemäß geschlossen wird, nachdem die I/O Operationen durchgeführt wurden.

Könnte mir bitte jemand erklären, was die Bedeutung dieses Fehlers ist?

+0

Sie Daten aus mehreren Prozessen in eine hdf5 Datei zur gleichen Zeit schreiben wollen? – ziky

+0

Ja Ich versuche, Daten aus mehreren Prozessen in der gleichen HDF5-Datei zu schreiben. Soll ich ein Schloss benutzen? – felipez

+0

Ich denke, Sie können nicht auf dieselbe hdf5-Datei von mehreren Prozessen gleichzeitig zugreifen. Sie können dies nur mit MPI tun, siehe http://docs.h5py.org/en/latest/mpi.html. Andernfalls stellen Sie sicher, dass Sie die Datei nur mit einem Prozess gleichzeitig öffnen. – ziky

Antwort

0

Nach dem Buch Python und HDF5 von Andrew Collete,

multiprocessing is a more recent built-in module available with Python, which provides support for basic fork()-based parallel processing. The main restriction is that your parallel processes can’t share a single HDF5 file, even if the file is opened read- only. This is a limitation of the HDF5 library.....

For anything else, MPI-based Parallel HDF5 is by far the best way to go. MPI is the official “flavor” of parallelism supported by the HDF5 library. You can have an unlimited number of processes, all of which share the same open HDF5 file.