10. クラスタシステム構築に関する知識

Ⅰ.概要

High Availability ClusterとHigh Performance Computing Clusterの構築にかかわる技術の習得およびシステム構築の演習を通してクラスタ構築に関する基礎技術の習得を目指す。HPC Clusterの講義では、並列プログラミングに関する講義も行う。

Ⅱ.対象専門分野

HAクラスタ、HPCクラスタ

Ⅲ.受講対象者、受講前提

HAクラスタ、HPCクラスタの構築、設計を行うSE。 Linuxのインストール、設定が行える。 C、Fortranでのプログラミング経験者。

Ⅳ.学習目標

HAクラスタ、HPCクラスタの構築、コンサルティングが行える技術を習得する。

Ⅴ.使用教科書、教材等

HAクラスタに関しては、適切な市販教材がないため、オリジナル教材を作成するものとする。

HPCクラスタに関して

『Buildinig LINUX CLUSTER』David HM Spector著、O'Reilly刊

『High Performance Cluster Computing Vol.1』 Rajkumar Buyya著、Prentice Hall刊

『PCクラスタ構築法』トーマス L スターリング他著、産業図書刊

『MPI並列プログラミング』 Peter S Pacheco著、秋葉博訳、培風館刊

『OpenMPによる並列プログラミングと数値計算法』牛島省著、丸善刊

『マルチコアCPUのための並列プログラミング―並列処理&マルチスレッド入門』安田絹子 他著、秀和システム刊

Ⅵ.習得スキルの評価方法

HAクラスタおよびHPCクラスタの構築手順書を作成し、評価する。

Ⅶ.カリキュラムの構成

レベル1(基本) 第1回~第7回

レベル2(応用) 第8回~第15回

第1回 クラスタシステム概論、HAクラスタ その1 (講義90分)

HAクラスタ、HPCクラスタの概要を理解する。HAクラスタの概念およびその基本技術に関しての理解を深める。

(1) High Availability(HA) Cluster とHigh Performance Computing(HPC) Cluster

  1. High Avalability Clusterとは
  2. High Performance Computing Clusterとは

(2) HAクラスタ概論

  1. 負荷分散クラスタとフェイルオーバークラスタ
  2. 負荷分散クラスタ

・ DNSラウンドロビン

・ ロードバランサー

u 負荷分散クラスタの基本的な構成とその構成要素

Ø リアルサーバを選出するアルゴリズム

①round robin

②least connections

③hash

Ø リアルサーバの死活監視

① ICMP

② TCP

③ protocol

u ロードバランサーの区分

Ø OSI参照モデル

Ø L4ロードバランサーとL7ロードバランサー

Ø L7ロードバランサーのプロダクト紹介(2007年8月現在)

①HA Proxy http://haproxy.1wt.eu/

②mod_proxy_balancer http://httpd.apache.org/docs/2.2/en/mod/mod_proxy_balancer.html

③POUND http://www.apsis.ch/pound/

④Perlbal http://www.danga.com/perlbal/

⑤LVS http://www.linuxvirtualserver.org/

第2回 HAクラスタ その2 (講義+ワークショップ90分)

HAクラスタ構築を実際に行い、その構築手順を理解する。

(1) LVSで実現するロードバランサー

  1. ロードバランサーの構成要素

・ IPVS対応カーネル

・ ipvsadm

・ keepalived

・ iptables

・ iproute

  1. IPVSカーネルの再構築
  2. ipvsadmとkeepalivedのビルド
  3. テスト環境の構築
  4. LVS-NATによる負荷分散
  5. DSR(Direct Server Return)の構築

第3回 HAクラスタ その3 (講義+ワークショップ 90分)

HAクラスタ構築を実際に行い、その構築手順を理解する。

(1) ロードバランサーの冗長化

  1. VRRP(Virtual Router Redundancy Protocol)とは

・ VRRPの死活監視

・ マスターの選定方法

・ プリエンプティブモード

  1. VRRPの構築

・ ネットワーク構成

・ keepalivedの設定

・ ネットワーク障害時の動作

・ フェールオーバーの影響

(2) keepalivedの運用のテクニック

第4回 コンピュータシミュレーション(講義90分)

コンピュータシミュレーションの必要性および現在のHPCの動向に関して理解する。

(1) 科学技術研究基盤としてのコンピュータシミュレーション

  1. 科学技術計算史
  2. コンピュータシミュレーションとは

