Ich verwende einen Fortran-Code, der HDF5 verwendet (1. .1). An einem gewissen Punkt gibt es einen Aufruf eine Datei zu öffnen h5fopen_f
mit:Fehler beim Öffnen einer Datei mit h5fopen_f in FORTRAN/MPI/HDF5 (1.10.1)
H5FileName = "+hdf5/Temperature_00000_00001.h5"
CALL h5fopen_f(H5FileName, H5F_ACC_RDWR_F, file, hdferr)
Scalardataset = 'Temperature_00001_0000'
call h5ltget_dataset_info_f(file, Scalardataset, dimstmp, type_class, type_size, hdferr)
call h5fclose_f(file,hdferr)
, die mir einen Fehler geben:
HDF5-DIAG: Error detected in HDF5 (1.10.1) MPI-process 0:
#000: H5F.c line 586 in H5Fopen(): unable to open file
major: File accessibilty
minor: Unable to open file
#001: H5Fint.c line 1305 in H5F_open(): unable to lock the file
major: File accessibilty
minor: Unable to open file
#002: H5FD.c line 1839 in H5FD_lock(): driver lock request failed
major: Virtual File Layer
minor: Can't update object
#003: H5FDsec2.c line 940 in H5FD_sec2_lock(): unable to lock file, errno = 11, error message = 'Resource temporarily unavailable'
major: File accessibilty
minor: Bad file ID accessed
ich überprüft haben, dass die Datei vorhanden ist, es ist, wo es sein sollte, und dass ich haben die richtigen Berechtigungen. Außerdem funktioniert der Code gut, wenn ich nur einen Prozess verwende, und wenn ich mehr als einen verwende, kann einer der Prozesse die Datei öffnen (err=0
), aber der Rest kann nicht (err=-1
). Schließlich habe ich denselben Code woanders installiert und es funktioniert gut (mit Version 1. .14).
Kann dies ein Problem mit der Version sein?
Existiert diese Datei wirklich? Ist der Pfad korrekt? Bitte liefern Sie [mcve]. –
Es sieht so aus, als ob Sie versuchen, die Geldbuße zu sperren * und * sie bei mehreren Prozessen gleichzeitig zu öffnen. Aber, wie @VladimirF sagt, wir müssen den Code sehen. – Ross
@VladimirF, @Ross. Ich habe den ursprünglichen Post bearbeitet, um ein Code-Snippet einzufügen. Das tut mir leid. Wie ich bereits erwähnt habe, existiert die Datei und der Pfad ist richtig Ich habe es geschafft, es zu lösen, indem ich es als nur lesen, mit 'H5F_ACC_RDONLY_F' anstelle von' H5F_ACC_RDWR_F'. Aber ich musste das nicht tun, wenn ich Version 1.8.14 benutze. Irgendeine Idee warum das ist? – jrglez