• 検索結果がありません。

ユーザーマニュアル開発環境編

N/A
N/A
Protected

Academic year: 2021

シェア "ユーザーマニュアル開発環境編"

Copied!
26
0
0

読み込み中.... (全文を見る)

全文

(1)

ユーザーマニュアル

開発環境編

(2)

目次

1 はじめに ... 2 2 Intel Composer ... 3 2.1 インストールパッケージ ... 3 2.2 使用するコマンド ... 3 2.3 環境設定 ... 4 2.4 コンパイラバージョンの変更 ... 5 2.5 ドキュメント ... 6 2.6 サポート期間 ... 6

2.7 Intel Math Kernel Library ... 7

2.8 コンパイルオプション ... 8 3 OpenMPI ... 9 3.1 インストールパッケージ ... 9 3.2 使用するコマンド ... 10 3.3 コンパイラオプション ... 10 3.4 実行方法 ... 11 3.5 計算ノードの指定 ... 12 3.6 ジョブスケジューラーとの連携方法 ... 15 4 PGI Workstation ... 16 4.1 インストールパッケージ ... 16 4.2 使用するコマンド ... 16 4.3 環境設定 ... 17 4.4 コンパイラバージョンの変更 ... 17 4.5 ドキュメント ... 18 4.6 ライセンスファイル ... 18 4.7 Gaussian09 ソースコード版での使用 ... 18 5 CUDA ... 19 5.1 インストールパッケージ ... 19 5.2 使用するコマンド ... 19 5.3 環境設定 ... 20 5.4 GPU の動作確認 ... 20 5.5 CUDA プログラミングガイド ... 22 6 トラブルシューティング ... 23 6.1 大容量スレッドのInfiniband RDMA 通信障害について ... 23

(3)

1 はじめに

この度は当社計算機をお買い求め頂きまして誠にありがとうございます。 本マニュアルは当社計算機で使用する開発環境について概説します。当社の計算機は製品ごと にインストールされている環境は異なり、通常ではここで紹介する全ての開発環境をインストー ルしておりません。 本マニュアルをご覧の際は計算機にインストールされているパッケージをご確認の上、ご使用 になる開発環境の項目をご確認頂くようお願い致します。

(4)

2 Intel Composer

2.1 インストールパッケージ

Intel Composer のパッケージはインテル レジストレーション・センターのホームページで 配布されています。インテルコンパイラのライセンスをお持ちの場合は以下サイトからパッケー ジをダウンロードすることができます。 https://registrationcenter.intel.com/regcenter/register.aspx

計算機には最新版のIntel Composer XE 2013 (13.1) と、以前リリースされた安定版の Intel Composer XE 2011 SP1 (12.1) の 2 種類のバージョンがインストールされています。各パッケ ージは計算機の以下ディレクトリにインストールされています。

パッケージ ディレクトリ

Intel Composer XE 2013 (13.1) /opt/intel/composer_xe_2013 Intel Composer XE 2011 SP1 (12.1) /opt/intel/composer_xe_2011_sp1

2.2 使用するコマンド

Intel Composer を使うには以下コマンドを使用します。出荷設定では root 以外の全ユーザー が使用できます。

コマンド 内容

ifort Fortran 77 / 90 / 95 / 2003 用

icc C 言語用

(5)

2.3 環境設定

Intel Composer を使用するための環境設定を各ユーザーのホームディレクトリのファイルで 行っています。

tcsh をご使用の場合は ~/.cshrc 、bash をご使用の場合は ~/.bashrc ファイル内で、コン パイラの環境設定ファイル iccvars と ifortvars ファイルをロードします。

環境設定ファイル内には変数 COMPILER があります。変数 COMPILER に INTEL13.1 を選択してい る場合、ユーザーはIntel Composer XE 2013 (13.1) を使用することができます。

出荷標準ではユーザーはIntel Composer XE 2013 (13.1) のコンパイラを使用するように設 定されています。

出荷設定では icc / ifort コマンドに以下のエイリアス設定をしています。icc / ifort コマ ンドを使用する際、以下オプションが自動で適用されます。 オプション 内容 -D_FILE_OFFSET_BITS=64 プログラム上で 2GB を超えるサイズのファイルを取り 扱うために使用します。 (icc で標準使用します。) -D_LARGEFILE_SOURCE プログラム上で 2GB を超えるサイズのファイルを取り 扱うために使用します。 (icc で標準使用します。) -assume buffered_io ファイルに書き込みを行う際、ディスクにすぐに書き込 まず、バッファに蓄積することを指示します。 (ifort で標準使用します。)

