PDFをダウンロード(0.51MB)

PBS Professional を使用した NVIDIA Tesla
GPU コンピューティングプロセッサでの
ジョブスケジューリング
2010 年 10 月
www.pbsworks.com
www.nvidia.com/tesla
Copyright © 2010 Altair Engineering, Inc. All rights reserved. PBS™、 PBS Works™、PBS Professional®、PBS Analytics™、PBS Catalyst™、
e-BioChem™、e-Compute™、および e-Render™は、Altair Engineering, Inc の商標であり、米国および国際法と条約に保護されています。他
の全ての商標の所有権はそれぞれの保有者に帰属します。
© 2010 NVIDIA Corporation. All rights reserved. NVIDIA、NVIDIA ロゴ、NVIDIA Tesla、および CUDA は NVIDIA Corporation の商標または登
録商標(およびその両方)です。全ての会社名および製品名は、関連するそれぞれの所有者の商標または登録商標です。
本文書は情報提供のみを目的としたもので、誤りを含む可能性があります。内容は現状のまま提供され、明示あるいは黙示を問わず一切の保
証を伴いません。
要約
汎用計算ユニットとしてのグラフィカル処理ユニット(GPU)の出現で、GPU ベー
スのクラスタで科学および技術用アプリケーションを実行する顧客が増え続けてい
ます。このモデルを使用すると、アプリケーションのシーケンシャルな部分は CPU
で実行し、計算負荷が高い部分は GPU で実行するという形で、ユーザーはハイブ
リッドコンピューティングモデルで CPU と GPU を併用することが可能です。GPU
の大規模並列処理を活用すると、従来の CPU ベースのモードに比べて顧客のアプリ
ケーション処理速度を約 40%も高速化できます。この技術文書では、業界が認めた
高性能コンピューティングワークロード管理ソリューション PBS Professional®を使
用して NVIDIA® Tesla™ GPU にジョブを構成およびスケジューリングするための 2
つの異なるアプローチの説明および比較を行います。
PBS Professional の概要
Portable Batch System ( PBS ) の プ ロ フ ェ ッ シ ョ ナ ル バ ー ジ ョ ン で あ る PBS
Professional は、元来 NASA の航空宇宙用コンピューティングリソース管理のため
に開発された柔軟性の高いワークロード管理ソリューションです 。以来、PBS
Professional はスーパーコンピュータのワークロード管理をリードし、また Linux ク
ラスタの事実上の標準となっています。
今日、拡大成長する企業では、地理的にさまざまな場所にいる何百ものユーザーをサ
ポートするケースが増えています。ユーザーは多岐にわたるマシンで何千ものジョブ
を実行しています。このような分散型の異機種混合の環境では、管理者が詳細かつ正
確な利用状況データを収集したり、システム全体のリソースの優先順位を設定したり
するのは非常に困難です。結果として、コンピューティングリソースの多くが一方で
は未活用、一方では過剰活用になっています。また、増え続ける多種多様なオペレー
ティングシステムおよびプラットフォームもユーザーを悩ませています。毎年、科学
者、エンジニア、デザイナー、アナリスト達は、本来の専門分野に集中する代わりに
各種コンピューティング環境の微妙な差異を習得するため無駄な時間を費やさなけれ
ばなりません。PBS Professionalは、科学、エンジニアリング、金融およびエンターテ
イメントのような計算負荷が高い業界のこれらの問題に対応します。PBS Professional
のパワーを利用すれば、コンピューティングリソースをより的確に制御することが可
1
能です。既存の貴重な資産の可能性を引き出すと同時に、システム管理者やオペレー
タの負荷を軽減し、他の仕事に集中することが可能です。PBS Professionalを使用する
とシステム全体の実際の利用レベルを追跡して、今後の購入をニーズに合わせて絞る
ことができ、規模の拡大を効率的に管理できます。
PBS Professional を構成する主なコンポーネントには、コマンドとデーモン/サービ
スの 2 種類あります。各コンポーネントをどのように組み合わせればよいかをここ
で簡単に説明します。
コマンド – PBS Professional は、グラフィカルインタフェースと POSIX 1003.2d-対
応の一連のコマンドラインプログラムの両方を提供しています。ジョブの投入、監
視、変更および削除に使用できます。これらクライアントコマンドは PBS がサポー
トするどのシステムタイプにもインストール可能で、PBS の他のコンポーネントを
ローカルに配置する必要はありません。
コマンドは、権限を与えられたユーザーなら誰でも使用できるコマンド、特定の
PBS 権限が必要なコマンド、および管理者コマンドの 3 種類に分類されます。管理
者コマンドは root アクセスまたは同等のアクセス権が必要です。
Server – Server デーモン/サービス、pbs_server は、PBS Professional の中心とな
る機能です。コマンド全てとその他のデーモン/サービスは、インターネットプロト
コル(IP)ネットワークを経由して Server に接続します。Server の主な機能は、
バッチジョブの受け取りや作成、ジョブの変更、および実行ノードへのジョブのパ
スといった基本的なバッチサービスの提供です。最初の Server がマシンとジョブを
PBS コンプレックスで管理し、2 番目の Server がフェールオーバーを処理するよう
構成する場合があります。
Execution Node Manager (MOM) – MOM は実際にジョブを実行するデーモン/
サービスです。pbs_mom デーモンの通称は MOM で、ジョブの全てのプロセスで母
親の役目を果たすためこう呼ばれています(MOM は、リバースエンジニアリングの
マシン指向ミニサーバー(Machine Oriented Mini-server)を表す略語です)。MOM
は、Server からジョブのコピーを受け取るとそのジョブを実行します。MOM は
2
ジョブごとに新しいセッションを作成し、そのジョブのリソースの利用量について
情報を収集します。また、MOM はジョブに割り当てられた全ての MOM と通信し、
Server に指示された場合はユーザーにそのジョブの出力を返す役割もあります。
MOM は各実行ホストで 1 つ実行されます。
Scheduler – ジョブ Scheduler デーモン/サービス pbs_sched はそのサイトのスケ
ジューリングポリシーを実装し、各ジョブがいつ、どのリソースで実行されるか制
御します。Scheduler は、各種 MOM と通信してシステムリソースの状況を問い合わ
せたり、実行するジョブの有用性について Server と通信します。
GPU コンピューティングの概要
グラフィカル処理ユニットの汎用計算は(通常はコンピュータグラフィック専用の
計算を行う)GPU を使用するための手法であり、従来 CPU で処理されていた計算
を行うものです。これは、プログラマブルステージとより高精度な演算をレンダリ
ングパイプラインに追加して実現します。ソフトウェア開発者はグラフィックデー
タ以外でもストリーム処理を実行できるようになります。
この手法により、最新のグラフィックアクセラレーターのシェーダパイプラインの
大量の浮動小数点の演算能力が汎用計算能力に変換されます。大量のベクトル計算
が必要なアプリケーションでは、従来の CPU で達成できるより桁違いに高いパ
フォーマンスを実現できます。GPU の考案者でもある NVIDIA は、数多くのアプリ
ケーションと共にこの新しいアプローチをリードしてきました。
NVIDIA は国立研究所および商用ソフトウェアのトップクラス企業と協力して、結果
を高速処理する GPU ベースのアプリケーションを作成しました。GPU の高速処理
が非常に役立つ科学分野の 1 つに分子動力学シミュレーションが挙げられます。
NVIDIA は、米国エネルギー省の研究所であるサンディア国立研究所と提携し、
LAMMPS(大規模原子/分子超並列シミュレーター: Large-scale Atomic/Molecular
Massively Parallel Simulator)の高速化を実現しました。LAMMPS は NVIDIA の
Tesla GPU で実行します。科学研究者に広く使われているアプリケーションであり、
CPU で稼動する同じコードより、パフォーマンスが最高 40 倍優れています。生命
3
科 学 コ ー ド に 対 す る
GPU の 高 速 処 理 の 詳 細 に つ い て は 、
www.nvidia.com/bio_workbench を参照してください。
世界中の商用アプリケーションのユーザーも MATLAB の GPU-高速処理の驚異的な
速さの恩恵を受けています。MATLAB は、航空宇宙/防衛、自動車、バイオ技術/製
薬、エレクトロニクス/半導体、および金融サービスなど多岐にわたるバーティカル
マーケットのユーザーを持つ技術コンピューティング環境です。現在 MATLAB の
ユーザーは Tesla GPU を利用することで、計算負荷が高いタスクを従来よりも高速
で実行できます。GPU の高速処理が MATLAB ユーザーの結果処理速度に与えた影
響については、www.accelereyes.com/successstories を参照してください。
ここ数年、NVIDIA は CUDA™並列コンピューティングアーキテクチャ上に構築した
GPU をリリースし、複数のプログラミング言語への API 拡張をサポートしてきまし
た。そのため、通常のプログラムの機能を指定しても GPU のストリームプロセッサ
で実行可能です。そのプログラムに GPU 機能を利用して大規模行列を並列処理でき
る一方で、適宜 CPU も利用することもできます。CUDA を使用すると、CPU ベー
スのアプリケーションでもグラフィック API の使用に制限を設けずに、より汎用的
な計算のために直接 GPU のリソースにアクセスすることが可能です。
4
アプローチ 1
(1つのカスタムリソースとして構成)
クライアント
PC
ユーザーのデスクトップ
アプローチ 2
(各 GPU を vnode として構成)
図 1: PBS Server による GPU へのジョブのスケジューリングを示すブロック図
PBS Professional で GPU を使用するための構成
PBS は、GPU の基本的なスケジューリングと高度なスケジューリングの両方をサ
ポートしています。基本的なスケジューリングでは、サイトポリシーに基づくジョ
ブの優先順位付けや GPU が搭載されたノードへのアクセス制御を行い、GPU に
ジョブが過剰に投入されないようにした上で GPU の利用状況をアカウントログで追
跡します。GPU の基本的なスケジューリングを実行する PBS の構成は比較的単純
です。必要なのは各ノードの GPU の数を示すカスタムリソースを 1 つ定義して構成
するだけです。アプローチ 1 では、基本的な GPU スケジューリングについて説明し
ています。
基本的な GPU スケジューリングだけで顧客の 95%のニーズを満たしていますが、PBS
はより高度な GPU スケジューリングもサポートしています。ジョブにノード上の
GPU を個別に割り当てる(要求または特定する)機能です。この機能は 1 つのノード
5
を複数のジョブで共有し、各ジョブが個別に GPU を必要とする場合に大変便利です。
この場合、PBS とアプリケーションの両方がノード上の GPU の個別割り当てをサポー
トしている必要があります。高度なスケジューリングでは、GPU ごとに「PBS vnode」
を定義する必要があります。アプローチ 2 では、高度な GPU スケジューリングについ
て説明しています。
このセクションでは、PBS Professional での GPU の構成方法について 2 種類のアプ
ローチを説明し、各アプローチの長所と短所を比較します。GPU に対してジョブを
スケジューリングする場合は、管理者が GPU をリソースとして手動で構成する必要
があることに注意してください。また PBS Professional は GPU を割り振りますが
ジョブを特定の GPU に結合しないこと、アプリケーション自体(あるいは CUDA
ライブラリ)が実際の結合を行うことにも注意してください。
アプローチ 1 – 基本的な GPU のスケジューリング
全ての GPU を 1 つのカスタムリソースとして構成
このアプローチで管理者が追加するのはカスタムリソース 1 つだけです。PBS
Professional では、全ての GPU の優先順位を同等に(ビルトインの ncpus PBS リ
ソースと同様に)扱い、特定の GPU へジョブを結合しません。
1 つのカスタムリソースを作るアプローチを使用する構成の手順:
nodeA および nodeB の 2 つの実行ホストがクラスタに存在し、各実行ホストには 4
つの GPU デバイスがあると仮定した場合、管理者は実行ホストの全ての GPU デバ
イスを表すために 1 つの消費カスタムリソース“ngpus”を構成します。
管理者は、以下のような方法で ngpus カスタムリソースを構成します。
1. PBS Professional Server と Scheduler を停止します。Server のホストで
以下のように入力します。
/etc/init.d/pbs stop
6
2. $PBS_HOME/server_priv/resourcedef を編集して以下の行を加えます。
ngpus type=long flag=nh
3. $PBS_HOME/sched_priv/sched_config を編集して、ngpus をスケジュー
リングリソースのリストに加えます。
resources: “ncpus, mem, arch, host, vnode, ngpus”
4. PBS Professional Server と Scheduler を再起動します。Server のホスト
で以下のように入力します。
/etc/init.d/pbs start
5. 使用可能な GPU デバイスの数(この例では 4)を qmgr を介してクラス
タの各実行ホストに加えます。
qmgr –c “set node nodeA resources_available.ngpus=4”
qmgr –c “set node nodeB resources_available.ngpus=4”
6. 以下の方法で、2 つの GPU を搭載した 1 つのノードを要求するジョブ
(例えば“my_gpu_job”)を投入します。
qsub –lselect=1:ncpus=1:ngpus=2 my_gpu_job
管理者は‘pbsnodes’コマンドを介すると、実行ホストに割り当てられた/使用可能な
GPU の数がわかります。
アプローチ 2 – 高度な GPU のスケジューリング
GPU を vnode として構成
このアプローチでは、管理者は各 GPU デバイスを、GPU デバイス番号が付けられ
た自身の vnode として構成します。
デバイス番号を付けた仮想ノードとして GPU を構成する手順:
1. PBS Professional Server と Scheduler を停止します。Server のホストで以下
のように入力します。
/etc/init.d/pbs stop
7
2. $PBS_HOME/server_priv/resourcedef を編集して 2 つの新規カスタムリソー
ス、ngpus および gpu_id を加えます。
ngpus type=long flag=nh
gpu_id type=string flag=h
3. $PBS_HOME/sched_priv/sched_config を編集して、ngpus と gpu_id をスケジュ
ーリングリソースのリストに加えます。
resources: “ncpus, mem, arch, host, vnode, ngpus, gpu_id”
4. PBS Professional サービスを再起動します。Server のホストで以下のように
入力します。
/etc/init.d/pbs start
5. GPU が存在する各実行ホストの vnode 構成を作成します。この例では、
CPU が 4 つ、GPU が 2 つ、およびメモリが 16GB の“nodeA”に対して
“nodeA-vnodes”という名前のスクリプトを作成します。
$configversion 2
nodeA: resources_available.ncpus = 0
nodeA: resources_available.mem = 0
nodeA[0]: resources_available.ncpus = 2
nodeA[0] : resources_available.mem = 8gb
nodeA[0] : resources_available.ngpus = 1
nodeA[0] : resources_available.gpu_id = gpu0
nodeA[0] : sharing = default_exclusive
nodeA[1] : resources_available.ncpus = 2
nodeA[1] : resources_available.mem = 8gb
nodeA[1] : resources_available.ngpus = 1
nodeA[1] : resources_available.gpu_id = gpu1
nodeA[1]: sharing = default_exclusive
6. 以下の方法で、PBS Professional に vnode 構成情報を(GPU を搭載した
ノードごとに)加えます。
$PBS_EXEC/sbin/pbs_mom –s insert nodeA-vnodes nodeA-vnodes
7. 構成ファイルを再度読み込むように、各 pbs_mom にシグナルを出します。
kill –HUP <pbs_mom PID>
8. 1 つ の GPU を 搭 載 し た 1 つ の ノ ー ド を 要 求 す る ジ ョ ブ ( 例 え ば
“my_gpu_job”)を投入します。
qsub –lselect=1:ncpus=1:ngpus=1 my_gpu_job
8
PBS Scheduler は、利用可能な GPU が搭載された vnode を検索し、その
vnode をジョブに割り当てます。GPU と vnode は 1 対 1 の対応のため、
ジョブはどの vnode が指定されるかを PBS に問い合わせ、その vnode の
gpu_id を判別します。最後に、アプリケーションでは適切な CUDA コール
を利用して、そのプロセスと割り当てた GPU とを結合します。
あるいは、特定の gpu_id も要求するジョブを投入できます。以下は、GPU
の ID がそれぞれ 0 である 4 つのノードを要求しています。
qsub –lselect=4:ncpus=1:gpu_id=gpu0 my_gpu_job
この結果、ユーザーと管理者による高度な制御が可能になり、各自のアプリ
ケーションがプログラムされたデバイスを使用して、アプリケーションを実
行できるようになります。
基本および高度な GPU スケジューリングの比較
9
アプローチ 1
アプローチ 2
構成および管理
簡単かつ集中型。
PBS Server と Scheduler
のみ構成の変更が必要。
より複雑で分散型。GPU が搭載
された全てのノードで構成の変
更が必要。
細分性
全ての GPU の優先順位は
等しい。ユーザーはジョ
ブを実行する GPU を指定
しない。
ユーザーは、デバイス番号を指
定して GPU を選択可能。
構成するカスタムリソー
スの数
1 つのみ。
2 つ、それに加えて GPU の数に
応じた全 MOM の仮想ノード。
用途
ジョブがノードを共有し
ない場合に適切(例え
ば、同時に 1 つの GPU の
ジョブが特定のノードで
排他的に実行される場
合)。
同時に複数のジョブでノードを
共有したり、または GPU に(デ
バイス番号で)個別にアクセス
する必要がある場合に適切。
最後に
本文書で提案した 2 種類のアプローチは、PBS Professional を使用した NVIDIA
Tesla GPU のジョブの構成およびスケジューリングに必要な手法を提供しています。
また、本文書は PBS Professional を使用する Tesla GPU の何百ものコンピューティ
ングコアを有効利用する方法に関して詳しく紹介しています。最後に、ユーザーは、
PBS アカウントログファイル、または“pbsnodes”などの PBS Professional コマンド
を使ってジョブが割り当て/要求された GPU の数をチェックできることに着目して
ください。また、この文書で指定したどちらのアプローチも、タスクを特定の GPU
デバイスに集中させようとしないことにも注目してください。通常の CPU ベースの
ジョブと同様に、タスクのコアへの割り当てはオペレーティングシステムサービス
(または CUDA ライブラリ)に処理されます。
www.pbsworks.com •
www.nvidia.com/tesla
Copyright © 2010 Altair Engineering, Inc. All rights reserved. PBS™、 PBS Works™、PBS Professional®、PBS Analytics™、PBS Catalyst™、eBioChem™、e-Compute™、および e-Render™は、Altair Engineering, Inc の商標であり、米国および国際法と条約に保護されています。他の全ての商
標の所有権はそれぞれの保有者に帰属します。本文書は情報提供のみを目的としたもので、誤りを含む可能性があります。内容は現状のまま提供され、
明示あるいは黙示を問わず一切の保証を伴いません。
© 2010 NVIDIA Corporation. All rights reserved. NVIDIA、NVIDIA ロゴ、NVIDIA Tesla、および CUDA は NVIDIA Corporation の商標または登録商標(お
よびその両方)です。全ての会社名および製品名は、関連するそれぞれの所有者の商標または登録商標です。
10