Ⅰ.概要 |
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回 |
HAクラスタ、HPCクラスタの概要を理解する。HAクラスタの概念およびその基本技術に関しての理解を深める。
(1) High Availability(HA) Cluster とHigh Performance Computing(HPC) Cluster
(2) HAクラスタ概論
・ 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/
HAクラスタ構築を実際に行い、その構築手順を理解する。
(1) LVSで実現するロードバランサー
・ IPVS対応カーネル
・ ipvsadm
・ keepalived
・ iptables
・ iproute
HAクラスタ構築を実際に行い、その構築手順を理解する。
(1) ロードバランサーの冗長化
・ VRRPの死活監視
・ マスターの選定方法
・ プリエンプティブモード
・ ネットワーク構成
・ keepalivedの設定
・ ネットワーク障害時の動作
・ フェールオーバーの影響
(2) keepalivedの運用のテクニック
コンピュータシミュレーションの必要性および現在のHPCの動向に関して理解する。
(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) 計算の高速化と並列処理の必要性
(2) 並列計算機の分類
(3) 並列計算機の構成方式
(4) プロセッサ間のネットワーク
(5) 並列処理のプログラミング
(6) 並列処理の効率
(7) 数値計算の並列化
(8) 並列プログラミング環境とツール
マルチスレッドプログラミングの基礎を習得する。
(1) マルチスレッドプログラミング入門
(2) マルチスレッドプログラミングの基礎
・ 生成
・ 終了
・ 同期
u 終了待ち
u 相互排除
u 条件変数
・ 強制終了
・ 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でのセマフォ利用
HPFおよびOpenMPの基礎技術を習得する。
(1) HPF (High Performance Fortran)入門
・ データの並列化(データマッピング)
・ 処理の並列化(計算マッピング)
(2) HPFプログラミング
(3) OpenMP
・ 並列実行領域(Parallel Regions)構文
・ ワークシェアリング(Worksharing)構文
・ データ環境(Data Environment)構文
・ 同期(Synchronization)構文
・ 実行時関数/環境変数(Runtime functions/environment variables)
HPCクラスタでのプログラミングのトレンドであるMPIの基礎技術を習得する。
(1) MPI (Message Passing Interface)
・ Hellow Worldでの例
・ mpi.h
・ MPI_Init
・ MPI_Finalize
・ rank
・ コミュニケータ
・ MPI_Comm_size
・ MPI_Comm_rank
・ MPI_Send
・ MPI_Recv
(2) MPIによるプログラミング
・ πの計算の並列化
u アルゴリズム
u MPIでの実装例
・ MPI_Bcast
・ MPI_Reduce
・ 演算のバンドル
・ MPICH2のコンパイル
・ MPICH2の実行環境の整備
・ MPICH2によるMPIプログラムのコンパイル
・ MPICH2によるMPIプログラムの実行
(3) プログラミングの並列化の方法
・ 入力部分の並列化パターン
・ 出力部分の並列化パターン
・ ループの反復と配列
・ 配列の分割方法
・ ブロック分割でのロードバランスが不均一になる例
・ ブロック分割
・ サイクリック分割
・ ブロック・サイクリック分割
・ 配列の最小
u 配列の最小方法
u 配列の最小に伴う変更(I/O以外の部分)
u 配列の最小に伴う変更(I/O部分)
(4) 並列化の応用例
・ 2次元目でブロック分割した場合
・ 1次元目でブロック分割した場合
・ 1、2次元目でブロック分割した場合
・ 1、2次元目でブロック分割した場合(斜めの要素の参照)
・ 配列を縮小する場合
・ 有限要素法の並列化
一般的なPCクラスタの構築手順を理解する。
(1) Beowulf PCクラスタのコンポーネント
(2) システム構築
・ GNUコンパイラ
・ PGIコンパイラ
・ Intelコンパイラ
(3) mpich2のサンプルプログラムのコンパイル・実行
(4) ベンチマーク測定
国産のHPCクラスタ専用ミドルウェアSCoreの構築手順を理解する。
(1) SCoreの紹介
(2) SCoreの優位性
(3) SCoreのソフトウェアアーキテクチャ
(4) ユーザ環境
(5) SCoreのインストール
(6) SCoreのデモンストレーション
HPCクラスタで使用すると便利なツールを紹介する。
(1) バッチ処理システムの紹介
(2) システム監視の紹介
(3) 並列ライブラリの紹介
(4) 並列デバッカ、プロファイラの紹介
(5) 開発環境の紹介
(6) ベンチマークソフトウェアの紹介
(7) PCクラスタで使用可能な商用ソフトウェアの紹介
グリッド・コンピューティングに関する概念および最新の動向に関して理解する。
(1) グリッド・コンピューティングの概要
(2) グリッド・コンピューティングの分類
(3) グリッド・コンピューティング関連プロジェクトの紹介
(4) The Globus AllianceとGlobus Toolkit
以上