(6)

2.4 コンパイラバージョンの変更

Intel Composer の使用環境は各ユーザーのホームディレクトリのファイルで設定されます。 使用するコンパイラのパッケージを変更するには、次のファイルの COMPILER の変数の値を変更 します。 ・tcsh をご使用の場合は ~/.cshrc を変更します。 set COMPILER=INTEL13.1 #set COMPILER=INTEL12.1 #set COMPILER=INTEL11.1 #set COMPILER=PGI13 #set COMPILER=PGI12 #set COMPILER=PGI11 ・bash を使用の場合は ~/.bashrc を変更します。 COMPILER=INTEL13.1 #COMPILER=INTEL12.1 #COMPILER=INTEL11.1 #COMPILER=PGI13 #COMPILER=PGI12 #COMPILER=PGI11 ※各ユーザーが使用するシェルは "echo $0" コマンド等で確認します。 次回ユーザーがログインした時からコンパイラのバージョンが変わります。 バージョンが変更されたことを、念のため "ifort -V" や "icc -V" でご確認下さい。 コンパイラバージョン変更時の注意 上記のインテルコンパイラのバージョンを変更すると、環境変数 LD_LIBRARY_PATH 等が変わ ります。コンパイラのバージョン変更後に以前コンパイルしたプログラムを動作すると、実行 ファイルが正しいライブラリを参照できず、正常に動作しない場合があります。その際は実行 するプログラムをコンパイルし直すか、使用するコンパイラのバージョン毎に新しいユーザー を作成するなどをしてご対応下さい。

(7)

2.5 ドキュメント

Intel Composer のドキュメントはインストールしたディレクトリ内にあります。詳細につき ましてはこちらのドキュメントをご参照下さい。

バージョン ディレクトリ

Intel Composer XE 2013 (13.1) /opt/intel/composer_xe_2013/Documentation Intel Composer XE 2011 SP1 (12.1) /opt/intel/composer_xe_2011_sp1/Documentation

また、Intel Composer の代理店のエクセルソフト(株)のサイトより、各種ドキュメントが配 布されています。以下URL をご参照下さい。 http://www.xlsoft.com/jp/products/intel/compilers/index.html

2.6 サポート期間

当社で販売している Intel Composer シングルノードライセンスは 1 年間のサポート期間が あります。保障期間内は以下の権利があります。 (1) Intel Composer のパッケージがマイナーバージョンアップした際、新しいパッケージを入 手して計算機にインストールすることができます。新しいパッケージはインテル レジストレ ーション・センターから配布されます。 (2) 開発元の Intel Composer テクニカルサポート対応が受けられます。 ライセンスが切れた場合は上記の対応が受けられなくなります。サポート期限後も引き続きこ れらの対応を受ける場合は有償でライセンス更新を行う必要があります。 サポート期限が切れた後も既に計算機にインストールされているコンパイラを使用すること や、コンパイルしたプログラムを使用することは可能です。 Intel Composer のサポート期間はインテル レジストレーション・センターでログインして 確認できます。また、計算機で使用されているライセンスファイルにも記述されています。ライ センスファイルは以下をご確認下さい。 ・ファイル:/opt/intel/licenses/COM_L_CMP__xxxx-xxxxxxxx.lic ・確認箇所:通常は1 行目に記述があります。 ・ファイル例:(以下例では 2013/4/4 までです)

(8)

2.7 Intel Math Kernel Library

Intel Composer には Intel Math Kernel Library (MKL)パッケージが同梱されています。MKL を使用の際はコンパイル時のオプションでライブラリを指定して下さい。 以下がコンパイル時の構文の概要です。 MKL の blas / lapack 等を使用する場合のコンパイル例は以下のとおりです。 (例 1) lntel LP64 インターフェースを使用したダイナミックリンクでのコンパイル (例 2) Intel LP64 インターフェースを使用したスタティックリンクでのコンパイル

※${MKL_PATH}は使用する Intel Composer のバージョンで変わります。 Intel Composer XE 2013 (13.1) の場合:

/opt/intel/composer_xe_2013/mkl/lib/intel64 Intel Composer XE 2011 SP1 (12.1) の場合:

/opt/intel/composer_xe_2011_sp1/mkl/lib/intel64

