1

hdfファイルから属性を読み取るときにパフォーマンスの問題があります..約18000のグループ/データセットから属性(それぞれ10個)を読み取るのに約1.5分かかるようです..これが実際に妥当な時間であるかどうか誰かが教えてくれることを願っています.このような構造... hdf ファイルにはルートの下に約 300 のグループがあり、これらの 300 のグループ (T) のそれぞれには約 60 のサブグループ (V) があり、これらの 60 のサブグループのそれぞれには 1 つまたは 2 つのデータセット (D) があります。

   Root 

       ----- T1 

            ----- V1 
                 ---- D 

            -----  V60 
                  ---- D 

         .... 
         .... 
         .... 

      -----  T300 

各レベルで、最大10個の小さな属性を読んでいます..

各グループの読み取りは、主に新しいディスクのシークを意味しますか? 私の最初の考えは、メタデータが異なるグループに属しているため..最終的に異なるディスクブロックになる可能性があるということです。すべてのメタデータのデータセットを作成することを考えています

vtune は、グループとデータ セットを開くのに長い待ち時間を示します。パフォーマンスを改善するための提案はありますか?

4

1 に答える 1

1

各オブジェクト (グループまたはデータセット) のメタデータは、通常、オブジェクト ヘッダーに格納されているため、おっしゃるように、それらは異なるディスク ブロック上にある可能性があります。ただし、おわかりのように、読み取る必要のある属性が多数ある場合は、パフォーマンスが低下する可能性があります。すべての属性のデータセットを作成するというあなたのアイデアは、実際には HDF5 で実装されています。これは「高密度属性ストレージ」と呼ばれ、 を使用してオンにできますH5Pset_attr_phase_change。ここにいくつかのサンプルコードがあります

すべてのグループとデータセットでこの関数を使用する必要があります。高密度属性ストレージを持つすべてのオブジェクトに対して 1 つのデータセットを作成するのか、それともオブジェクトごとに 1 つのデータセットを作成するのかは、リファレンス マニュアルから明らかではありません。おそらく、これはファイル ドライバに依存します。

最後に、高密度の属性ストレージで速度があまり向上しない場合は、並列 IO を検討してください。

于 2013-05-15T12:19:57.193 に答える