第2章: 計算インフラストラクチャ

2. 計算インフラストラクチャ

2.0 高性能計算の理論的基盤

Amdahlの法則とスケーラビリティ: 🧪 概念例(擬似コード)

理論的加速比: S = 1 / (f + (1-f)/p)
- f: 順次実行部分の割合
- p: プロセッサ数
- データ並列に分解できる処理では f が小さくなりやすい(例: サンプル単位のQC/アライメント)
- ただし I/O、同期、集約処理が律速になる場合は f が大きくなり、加速比は頭打ちになりやすい

Gustafsonの法則(固定時間スケーリング): 🧪 概念例(擬似コード)

実効加速比: S = p - f(p-1)
大規模問題では理論上線形スケーリングに近づく

メモリ階層とキャッシュ理論:

  • 局所性原理: 時間的局所性(recently accessed data)
  • 空間的局所性: 近接データへのアクセスパターン
  • キャッシュ非依存アルゴリズム: cache-oblivious algorithm設計

分散システムのCAP定理: 読み取り中心の公開データ配信・検索などでは、可用性(Availability)と分断耐性(Partition tolerance)を優先し、結果整合性(Eventual consistency)を採用する設計もある。一方で、更新系や権限制御、監査ログなど正確性が重要な領域では強一貫性(Consistency)を優先する(CP寄り)ケースもある。CAPはネットワーク分断を前提にしたトレードオフであり、要件に応じて設計判断する。

2.1 スーパーコンピュータSHIROKANE

アーキテクチャ要件:

  • 並列処理能力: 大規模配列解析の高速化
  • メモリ容量: ゲノムデータベース全体のインメモリ処理
  • ストレージ: ペタバイト規模のデータ保管
  • ネットワーク: 研究機関間でのデータ共有

性能指標:

  • 処理データ量: 365億文字(3,096万レコード)
  • 検索応答時間: サブセカンド級
  • 同時接続数: 数百ユーザー

戦略的意義: 大規模計算インフラは国際競争力の基盤である。アメリカのNCBI、ヨーロッパのEBIと並ぶ計算資源により、日本独自の研究プロジェクトが可能となる。また、民間利用開放により産業界との連携を促進し、研究成果の社会実装を加速する。COVID-19変異株解析では、迅速な変異パターン特定に貢献した。

2.2 分散処理アーキテクチャ

分散システム設計の基本原理:

  • 透明性: 分散を意識させない単一システムとしての振る舞い
  • スケーラビリティ: 負荷増加に対する線形性能向上
  • 信頼性: 部分的障害に対する全体システムの継続動作
  • 一貫性: 分散データの整合性保証メカニズム

負荷分散理論: 🧪 概念例(擬似コード)

待ち行列理論による性能評価:
- Little's法則: L = λW (平均顧客数 = 到着率 × 平均待ち時間)
- M/M/c 待ち行列: 指数分布到着・サービス時間のc台サーバシステム
- 利用率ρ = λ/(cμ) < 1 が安定動作の必要条件

実システムでの性能測定例: 🧪 概念例(擬似コード)

# 理論値と実測値の比較
performance_data = {
    'ノード数': [1, 2, 4, 8, 16, 32],
    '理論値(GFLOPS)': [100, 200, 400, 800, 1600, 3200],
    '実測値(GFLOPS)': [100, 195, 380, 750, 1480, 2900],
    '効率(%)': [100, 97.5, 95, 93.8, 92.5, 90.6]
}

import pandas as pd
df = pd.DataFrame(performance_data)
print(df)

データ分散戦略の数学的基礎:

  • 一様ハッシュ: SHA-256等による均等分散
  • 一貫性ハッシュ: ノード追加・削除時の再配置最小化
  • レプリケーション係数: 可用性とストレージコストのトレードオフ

マスター・スレーブ構成: 🧪 概念例(擬似コード)

マスターノード: タスク分散・結果統合
├── 配列解析ノード群
├── 構造解析ノード群
└── データベースノード群

負荷分散戦略:

  • データ並列: 配列データの分割処理
  • タスク並列: 異なる解析アルゴリズムの並列実行
  • パイプライン並列: 前処理→解析→後処理の流れ作業

障害対応とフォルトトレラント設計:

  • ビザンチン障害耐性: 任意の障害(ハードウェア・ソフトウェア・悪意)への対応
  • Raftアルゴリズム: 分散合意による一貫性保証
  • チェックポイント・リスタート: 長時間計算の中断・再開メカニズム

設計思想の合理性: 多くのパイプラインはサンプル単位・リード単位・ウィンドウ単位のデータ並列に分解しやすく、分散実行の効果が出やすい。一方で、de novoアセンブリや joint variant calling などの集約処理は、通信・同期・メモリ/ストレージI/Oが律速になりやすい。したがって、線形スケーラビリティを前提にせず、ボトルネック(I/O、シャッフル、ストラグラー等)を計測しながら設計・チューニングする。

最小入出力(期待成果物/期待ログ)

  • 入力: 対象データ規模(FASTQ/VCF等のサイズ)・想定ワークフロー・利用可能な計算資源(CPU/GPU/メモリ/ストレージ)
  • 出力(期待成果物): 実行環境の要件表(CPU/メモリ/ストレージ/I/O)と、ベンチマーク結果(処理時間・スループット・費用の概算)
  • 期待ログ(例): 計測結果(条件/入力サイズ/処理時間)と、ジョブの正常終了が分かるログ

前へ: 基礎概念 目次 次へ: データ構造とアルゴリズム