MKL の使用の詳細については Intel Composer 付属マニュアルの " Linking Your Application with the Intel® Math Kernel Library " 等の項目をご参考下さい。

ifort program.f -Wl,--start-group ${MKLPATH}/libmkl_intel_lp64.a

${MKL_PATH}/libmkl_intel_thread.a ${MKL_PATH}/libmkl_core.a -Wl,--end-group -liomp5 -lpthread

ifort program.f -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread <files to link>

-L<MKL path> -I<MKL include> [-I <MKL include>/{ia32|intel64} {ilp64|lp64}] [-lmkl_blas {95|95_ilp64|95_lp64} ] [-lml_lapack{95|95_ilp64|95_lp64}] [<cluster components>]

-lmkl_{intel|intel_ilp64|intel_lp64|intel_sp2dp|gf|gf_ilp64|gf_lp64} -lmkl_{intel_thread|gnu_thread|pgi_thread|sequential}

-lmkl_core

(9)

2.8 コンパイルオプション

Intel Composer でよく使用するコンパイルオプションです。 オプション 内容 -parallel 作成された実行ファイルはスレッド並列で動作 するようになります。 -openmp OpenMP を使用するプログラムをコンパイル する際に使用します。 -mcmodel 使用するメモリーモデルを指定します。 (例) -mcmodel=large 2GB 以上のサイズのデータが使用できます。 -fp-model 浮動小数点の扱い方を指定します。 (例) -fp-model strict 縮約を無効にし、浮動小数点環境の変更を可能に するプロパティを有効にします。

(10)

3 OpenMPI

OpenMPI とは、並列・分散プロセス間のメッセージ機能を提供する MPI 規格を実装したソフ トウェアの一つです。特徴としては、 ・オープンソースであること ・MPI-1、MPI-2 規格に互換性がある ・様々なOS やネットワーク規格に対応している という点が挙げられます。

過去にMPI-1 規格に準拠した mpich や lam、MPI-2 規格に準拠した mpich2 で動作していた

ソースコードは、ほとんどの場合はそのまま動作します。

なお、過去に mpich や mpich2 等でビルドを行ったアプリケーションはそのままでは

OpenMPI で動作しません。OpenMPI で実行するためには、ソースコードから OpenMPI でビ ルドする必要があります。 本項では計算機にセットアップされているOpenMPI について概説します。

3.1 インストールパッケージ

OpenMPI は http://www.open-mpi.org/ から配布されているソースコードを使用してセ ットアップしています。当社では安定版の1.6.5 をセットアップしています。 それぞれのコンパイラパッケージ用に OpenMPI をビルドしています。各パッケージ用の OpenMPI は以下ディレクトリにセットアップされています。 コンパイラ ディレクトリ

Intel Composer XE 2013 (13.1)用 /usr/local/openmpi-intel131 Intel Composer XE 2011 SP1 (12.1)用 /usr/local/openmpi-intel121

(11)

3.2 使用するコマンド

OpenMPI で使用するコマンドは以下の通りです。プログラムをコンパイルする際、内部で使 用するコンパイラが呼び出されてMPI ライブラリのリンクが行われます。 コマンド 内容 mpif90 Fortran90 用 mpif77 Fortran77 用 mpicc C 言語用 mpicxx C++言語用 mpirun MPI プログラムの実行 ompi_info OpenMPI のバージョンの表示 使用するコンパイラの表示 セットアップされているモジュールの表示

3.3 コンパイラオプション

基本的に通常のコンパイラのオプションをそのまま使用できますが、static リンクについては 注意が必要です。OpenMPI は仕様上、アプリケーションのビルド時には shared リンク (dynamic リンク)を使用することとなっています。 static オプションを使用することは可能ですが、その場合は可能な限り static リンクを行うと いう振る舞いになります。システム関連のライブラリ群(例えばInfiniband 関連など)は static リンクされません。そのため、全てのライブラリをstatic にした、完全な単一実行バイナリを作 成することはできません。 この場合、shared リンクされているファイルが実行されるには、実行環境において使用する ライブラリが存在し、そのライブラリにパスが通っていることが必須です。アプリケーションの ビルドを行い、その環境においてすぐに実行を行う場合には問題はありませんが、ノード環境の 変更(コンパイラを変更する、OS やアプリケーションのバージョンアップを行うなど)、作成 したノード以外の環境へコピーされる場合にはshared リンクされているファイルも同様にコピ ーするよう注意して下さい。

(12)

3.4 実行方法

