2016-06-30 81 views
0

我有一個運行在集羣中的程序實例,該程序基本上使用h5py執行讀取和寫入數值數組到HDF5文件的數值計算。HDF5文件中的節點損壞

當我嘗試在集羣中的不同計算節點上運行我的代碼的幾個實例時,所有正在運行的腳本只有一個崩潰。報告的錯誤是

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

倖存的腳本繼續運行沒有問題。我已經在與HDF5交談的所有功能中使用了語句,以確保在完成I/O操作後文件已正確關閉。

有人請解釋我這個錯誤的含義是什麼?

+0

你試圖在同一時間從多個進程的數據寫入到一個HDF5文件? – ziky

+0

是的我想在同一個HDF5文件中寫入來自多個進程的數據。我應該使用鎖嗎? – felipez

+0

我認爲你不能同時從幾個進程訪問同一個hdf5文件。您只能使用MPI執行此操作,請參閱http://docs.h5py.org/en/latest/mpi.html。否則,請務必同時打開一個進程的文件。 – ziky

回答

0

根據書Python和HDF5安德魯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.