はじめに
PCクラスタという単語は知っているけれども、その中味について全くしらない状態から、上記242ページの『超入門文書 http://mikilab.doshisha.ac.jp/dia/smpp/cluster2000/ 』を読んで、かいつまんで要点化してみる。それにより、新規にPCクラスタを導入するにあたり、どこから手をつけ、どこで手を打つのがよいのかについての具体的なイメージを得ることを目標とする
<講義3> Diskless Cluster構築入門
- Diskless Clusterとは
- 構成
- 実装上の特徴
<講義4> PCクラスタにおけるベンチマークとジョブ管理
+ベンチマークとは
-
- 計算機システムの性能の計測
- ベンチマークの決定因子
- 個々のパーツの性能
- パーツの組み合わせであるノードPCの性能
- ノードPCのクラスタリングに伴う諸設定の性能
- ベンチマークの種類:尺度はいろいろ
- ベンチマークの入手
- 演算性能ベンチマークとは
- 並列計算ベンチマークとは
- 評価される因子
- 各ノードの計算性能
- 通信頻度
- 通信量
- ネットワーク性能ベンチマークとは
- 決定因子
- 実ネットワークの性能
- ネットワーク・スタックの性能
- 評価項目
- スループット:単位時間における処理量を示す指標
- 遅延:待ち時間とRTT(Round Trip Time:往復時間)
- 決定因子
- アプリケーション指向ベンチマーク
- 実際のアプリケーションを適用してみた結果で評価する
- ジョブ管理
- 複数のノードの状況を閲覧・監視するツール
- たとえば Beowulf Watch http://www.sci.usq.edu.au/staff/jacek/bWatch/ ※ いろいろなサイトが引用しているURLだが、現在つながらない・・・
- ジョブ管理システム(JMS;Job Management System)
- JMSの仕事
- ジョブの受付
- ジョブのスケジューリング
- リソース管理と割り振り
- JMSはフリー・市販それぞれある
- JMSの仕事
- 複数のノードの状況を閲覧・監視するツール
<講義5> ALINKA LCMを用いたPCクラスタシステムの構築
-
- 構築各論につき割愛
- 踏襲するとなったら、丁寧に参照することが有用です
<講義6> 並列処理入門:PCクラスタに限らず並列処理に関するハード的・ソフト的概論
- 並列計算機の分類
- 命令系統とデータフローとで4分類する
- 命令系統1本・データフロー1本
- 命令系統複数本・データフロー1本
- 命令系統1本・データフロー複数本
- 命令系統複数本・データフロー複数本
- 命令系統とデータフローとで4分類する
- 並列計算機の構成方式
- プロセッサ間のデータの授受方式・メモリの配置方式とで分類する
- 相互結合網の形態
- メモリ・プロセッサの結合トポロジの設計をして通信遅延を減らす
- 並列処理のプログラム
- 並列処理に特化したHigh-Performance Fortranなどを用いた画一的並列処理(並列処理に適した配列・行列処理の自動並列化、プログラミング時に並列処理を指定する必要がない)
- MPIやPVMを用いて、並列処理方法を指定しながらの並列プログラミング
- 並列処理の効率
- 並列処理を実行するにあたって、高速化を邪魔する要素はいろいろあり、その中にはハードウェア上の問題、ハードウェア配置設計上の問題なども含まれるが、それらの最適化のほかにアルゴリズム上の最適化の問題が存在する
- アルゴリズム上の並列処理の効率化
- 並列化効率を数値で表す方法
- 利用プロセッサ数の関数として定義
- 並列処理部分と非並列処理部分と、並列処理効率の総合結果が処理全体の速度向上率を決定する
- 律速因子
- 逐次処理は全体の並列化効率を大きく下げる
- アルゴリズムを最適化する
- プロセッサ間の通信速度
- 処理の粒度(1度に1つのプロセッサに与えられる処理の大きさ)を大きくすることで通信速度による効率化の低減を防ぐ
- ロードバランス
- すべてのプロセッサに均一に動作を行わせ、待機時間を減らす
- 並列化する単位の選択
- 処理全体の中で発生する、ベクトル・行列などの演算を並列化するか、処理が取り扱う『問題』の特性のうち分割可能な事象を分割して並走させるかという選択が可能
- 前者を数値ソルバー、後者を自然ソルバーと呼ぶ
- 逐次処理は全体の並列化効率を大きく下げる
- 並列化効率を数値で表す方法
<講義7> アプリケーションの並列化の例
-
- 並列化の例につき割愛
- 例は熱伝導方程式、遺伝的アルゴリズム
<講義8> 並列化手法のご紹介と,クラスタを組む上での各種Tips
- 並列化にあたって
- プログラミング対象の中から並列性の高い事象を抽出し並列にプログラミングする
- すでに1プロセッサ仕様で作られているプログラムを並列コンピュータに移植するべくプログラムしなおすこと=『並列化プログラム』
- 『並列化プログラム』のこつ
- 遊んでいるCPUにジョブが割り当てられることで発生する通信を減らすために、ただ遊んでいるCPUに「無駄なジョブ」を与える
<講義9> グローバルコンピューティング
- グローバルコンピューティングとは
- 周囲にありほとんど遊んでいるPCを使う
- PCクラスタは占有的使用を前提としたハードウェア・ソフトウェア構築であるのに対し、グローバルコンピューティングでは、「あいているときだけ、所有者の迷惑にならないような配慮の下」使わせて、というスタンスである
- Condor HTCondor - Home
- バイナリソース配布型のグローバルコンピューティングシステム
- 「所有者に迷惑をかけない」ための仕組み
- あいているPCを見つける
- 利用させてもらっているPCの使用が始まったらそれを感知して、そのジョブを別のPCに引っ越す
- 引越し先がなければサスペンドする
- Globus Toolkit
- Condorとはことなり、グローバルコンピューティングシステム構築用の基本サービスツール一式
<講義10> SCore型クラスタ
-
- 紹介記事的な構成なので、割愛
<講義1> PCクラスタの作り方
- PCクラスタの作り方
- まずは作ってみよう:PCクラスタ構築の実際
- ハードウェア:複数台のPCとネットワーク接続機器の入手
- Linux動作確認・ネットワーク接続OKのPCとネットワーク機器を購入、または
- すでに複数台のLinuxPC+ネットワーク接続済みの機器セットを購入
- ソフトウェア
- インストールするソフトウェア
- OS(Linuxとそのディストリビューション)
- 並列ライブラリ(Linuxのライブラリ)
- Linuxディストリビューションの選択
- ハードウェア・並列ライブラリ(後述)との組み合わせで動作確認のとれているディストリビューションを選ぶ
- 並列ライブラリとは
- ソフトウェアのインストール
- Linuxディストリビューションのインストール
- 並列ライブラリのインストール
- 依存関係の確認が容易な.rpmなどを用いるのが便利
- ハードウェア:複数台のPCとネットワーク接続機器の入手
- 構築上の留意点
- ハードウェア
- ソフトウェア
- カーネルの再構築
- 複数PCリソースの共有管理のためのツール
- 並列プログラム作成・実行のためのツール
- 並列プログラム作成
- 並列プログラム用コンパイラ
- 並列プログラムはクラスタPCのすべてでコンパイルが必要
- そのためのコンパイラの入手とインストール
- たとえば mpich PGI コンパイラを使用したMPICHライブラリの生成 とか
- 並列プログラムのデバッグ
- 複数ノードPC上のバグを一括検知するデバッガの利用を検討:
- たとえば TotalView PCI Express | High Speed Networks | Dolphin ICS
- 通信状態とその遅延状態の検知のためのツール:プロファイラ
- たとえば Paradyn Paradyn Tools Project
- 並列プログラム用コンパイラ
- 実行時のリソースマネージメント
- RMS(Resource Management and Scheduling)
- プロセスの配分・ロードバランスの調整・複数タスクのスケジューリングを行う
- たとえば CONDOR HTCondor - Home
- RMS(Resource Management and Scheduling)
- 並列プログラム作成
<講義2> MPIによる並列プログラミングの基礎
- MPI(Messsage Passing Interface)とは
- プロセッサ間でメッセージを交換する方式(インターフェース) 2種
- メッセージパッシング方式
- データ並列方式
- メッセージパッシング方式 2種
- MPI(Message Passing Interface)
- PVM(Parallel Virtual Machine)
- プロセッサ間でメッセージを交換する方式(インターフェース) 2種
- MPIのインストール
- ノード間通信とその制御
- 通信関数と制御関数
- ライブラリに装備された複数プロセス間のメッセージ交換方法に関する関数とプロセス制御のための多数の関数
- 通信関数と制御関数
--通信参加プロセス数による区別 ---1対1通信 ---グループ通信 ----クラスタ内全ノードを1グループとする場合と一部のノードを1グループとする場合とがある ---送受信手続きの開始・保留方法による区別 ----ブロッキング通信 -----メッセージを送るにあたり、送信を打診して、受け手の受信許可を待つ -----メッセージの送信打診から受信許可の受け取りまで待機状態になる -----送信と受信とは同時に起こり、その送受信中は送り側・受け側ともに待機状態になる -----送受信終了後に処理が開始される ----ノン・ブロッキング通信 -----メッセージを送るにあたり、受けて側の状態によらず、すぐに送信を開始する -----送信開始後も、別の処理を継続する -----送信と受信とは同時には始まらないが、受信の終了をもって、送信は完了する -----送受信終了は明示的に送り側・受け側に伝えられ、その情報をもって次の処理が開始される -----1対1通信のときのみ使用可能 -----待ち時間を減らすことが可能
- PCクラスタでの並列プログラムの実行制御
- ライブラリに装備された複数の制御関数と2つの通信関数をプログラムに用いることによってプロセス間の通信制御を行う
- コミュニケータ
- 並列プログラムが実行するプロセスの集合
- すべてのプロセスはコミュニケータ上のID(rank)を与えられる
- 制御関数・通信関数はrankを引数としてとることにより、制御・通信を実行する
-PCクラスタでの並列プログラムの実行の実際 --クラスタホストマシンにログインする --"クラスタ"に対して、使用するPC数を指定してジョブを投入する --ジョブの投入はスクリプトによって行う --個々のプロセスの起動は実行環境に任せる
下書きの書き方(メモ)
><!-- この2記号の間の記載は、『下書き扱い』され、ブログに表示されない --><
><