mpirun コマンドを使用してプログラムを実行します。形式は以下の通りです。

[並列数] には、並列計算に使用するプロセスの数が入ります。通常、その数の CPU コアが使

用されます。例えば、4core を使用する並列計算の場合、mpirun -np 4 … のように指定します。

[option] の項目は実行時のオプションです。オプションの詳細な解説は、OS 上の man コマ

ンドより man mpirun でご確認下さい。

[実行ファイル] 指定時にパスの指定を正確に行う必要があります。特に同名の実行ファイル

が複数ある場合や、ノード間でプロセスを起動する場合には、安全に実行するため、絶対パスで 指定することを強く推奨します。

例えば、プログラム test が/usr/local/bin/ に存在し、-i オプションで入力ファイル、-o オ プションで出力ファイルを指定できるとします。入力ファイルに /home/hpc/test_data/inp を 使用し、出力先として /home/hpc/test_out/out を指定したい場合、下記のようなコマンドライ ンになります。

また、上記の例でカレントディレクトリにプログラム test を置いたときは下記のようなコマ ンドラインになります。

mpirun -np 4 ./test -i /home/hpc/test_data/inp -o /home/hpc/test_out/out mpirun -np [並列数] [option] [実行ファイル]

(13)

3.5 計算ノードの指定

計算に使用するノードはファイルで指定します。既定では次の設定ファイルを参照します。 /usr/local/openmpi-"package"/etc/openmpi-default-hostsfile ※ "package" には使用するコンパイラのバージョン等の名前が入ります。 この設定ファイルの書式は次の通りです。 計算に使用するノードのホスト名と、slots の後にはそのノードで実行するプロセス数の上限 を 記 述 し ま す 。 ホ ス ト 名 は 小 文 字 で 、FQDN の 形 で 記 述しま す ( node01 で はな く 、 node01.sample.jp のように)。slots には、一般的に、そのノードが持っているコア数を記述 します。

また、mpirun でMPI プログラムを起動する際に –machinefile オプションを使用することで、

上記既定とは異なる設定ファイルを用いることもできます。例えば、設定ファイルが hostsfile とした場合、オプション –machinefile hostsfile と指定します。 各ノードへのMPI プロセス(rank)の割り当ては、mpirun のオプションで制御できます。大 別して、--byslot、-loadbalance、--bynode の3種類の割り当て方法があります。 ① --byslot オプション(既定)は、上記設定ファイル内に記述されているリストの上から、 書かれた順にslot を埋めるように割り当てを行います。 ② -loadbalance オプションは、ノード間でプロセス群を均等に配分するように割り当 てを行います。 ③ --bynode オプションは、-loadbalance と似ていますが、ノードに 1 プロセス生成 すると次のノードに移るように、ラウンドロビンで割り当てを行います。 具体例として、次の hostsfile で mpirun を-np に 4,8,16 を指定した際に、各ノードに割り当 てられるrank を示します。 node01.sample.jp slots=4 node02.sample.jp slots=8 node03.sample.jp slots=4 node04.sample.jp slots=8 node01.sample.jp slots=X node02.sample.jp slots=Y node03.sample.jp slots=Z

(14)

mpirun -np X mpirun -np X -loadbalance mpirun -np X --bynode X=4 (4 並列) node01.sample.jp:0 1 2 3 X=4 (4 並列) node01.sample.jp:0 node02.sample.jp:1 node03.sample.jp:2 node04.sample.jp:3 X=4 (4 並列) node01.sample.jp:0 node02.sample.jp:1 node03.sample.jp:2 node04.sample.jp:3 X=8 (8 並列) node01.sample.jp:0 1 2 3 node02.sample.jp:4 5 6 7 X=8 (8 並列) node01.sample.jp:0 1 node02.sample.jp:2 3 node03.sample.jp:4 5 node04.sample.jp:6 7 X=8 (8 並列) node01.sample.jp:0 4 node02.sample.jp:1 5 node03.sample.jp:2 6 node04.sample.jp:3 7 X=16 (16 並列) node01.sample.jp:0 1 2 3 node02.sample.jp:4 5 6 7 8 9 10 11 node03.sample.jp:12 13 14 15 X=16 (16 並列) node01.sample.jp:0 1 2 3 node02.sample.jp:4 5 6 7 node03.sample.jp:8 9 10 11 node04.sample.jp:12 13 14 15 X=16 (16 並列) node01.sample.jp:0 4 8 12 node02.sample.jp:1 5 9 13 node03.sample.jp:2 6 10 14 node04.sample.jp:3 7 11 15 実行するプログラムの特性によっては、これらのオプション指定がプログラムのパフォーマン スに大きな影響を与えることがあります。以下に、その例を2つ示します。 (例 1) 局所性の強い連続データを分散保持するプログラム

