Parallel I / O in Practic:Parallel File System(98-186)


My Reserches

INDEX

PnetCDF Interface and File Format

概要

Data Model

  • 変数の集合
  • 多次元変数
  • ファイルと変数の属性

特徴

  • CとFortranのインタフェース
  • 汎用データ
  • Noncontiguous I/O
  • Collective I/O

netCDF/PnetCDF Files

h1.jpg
  • 構成
    • Header
    • Non-record variables
    • Record variables

PnetCDF

Storing

※サンプルコード付き

  • dataset(file)を生成
    • データセットをdefineモード
  • defineモードからdataモードへ切り替え
  • dataの保存
  • datasetを閉じる

Retrieving

  • datasetを開く
  • 次元のidを得る
  • 変数のidを得る
  • readする
  • datasetを閉じる

Mapping FLASH AMR structures to netCDF

難しそう


HDF5 Interface and File Format

概要

データモデル

  • 階層データ構造
  • 多次元配列
  • データセットとデータの属性

特徴

  • C、C++とFortranインタフェース
  • 汎用データフォーマント
  • 圧縮機能(パラレルI/Oモードではできない)
  • データの分割とオーダリング
  • Noncontiguous I/O

HDF5 Files

h2.jpg
  • Groups:ディレクトリのようなもの
    • Groupsは他のGroupsを包含する
  • Datasets:データの配列を含む
    • datatype:データのタイプ(例 H5T_NATIVE_DOUBLE)
    • dataspace:配列の次元
  • Attribute:ファイル、グループ、他のデータセットに関係を表す属性

HDF5 Data Chunking

  • Chunkingはデータ配列のreorderingを記述
    • 部分配列の位置
  • 動的なchunk配置も要求される

Mapping FLASH AMR structures to HDF5

いろいろやっている。難しそう

Metadata Operations

  • name spaceやファイルの属性などの操作

ベンチマーク?

fdtree:serial Metadata Performance

  • ディレクトリやファイルの階層構造を生成し、削除
  • bash scriptで記述されている
    • POSIXインタフェースを使用

mdtest:POSIX Metadata Performance

  • creating、stating,deletingをファイルやディレクトリに対して何度も行う。
  • mdtest Variations
    h13.jpg

mpi-md-test:MPI-IO Metadata Operations

  • 集団MPI-IOのパフォーマンスを計る

I/O Best Practices

Summary of API Capabilities

h14.jpg

やっていいこと&いけないこと

  • PFSはメタデータの最適化していない。
    • 百万のファイル上でls -lとかをやると、やばい。...らしい。
  • create, open,closeなどはできるだけ少なくする
  • overlapp writeは避ける
  • errorコードのチェック

Gross Generalizations on Parallel File Systems

h15.jpg

Hints

実際にプログラムするときのヒントが連なる

A Tuning Example:mpiBLAST-pio

  • データベース検索ツール
    • クエリから最も類似したDNAやプロテインパターンを高速に検索
  • BLASTのパラレルバージョン
  • master-worker model

欠点

  • 静的にデータベースにパーティションを作るので小さなファイルができてしまう
  • もし、さらに多くのプロセス上で動くならパーティションをやり直す必要がある
  • master一人がシリアライズをしている

改善

  • parallel/collective I/Oを使用
  • MPI-IOなどの汎用的なAPIを使用
  • 物理的にパーティションを切らない
  • masterとworkerの通信を減らす
  • workersが並列に直接データベースにアクセスし、masterでのボトルネックを排除する
  • 同様に、workersに並列に出力し、masterでのボトルネックを排除する

Dynamic Partitioning of mpiBLAST-pio

h16.jpg
  • 単一のデータベースを使用し、静的partitioningをしない
  • Virtual fragmentな動的に作られ、resizeされる

Output Processing of mpiBLAST-pio

h17.jpg

Advances in Parallel I/O

  • POSIX I/O Extensions
    • もっとよいAPIを提供できないか?
    • 大規模なクラス上でもっとパフォーマンスを出せないか?

Current HEC POSIX Enhancement Areas

  • openg, openfh
    • Name Space Traversal & Collective Open
      h18.jpg