2012-09-27 3 views
1

hdf 파일에서 특성을 읽는 동안 성능 문제가 있습니다. 약 18000 개의 그룹/데이터 집합에서 특성 (각 10 개)을 읽는 데 거의 1.5 분이 걸린 것처럼 보입니다. ... hdf 파일에는 루트 아래에 300 개의 그룹이 있습니다. 이 300 개의 그룹 (T)에는 각각 약 60 개의 하위 그룹 (V)이 있으며이 60 개의 하위 그룹에는 각각 1 또는 2 개의 데이터 세트가 있습니다. (D) I는 최대 10 개 작은 속성을 읽는하고 각 수준에서성능 중첩 된 계층 구조 읽기

Root 

     ----- T1 

      ----- V1 
       ---- D 

      ----- V60 
        ---- D 

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

     ----- T300 

..

는 않습니다 각 그룹을 읽는 것은 주로 새로운 디스크 찾기를 의미합니까? 나의 초기 생각은 그룹을 여는 큰 대기 시간을 표시하고 데이터를 ..any을 ​​설정 메타 데이터를 다른 groups..they에 속하기 때문에 아마도 나는 모든 metatadata

의 VTune의 데이터 집합을 만드는 생각하고 다른 디스크 블록 을에 끝날 것입니다 성능 향상을위한 제안 ..?

답변

1

각 개체 (그룹 또는 데이터 집합)의 메타 데이터는 일반적으로 개체 머리글에 저장되므로 다른 디스크 블록에있을 가능성이 높습니다. 그러나 많은 수의 특성을 읽어야 만한다면 성능을 저하시킬 수 있습니다. 모든 속성의 데이터 세트를 만드는 아이디어는 실제로 HDF5에서 구현되었습니다. 이것을 "dense attribute storage"라고하며 H5Pset_attr_phase_change을 사용하여 켤 수 있습니다. 몇 가지 예제 코드 here이 있습니다.

모든 그룹 및 데이터 세트에서이 기능을 사용해야합니다. 밀도가 높은 속성 저장소가있는 모든 객체에 대해 하나의 데이터 세트를 만들거나 각각에 대해 하나의 데이터 세트를 만드는 경우 참조 설명서에서 분명하지 않습니다. 파일 드라이버에 따라 다를 수 있습니다.

마지막으로 밀도가 높은 속성 저장으로 속도가 향상되지 않으면 병렬 IO를 고려해보십시오.