局所性の強い ABCDEFGH という連続データを分散させる場合、-loadbalance と--bynode 時とで、分散のされ方が次のように異なります。

mpirun -np X -loadbalance mpirun -np X --bynode node01 node02 node03 node04 データ A B データ C D データ E F データ G H データ A E データ B F データ C G データ D H このようなプログラムの場合に --bynode を使用すると(右例)、例えば A を処理したプロセ スがB を処理する際に、高速なノード内通信ではなくノード間のネットワーク通信のやり取りを せざるを得なくなることで、パフォーマンスが低下する場合があります。

(15)

(例 2) CPU コア-メモリ間の大量のデータ転送により律速しているプログラム CPU コアの高い処理性能を十分に発揮させるには、それに見合った速度でデータをメモリか ら取り出せなくてはなりません。アルゴリズム上、メモリからCPU コア(のレジスタ)へのデ ータ転送速度が性能支配的なプログラムの場合、各プロセスが使用可能な転送速度を勘案しなが らノードへのプロセス群の割り当てを選択することが重要です。 ノード上では、ノード上で稼働するプロセス群が、CPU-メモリ間のデータ転送速度を分け合 って使用します。そのため、各プロセスが使用できる転送速度は、稼働しているプロセス数分の 1 になります。 例えば、各ノードに 8core を有する 4 ノードクラスタ環境で計 16 プロセス並列を行う場合 --bynode 無の場合は、計 2 ノードを使用し、各ノードで計 8 個プロセス --bynode 有の場合は、計 4 ノードを使用し、各ノードで計 4 個プロセス が起動されます。CPU-メモリ間のデータ転送速度全体を 100 とおいた場合、それぞれにおけ る、各CPU コア-メモリ間のデータ転送速度は次となります。

mpirun -np 16 mpirun -np 16 --bynode node01 node02 node03 node04 100/8 = 12.5 100/8 = 12.5 100/4 = 25 100/4 = 25 100/4 = 25 100/4 = 25 つまり、--bynode 有の方が、無の場合に比べて、各プロセスが使用できる、メモリとの間の データ転送速度が2倍になります。 CPU コア-メモリ間の大量のデータ転送により律速しているプログラムでは、このデータ転 送速度がプログラム全体の計算速度に大きく影響しますので、注意深くプロセス群の割り当てを 選択することが重要です。 以上の2 例は一般論ですので、実際の動作についてはお客様ご自身でご確認いただいた上でご 使用下さい。

(16)

3.6 ジョブスケジューラーとの連携方法

ジョブスケジューラー( LSF / Lava / Torque / GridEngine 等) を使用して MPI のプログラム をジョブとして投入すると、ジョブスケジューラーが自動でプログラムを実行するノードを選択 します。

ジョブスケジューラーを使用して MPI ジョブを投入する方法につきましては、各ジョブスケ

(17)

4 PGI Workstation

PGI コンパイラは The Portland Group Inc 社の科学技術並びにエンジニアリング分野におけ るフラグシップ・コンパイラです。多くのソフトウェアで標準のコンパイラとして採用されてお

り、安定性とパフォーマンスを兼ね備えています。また、PGI アクセラレータコンパイラを使用

することで、NVIDIA 社の CUDA を対象とした GPGPU に対応した処理を行うことができます。

本項ではPGI Workstation のセットアップ構成について概説します。

4.1 インストールパッケージ

PGI Workstation のパッケージは代理店のソフテック社より配布されています。以下 URL から ダウンロードしたパッケージをインストールしております。

http://www.softek.co.jp/SPG/ftp.html

PGI Workstation パッケージは /opt/pgi ディレクトリにインストールしています。インスト

ール時に追加するモジュールACML・CUDA Toolkit・Java RE・MPICH はすべて一緒にインス

トールしています。 PGI のライセンスサーバーは /etc/rc.d/init.d/lmgrd-pgi スクリプトから OS ブート時に自 動で起動します。

4.2 使用するコマンド