(2) スーパーコンピュータ動向

  1. はじめに
  2. スーパーコンピュータハードウェア動向

・ スーパーコンピュータの性能の推移

・ 米国ASCI(Accelerated Strategic Computing Initiative)プロジェクト

・ 日本 地球シミュレータ計画

・ 日本 京速コンピュータ計画

・ 日米の開発戦略の相違

・ PCクラスタの登場

u SCore

u 東京工業大学 TSUBAME (Tokyo-tech Supercomputer and UBiquitously Accessible Mass-storage Environment)システム

u 筑波大学 PACS-CSプロジェクト

・ グリッドコンピューティング(ネットワーク結合型コンピュータ利用技術の最新動向)

  1. スーパーコンピュータの応用範囲

第5回 並列プログラミング概論(講義90分)

並列プログラミングの概要を理解する。

(1) 計算の高速化と並列処理の必要性

(2) 並列計算機の分類

(3) 並列計算機の構成方式

  1. 共有メモリモデル
  2. メッセージ交換モデル

(4) プロセッサ間のネットワーク

(5) 並列処理のプログラミング

(6) 並列処理の効率

  1. アムダールの法則
  2. 問題サイズとリアルタイム性

(7) 数値計算の並列化

  1. 差分法の並列化
  2. 有限要素法における並列化
  3. 粒子法による物質の挙動シミュレーション
  4. モンテカルロシミュレーション

(8) 並列プログラミング環境とツール

第6, 7回 並列プログラミング 実践 その1 マルチスレッドプログラミング (講義 90分 x 2)

マルチスレッドプログラミングの基礎を習得する。

(1) マルチスレッドプログラミング入門

  1. シングルスレッドとマルチスレッド
  2. スレッドとプロセスの違い
  3. マルチスレッドの動作原理

(2) マルチスレッドプログラミングの基礎

  1. スレッドの操作

・ 生成

・ 終了

・ 同期

u 終了待ち

u 相互排除

u 条件変数

・ 強制終了

  1. pthread

・ pthreadを利用したプログラムのコンパイル

・ スレッドの生成と消滅

u fork-jionモデル

・ mutexによるスレッド間の同期

u 共有資源

u 複数のスレッドによる共有資源のアクセス

u 相互排除

・ 条件変数によるスレッド間の同期

u パイプと循環バッファ

u 条件変数を使った環境バッファ

・ 再帰的Mutex

u mutexでのデットロック

u 再帰的mutex

u stdio専用再帰的lock

・ pthreadとメモリ

u auto変数

u static変数

u static変数を使ったライブラリ関数

u スレッドセーフ

・ pthreadでのセマフォ利用

第8回 並列プログラミング実践 その2 HPF (High Performance Fortran) とOpenMP (講義 90分)

HPFおよびOpenMPの基礎技術を習得する。

(1) HPF (High Performance Fortran)入門

  1. 並列プログラムの開発とHPF

・ データの並列化(データマッピング)

・ 処理の並列化(計算マッピング)

  1. 簡単なHPFプログラミング
  2. HPFの仕様と概念

(2) HPFプログラミング

  1. データマッピング関連の指示文
  2. 計算マッピングと通信関連の指示文
  3. 不規則問題のための指示文
  4. 外来手続き

(3) OpenMP

  1. OpenMPの概要
  2. APIの紹介

・ 並列実行領域(Parallel Regions)構文

・ ワークシェアリング(Worksharing)構文

・ データ環境(Data Environment)構文

・ 同期(Synchronization)構文

・ 実行時関数/環境変数(Runtime functions/environment variables)

  1. OpenMPプログラムサンプルの紹介とデモ

第9,10,11回 並列プログラミング 実践 その3 MPI (Message Passing Interface) (講義+ワークショップ 90分 x 3)

HPCクラスタでのプログラミングのトレンドであるMPIの基礎技術を習得する。

(1) MPI (Message Passing Interface)

  1. MPIの概要
  2. MPIのプログラミングモデル
  3. MPIの基本機能

・ Hellow Worldでの例

・ mpi.h

・ MPI_Init

・ MPI_Finalize

・ rank

・ コミュニケータ

・ MPI_Comm_size

・ MPI_Comm_rank

・ MPI_Send

・ MPI_Recv

  1. MPIの先端的特長

(2) MPIによるプログラミング

  1. 1対1通信
  2. グループ通信

