2017-12-07 6 views
2

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?

+2

Existiert diese Datei wirklich? Ist der Pfad korrekt? Bitte liefern Sie [mcve]. –

+0

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

+1

@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

Antwort

1

fand ich zwei Möglichkeiten, dies zu Fixierung:

  • Öffnen der Dateien nur lesen, mit H5F_ACC_RDONLY_F statt H5F_ACC_RDWR_F (das ist gut für mich, weil ich schreiben muß neu zu kompilieren alles nicht
  • . mit HDF5 1.8.14. ich denke, dass Lese- und Schreibberechtigungen restriktiver sind in Version 1.10.x als in der Version 1.8.x.

im Idealfall würde ich mag aktuelle Version voneine bis zu verwenden, um der Lage sein,zusammen mit H5F_ACC_RDWR_F, aber jetzt funktioniert es für mich.

Verwandte Themen