PGI Workstation では以下コマンドを使用します。 出荷設定ではroot 以外の全ユーザーが使用できます。 コマンド 内容 pgf77 Fortran 77 用 pgf90 Fortran 90 / 95 /2003 用 pgcc C 言語用 pgc++ C++ 用

(18)

4.3 環境設定

PGI Workstation を使用するための環境設定は各ユーザーのホームディレクトリのファイル

で 行って い ます 。tcsh をご使用の場合は ~/.cshrc ファイル、bash をご使用の場合は

~/.bashrc ファイル内で、PGI の環境設定スクリプトをロードします。

環境設定ファイル内に変数 COMPILER があります。変数 COMPILER にPGI12 を選択していると、

ユーザーはPGI Workstation Version12 を使用できます。

4.4 コンパイラバージョンの変更

PGI Workstation の使用環境は各ユーザーのホームディレクトリのファイルで設定されます。 使用するコンパイラのパッケージを変更する際は次のファイルの COMPILER の変数の値を変更し ます。 ・tcsh をご使用の場合は ~/.cshrc を変更します。 #set COMPILER=INTEL13.1 #set COMPILER=INTEL12.1 #set COMPILER=INTEL11.1 set COMPILER=PGI12 #set COMPILER=PGI11 ・bash を使用の場合は ~/.bashrc を変更します。 #COMPILER=INTEL13.1 #COMPILER=INTEL12.1 #COMPILER=INTEL11.1 COMPILER=PGI12 #COMPILER=PGI11 ※各ユーザーが使用するシェルは "echo $0" コマンド等で確認します。 次回ユーザーがログインした時からコンパイラのバージョンが変わります。バージョンが変更 されたことを、念のため " pgf90 -V" や "pgcc -V" でご確認下さい。

(19)

4.5 ドキュメント

PGI Workstation ドキュメントは計算機の以下ディレクトリにあります。 /opt/pgi/linux86-64/"Version"/doc

※ " Version" にはインストールしたパッケージのバージョンが入ります。

PGI コンパイラ代理店のソフテック社がホームページでドキュメントを公開しています。以

下URL にコンパイラについての FAQ や TIPS 等様々な情報が掲載されております。

http://www.softek.co.jp/SPG/Pgi/support.html

4.6 ライセンスファイル

PGI コンパイラのライセンスファイルは /opt/pgi ディレクトリにあります。この中の license.dat ファイルにサポート期限の日時が記述されています。この期間の間、PGI コンパイ ラのアップデートを行うことや、開発元へのサポート対応が可能です。この期限を過ぎても、現 在セットアップされているPGI コンパイラを使用することはできます。

4.7 Gaussian09 ソースコード版での使用

Gaussian 社が販売している量子化学計算 Gaussian09 のソース版を Linux EM64T プラットフ

ォームで使用される場合、Gaussian 社は PGI コンパイラを使用することを推奨しています。ま

た、Gaussian 社では Gaussian09 のリビジョン毎に Gaussian 社がサポートする PGI コンパイ

ラのバージョンを指定しています。

Gaussian09 ソース版の使用目的で販売しました計算機では、PGI コンパイラは最新のもので

はなく以下バージョンのものをセットアップしております。

Gaussian09 Revision PGI Workstation バージョン

Gaussian09 d01 PGI F77 12.10

Gaussian09 c01 PGI F77 11.8

Gaussian09 b01 PGI F77 10.5

(20)

5 CUDA

CUDA は NVIDIA 社が提供する GPU を演算処理で使用するための統合開発環境です。

本項では計算機にセットアップされているCUDA について概説します。

5.1 インストールパッケージ

CUDA のパッケージは NVIDIA DEVELOPER ZONE で配布されています。

http://developer.nvidia.com/cuda-downloads

CUDA の各パッケージを以下ディレクトリにインストールしています。

バージョン ディレクトリ

CUDA Driver rpm でのインストール

CUDA Toolkit /usr/local/cuda

CUDA SDK /usr/local/cuda/NVIDIA_GPU_Computing_SDK

CUDA の各パッケージは出荷時での最新のものをインストールしております。

セットアップされているCUDA のバージョンは以下コマンドで確認できます。

・CUDA Driver ・・・・・・ nvidia-smi コマンド

・CUDA Toolkit ・・・・・・ nvcc コマンド (root 以外のユーザーで使用可能)

5.2 使用するコマンド

CUDA では以下コマンドを使用します。

出荷設定ではroot 以外の全ユーザーが使用できます。

コマンド 内容

(21)

5.3 環境設定