・ πの計算の並列化

u アルゴリズム

u MPIでの実装例

・ MPI_Bcast

・ MPI_Reduce

・ 演算のバンドル

  1. MPIライブラリの作成

・ MPICH2のコンパイル

・ MPICH2の実行環境の整備

  1. MPIプログラムのコンパイルおよび実行

・ MPICH2によるMPIプログラムのコンパイル

・ MPICH2によるMPIプログラムの実行

 

(3) プログラミングの並列化の方法

  1. どんなところが並列化できるか
  2. 計算部分の並列化パターン
  3. 入出力部分の並列化パターン

・ 入力部分の並列化パターン

・ 出力部分の並列化パターン

  1. ループの分割方法

・ ループの反復と配列

・ 配列の分割方法

・ ブロック分割でのロードバランスが不均一になる例

・ ブロック分割

・ サイクリック分割

・ ブロック・サイクリック分割

・ 配列の最小

u 配列の最小方法

u 配列の最小に伴う変更(I/O以外の部分)

u 配列の最小に伴う変更(I/O部分)

(4) 並列化の応用例

  1. 差分法の徹底攻略

・ 2次元目でブロック分割した場合

・ 1次元目でブロック分割した場合

・ 1、2次元目でブロック分割した場合

・ 1、2次元目でブロック分割した場合(斜めの要素の参照)

・ 配列を縮小する場合

  1. 有限要素法

・ 有限要素法の並列化

  1. LU分解
  2. ICCG法
  3. マルチフロンタル法
  4. SOR法
  5. モンテカルロ法
  6. 個別要素法/分指導力学法

第12回 Beowulf PCクラスタの構築 (ワークショップ 90分)

一般的なPCクラスタの構築手順を理解する。

(1) Beowulf PCクラスタのコンポーネント

(2) システム構築

  1. NISの設定
  2. NFSの設定
  3. ntpの設定
  4. rshの設置
  5. MPICH2のコンパイル・インストール・設定

・ GNUコンパイラ

・ PGIコンパイラ

・ Intelコンパイラ

(3) mpich2のサンプルプログラムのコンパイル・実行

(4) ベンチマーク測定

  1. SkaMPIを使用したベンチマーク測定

第13回 SCoreクラスタ (講義+ワークショップ90分)

国産のHPCクラスタ専用ミドルウェアSCoreの構築手順を理解する。

(1) SCoreの紹介

(2) SCoreの優位性

(3) SCoreのソフトウェアアーキテクチャ

(4) ユーザ環境

  1. シングルユーザモード
  2. マルチユーザモード

(5) SCoreのインストール

(6) SCoreのデモンストレーション

第14回 PCクラスタの周辺技術 (講義 90分)

HPCクラスタで使用すると便利なツールを紹介する。

(1) バッチ処理システムの紹介

  1. バッチ処理システムとは
  2. OpenPBS、Torque
  3. GridEngine
  4. PBS Pro
  5. LSF

(2) システム監視の紹介

  1. Ganglia

(3) 並列ライブラリの紹介

  1. ScaLAPACK
  2. NAG Parallel Library

(4) 並列デバッカ、プロファイラの紹介

  1. インテルトレースアナライザ/コレクタ
  2. TotalView
  3. PARAVAR

(5) 開発環境の紹介

  1. Eclipse PTP (Parallel Tools Platform)

(6) ベンチマークソフトウェアの紹介

  1. SKaMPI
  2. Intel MPI Benchmarks

(7) PCクラスタで使用可能な商用ソフトウェアの紹介

第15回 グリッド・コンピューティング (講義 90分)

グリッド・コンピューティングに関する概念および最新の動向に関して理解する。

(1) グリッド・コンピューティングの概要

  1. グリッド・コンピューティングとは
  2. グリッド・コンピューティングが登場した背景

(2) グリッド・コンピューティングの分類

  1. プロセッシング・グリッド
  2. データ・グリッド
  3. ビジネス・グリッド

(3) グリッド・コンピューティング関連プロジェクトの紹介

  1. 米国 Extensible Teragrid Facility(ETF)
  2. 英国 UK e-Science
  3. 欧州 EU FP6、EGEE、DEISA、CoreGRID、UNIGRID、NEXTGRID…
  4. 日本 NAREGI(National Research Grid Initiative)

(4) The Globus AllianceとGlobus Toolkit

以上