2017-12-07 13 views
2

私はHDF5(1 0.1)を使用してFortranコードを使用しています。ある時点でh5fopen_fを使用してファイルを開くための呼び出しがあります:エラー(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) 

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 

私はどこそれが必要とそのIそれはだ、ファイルが存在することを確認しています適切な権限を持っています。また、私は1つのプロセスを使用すると、コードが正常に動作します。複数のプロセスを使用すると、プロセスの1つがファイル(err=0)を開くことができますが、残りは(err=-1)できません。最後に、私はこの同じコードを別の場所にインストールしています。バージョン1の場合はうまく動作します( .14)。

これはバージョンに問題がありますか?

+2

このファイルは実際に存在しますか?パスは正しいですか?喜んで[mcve]を供給する。 –

+0

罰金を*ロックして複数のプロセスで同時に開こうとしているようです。しかし、@VladimirFは言うとおり、コードを見る必要があります。 @VladimirF、@Ross。 – Ross

+1

元の投稿を編集してコードのスニペットを追加しました。申し訳ありません。 私が言及したように、ファイルが存在し、パスが正しいです 私はそれを 'H5F_ACC_RDWR_F'の代わりに' H5F_ACC_RDONLY_F'を使用して読み取り専用で開くことで解決することができました。しかし、バージョン1.8.14を使用しているときにこれを行う必要はありませんでした。これがなぜなのか? Pythonと1.10.1を経由して、ここで – jrglez

答えて

1

私はこれを固定する二つの方法が見つかりました:私は書く必要はありませんので(これは私のために大丈夫ですH5F_ACC_RDONLY_Fを使用して代わりにH5F_ACC_RDWR_F、読み取り専用としてファイルを開く

  • すべてを再コンパイル。 HDF5 1.8.14を使用して。私は、理想的には私がのより最新のバージョンを使用できるようにしたいと思い読み取りおよび書き込み権限がバージョン1.8.x.

よりもバージョン1.10.xでより制限されていると思いますと一緒にH5F_ACC_RDWR_Fとなりましたが、今のところ私にとってはうってつけです。

関連する問題