CUDA を使用するための環境設定は各ユーザーのホームディレクトリのファイルで行ってい ます。tcsh をご使用の場合は ~/.cshrc ファイル、bash をご使用の場合は ~/.bashrc ファイ ル内で、CUDA の環境設定用スクリプトをロードします。 CUDA 環境設定用スクリプトは以下 2 つです tcsh 用 /home/.common/01-CUDA.csh bash 用 /home/.common/01-CUDA.sh

5.4 GPU の動作確認

GPU の状態は以下のようにしてご確認下さい。 (1) nvidia-smi コマンド

計算機に搭載している各GPU の GPU 温度・GPU 使用率・メモリ使用率等の情報を取得でき

ます。nvidia-smi には以下オプションがあります。 オプション 内容 -q GPU の全ての情報を出力します -i 0 複数のGPU が搭載されている場合、0 番として認識している GPU に対して処理を実行します -d MEMORY nvidia-smi で出力可能な情報のうち MEMORY についてのみ 出力を行います このオプションで指定可能な項目は以下の通りです MEMORY,UTILIZATION,ECC,TEMPERATURE,POWER, CLOCK,COMPUTER -l 2 2 秒おきに出力しつづけます。 Ctrl+C で出力を止められます。 (2) deviceQuery nvidia-smi と同様にGPU の状態を出力します。 deviceQuery プログラムは CUDA SDK パッケージ内のサンプルプログラムのひとつ で以下ディレクトリにあります。 /usr/local/cuda/NVIDIA_GPU_Computing_SDK/C/bin/linux/release

(22)

(3) dmesg コマンド ・ /var/log/Xorg.log ファイル

NVRM から始まる行の内容が NVIDIA のカードのログになります。

GPU の使用時に不具合等が発生した際はこちらのログをご確認下さい。

[root@hpcs01 ~]# cat /var/log/Xorg.log | grep NVRM

NVRM: loading NVIDIA UNIX x86 Kernel Module 185.18.36 Fri Aug 14 17:18:04 PDT 2011

vmap allocation for size 16781312 failed: use vmalloc=<size> to increase size.

NVRM: RmInitAdapter failed! (0x26:0xffffffff:1096)

NVRM: rm_init_adapter(0) failed vmap

allocation for size 16781312 failed: use vmalloc=<size> to increase size.

NVRM: RmInitAdapter failed! (0x26:0xffffffff:1096) NVRM:

rm_init_adapter(0) failed

[root@hpcs01 ~]# dmesg | grep NVRM

The system logs include some disturbing looking NVRM messages however: NVRM: RmInitAdapter failed! (0x25:0xffffffff:1011)

NVRM: rm_init_adapter(1) failed

allocation failed: out of vmalloc space - use vmalloc=<size> to increase size. NVRM: RmInitAdapter failed! (0x25:0xffffffff:1011)

NVRM: rm_init_adapter(1) failed

allocation failed: out of vmalloc space - use vmalloc=<size> to increase size. NVRM: RmInitAdapter failed! (0x25:0xffffffff:1011)

(23)

5.5 CUDA プログラミングガイド

PGI コンパイラを用いて CUDA プログラムを開発する場合には、PGI コンパイラ代理店のソ フテック社が購入者向けに載せているテクニカル情報・コラムが有用です。

ソフテック PGI テクニカル情報・コラム(ソフテック社お客様専用)

http://www.softek.co.jp/SPG/Pgi/TIPS/para_guide.html

PGI CUDA Fortran 構文を用いた GPGPU プログラム例と、そのコンパイル・リンク方法は、次 のページに解説されています。

PGI CUDA Fortran のコンパイル・オプション

http://www.softek.co.jp/SPG/Pgi/TIPS/opt_cudaF.html

また、OpenACC ディレクティブを用いた GPGPU プログラム例と、そのコンパイル・リンク 方法は、次のページに解説されています。

PGI アクセラレータ・コンパイル用のオプション

http://www.softek.co.jp/SPG/Pgi/TIPS/opt_accel.html

弊社技術員による「GPU で最速を極めるブログ」では、既存 CPU プログラムを GPU 向けに

書き換えたソースコード例やShared Memory を活用した高速化例、CUDA5 で搭載された新機

能の検証結果、最新GPU の情報など、GPGPU をご利用の方を対象に技術情報を発信していま

す。こちらも併せてご活用ください。

GPU で最速を極めるブログ

(24)

6 トラブルシューティング

6.1 大容量スレッドの Infiniband RDMA 通信障害について

使用するメモリサイズが数GB に及ぶスレッドが Infiniband RDMA 通信を行う場合、異常な

ほどに計算終了までに時間がかかったり、計算が終了しないままになったりすることがあります。 OFED 1.5.3 の mlx4 ドライバを用いた VASP や FLUENT といったアプリケーションの一部のイン プットにおいて、このような障害の発生が確認されています。

この障害の原因は、RDMA 通信に使用する mlx4 ドライバの Memory Translation Table(MTT)

の容量が、Mellanox OFED 1.5.3 の出荷設定だと小さすぎることです。この容量を十分な大きさ

に設定することで、障害が解消されます。これには以下の操作を行います。 (1) root ユーザーでログインします。

(2) OFED に含まれている ofed_info コマンドを実行し(その結果を grep コマンドに渡して出力の 一部だけを抽出し)、OFED のバージョンを確認します。ofed_info は Mellanox OFED 1.5.3 に 含まれています。/usr/bin/ofed_info が存在しない場合は、Mellanox OFED 1.5.3 ではありま せん。

このようにMellanox OFED 1.5.3 である場合には、次に進みます。1

# ofed_info | grep OFED

(25)

(3) OS バージョンに応じたドライバ設定ファイル(次表参照)を vim 等のテキストエディタで開 きます。

OS バージョン 設定ファイルの場所

RedHatEL 5.8、CentOS 5.8 /etc/modprobe.d/mlx4_en.conf RedHatEL 6.2、CentOS 6.2 /etc/modprobe.d/mlx4_en.conf RedHatEL 6.3、CentOS 6.3 /etc/modprobe.d/mlx4_en.conf RedHatEL 6.4、CentOS 6.4 /etc/modprobe.d/mlx4_en.conf

(4) 一 番 下 の options 行 の 末 尾 に 、 ノ ー ド の メ モ リ 搭 載 量 に 合 わ せ て 、 log_num_mtt と log_mtts_per_seg の指定を次のように加筆します(指定する値は次表を参照してください)。

(例) 64GB 搭載ノードの場合

options mlx4_core pfctx=0 pfcrx=0 log_num_mtt=25 log_mtts_per_seg=0

ノードのメモリ搭載量 log_num_mtt の値 log_mtts_per_seg の値 64GB 25 0 128GB 26 0 256GB 27 0 512GB 28 0 1TB 29 0 なお、これらの値は次の関係を満たすように選択されています。 ノードのメモリ搭載量×2 = ( 2log_num_mtt )×( 2log_mtts_per_seg )×4KB (5) 変更したドライバ設定ファイルを保存します。 (6) 次のコマンドを実行して openibd デーモンを再起動させます。 # service openibd restart

(26)

付録

A

A.1 HPC システムズ お問い合わせ先

弊社ホームページ http://www.hpc.co.jp/support_index.html サポート案内やお問い合わせの多い内容など様々な情報を掲載しております。 是非ご活用ください。 HPC システムズ株式会社 〒108-0022 東京都港区海岸 3-9-15 LOOP-X 8 階 HPC 事業部 【営業】03-5446-5531 【サポート】03-5446-5532 お電話によるサポート受付は祝日、弊社指定休日を除く月曜日から金曜日の9:30~17:30 とさせて頂きます。 【FAX】03-5446-5550 【電子メール】hpcs_support@hpc.co.jp

参照

関連したドキュメント

した標準値を表示しておりますが、食材・調理状況より誤差が生じる場合が

問題集については P28 をご参照ください。 (P28 以外は発行されておりませんので、ご了承く ださい。)

12) 邦訳は、以下の2冊を参照させていただいた。アンドレ・ブルトン『通底器』豊崎光一訳、

ことで商店の経営は何とか維持されていた。つ まり、飯塚地区の中心商店街に本格的な冬の時 代が訪れるのは、石炭六法が失効し、大店法が

各新株予約権の目的である株式の数(以下、「付与株式数」という)は100株とします。ただし、新株予約

① 小惑星の観測・発見・登録・命名 (月光天文台において今日までに発見登録された 162 個の小惑星のうち 14 個に命名されています)

地震が発生しました。(An earthquake has occurred.) 以下のURLをクリックして、安否状況を報告 してください。(Please visit the following URL and report

・カメラには、日付 / 時刻などの設定を保持するためのリチ ウム充電池が内蔵されています。カメラにバッテリーを入