並列コンピュータ TX7/i9610 の利用法
情報部情報基盤課 システム管理係 システム運用係
情報シナジーセンター スーパーコンピューティング研究部
はじめに
並列コンピュータ TX7/i9610 は、最大６４並列による並列処理やベクトル化に不向きなプログラムの高速な演算が可能になり、また Gaussian 等アプリケーションプログラムも、より高速化されております。バッチ処理においては、ジョブ管理システムが LSF から NQSⅡに変わります。この資料では、
TX7/i9610 の利用法について説明します。
システム構成システムは、並列コンピュータ TX7/i9610 とスーパーコンピュータ SX-7, SX-7C から構成されます
（図１）。
新システム

64 CPU512 GB

64 CPU512 GB

64 CPU512 GB

新システム

8 CPU
128 GB

並列コンピュータ
TX7/i9610

8 CPU
128 GB

8 CPU
128 GB

8 CPU
128 GB

8 CPU
128 GB

スーパーコンピュータ SX-7C

既 設

Gigabit

10TBytes

Ethernet
Switchス ー パ ーコンピュータSX-7

ファイルサーバInternet
図１ システム構成

1

並列コンピュータ TX7/i9610
並列コンピュータ TX7/i9610 の１つのノードは、Intel 最新の 64 ビットプロセッ
サ Itanium2™(IA-64)を 64 台と 512GB の主記憶装置を搭載しています。１CPUあたり 6.4GFLOPS の計算能力を有しますので、ノードあたりの最大演算性能は 409.6GFLOPS となります。ベクトル演算に不向きなプログラムの高速な実行が可能です。また、スーパーコンピュータ SX-7 および SX-7C のフロントエンドサーバとしての役割も担っております。
スーパーコンピュータ SX-7C
スーパーコンピュータ SX-7C は５つのノードで構成され、それぞれのノードは 16GFLOPS のベクトルプロセッサ 8 台と 128GB の主記憶装置を搭載しています。5つのノードで最大640GFLOPS、メモリ容量640GBの大規模かつ高性能な処理が可能になります。並列処理には MPI を使った並列プログラミングが必要になります。
スーパーコンピュータ SX-7 （既設）
スーパーコンピュータ SX-7 は、8.83GFLOPS のベクトルプロセッサ 32 台と256GB の主記憶装置を搭載したシステムで１つのノードを構成します。並列処理はノード内３２並列まで可能で、自動並列化、OpenMP、MPI を使った並列処理が実行できます。

ログイン
並列コンピュータ TX7/i9610 にログインします。ログインは、SSH(Secure SHell)を利用します（リスト１）。はじめて接続する場合、コマンド入力後”Are you sure you want to continue connecting (yes/no)?”と問い合わせがありますので yes を入力してからパスワードを入力します。
リスト１ 並列コンピュータへのログイン
yourhost$ ssh gen.isc.tohoku.ac.jp –l 利用者番号
Password: パスワード[利用者番号@gen ~]$Windowsからログインする場合は、Putty等SSH対応のリモート接続ソフトをご利用ください。1
センターに利用登録すると、図１すべてのサーバが利用可能となります。
ログイン名とパスワードは各サーバで共通です。ログイン名は利用者番号を用い、パスワードは初期
1 http://www.cc.tohoku.ac.jp/service/USE/index.html「システム利用の手引き」

2

パスワードが設定されていますので yppasswd コマンドで速やかに変更してください（リスト２）。また、パスワードはセキュリティ保護のためときどき変更することをお奨めします。利用登録時のログインシェルは csh を設定しています。tcsh 等に変更したい場合は ypchsh コマンドをご利用後、再ログインしてください（リスト３）。
ホームディレクトリはファイルサーバの「/uhome/利用者番号」となります。NFS(Network FileSystem)によるファイル管理を行っていますので、スーパーコンピュータ、並列コンピュータから共通に利用できます。
リスト２ パスワードの変更
gen$ yppasswd
yppasswd is deprecated, use /usr/bin/passwd instead
Changing password for x2xxx9.
Old Password: 現在のパスワード
New password: 新しいパスワード
Re-enter new password: 新しいパスワード（再度）Changing NIS password for x2xxx9 on xxx.isc.tohoku.ac.jp.
Password changed
リスト３ ログインシェルの変更（tcsh への変更例）
gen$ ypchsh
ypchsh is deprecated, use /usr/bin/chsh instead
Changing login shell for x2xxx9.
Password: パスワード
Enter the new value, or press return for the default.
Login Shell [/bin/csh]: /bin/tcsh
Shell changed.

プログラミング言語、ライブラリ
プログラミング言語および科学技術計算用ライブラリとして表１に示すものが利用できます。
なお、ASL はコンパイル時のライブラリ指定(-l オプション)は不要です。
表１ プログラミング言語およびライブラリ
ISO/IEC 1539-1:1997,自動並列化, OpenMP
Fortran95
ISO/IEC 14882:1998,自動並列化, OpenMPC++
並列処理ライブラリ
MPI/EXASLFortran95 用科学技術計算ライブラリ3ファイルエディット
ソースファイルは、並列コンピュータの emacs エディタまたは vi エディタで作成します。
研究室等のパソコンにあるソースファイルを利用するには、gen.isc.tohoku.ac.jpにファイル転送してください。送り元のホストがWindowsの場合、転送モードの設定を”ASCII”にすることで適切な改行コードで転送できます。転送手順につきましては、Webページをご参考ください。2
コンパイル●Fortran （自動並列・OpenMP）【形式】 f95 オプション ソースファイル名
主なオプション
-parallel-force_parallel-openmp-O0–O1-O2 または –O-O3-ip-c-o-w90-r8-help
ソースファイル名

自動並列化機能を利用する。
指示行による強制並列化を行う。
OpenMP を利用する。
最適化を無効にする。
最適化を行うが、コードサイズが増える最適化は行わない。
一般的な最適化を行う。（規定値）
高度の最適化（プリフェッチ、スカラリプレスメント、ループ変換等）を行う。
インライン展開を行う。
コンパイルのみ行う。（リンクはしない）
実行可能形式のオブジェクトファイルの名前を指定する。省略時はa.out になる。
非標準 Fortran 機能に関する警告メッセージを抑止する。
精度の自動拡張を行う。（倍精度化）
オプションの種類と説明を表示する。
Fortran のソースプログラムファイル名を指定します。複数のファイルを指定するときは、空白で区切ります。
ソースファイル名には、サフィックス.f90 か.F90（自由形式）、または.f か.F（固定形式）が必要です。

●Fortran (MPI)【形式】 mpif95 オプション MPI ソースファイル名

2 http://www.cc.tohoku.ac.jp/service/USE/index.html「システム利用の手引き」

4

主なオプション-O0-O1-O2 または –O-O3-ip-c-o-w90-r8-help
ソースファイル名

最適化を無効にする。
最適化を行うが、コードサイズが増える最適化は行わない。
一般的な最適化を行う。（規定値）
高度の最適化（プリフェッチ、スカラリプレスメント、ループ変換等）を行う。
インライン展開を行う。
コンパイルのみ行う。（リンクはしない）
実行可能形式のオブジェクトファイルの名前を指定する。省略時はa.out になる。
非標準 Fortran 機能に関する警告メッセージを抑止する。
精度の自動拡張を行う。（倍精度化）
オプションの種類と説明を表示する。
Fortran のソースプログラムファイル名を指定します。複数のファイルを指定するときは、空白で区切ります。
ソースファイル名には、サフィックス.f90 か.F90（自由形式）、または.f か.F（固定形式）が必要です。

●C/C++ （自動並列・OpenMP）【形式】 cc オプション ソースファイル名
主なオプション
-parallel-force_parallel-openmp-O0–O1-O2 または –O-O3-ip-c-o-help
ソースファイル名

自動並列化機能を利用する。
指示行による強制並列化を行う。
OpenMP を利用する。
最適化を無効にする。
最適化を行うが、コードサイズが増える最適化は行わない。
一般的な最適化を行う。（規定値）
高度の最適化（プリフェッチ、スカラリプレスメント、ループ変換等）を行う。
インライン展開を行う。
コンパイルのみ行う。（リンクはしない）
実行可能形式のオブジェクトファイルの名前を指定する。省略時はa.out になる。
オプションの種類と説明を表示する。
C/C++のソースプログラムファイル名を指定します。複数のファイルを指定するときは、空白で区切ります。
ソースファイル名にはサフィックス .c 、C++プログラムのソースフ
ァイル名にはサフィックス .cc または .C が必要です。

5

●C/C++ （MPI）【形式】 mpicc オプション ソースファイル名
主なオプション-O0–O1-O2 または –O-O3-ip-c-o-help
ソースファイル名

最適化を無効にする。
最適化を行うが、コードサイズが増える最適化は行わない。
一般的な最適化を行う。（規定値）
高度の最適化（プリフェッチ、スカラリプレスメント、ループ変換等）を行う。
インライン展開を行う。
コンパイルのみ行う。（リンクはしない）
実行可能形式のオブジェクトファイルの名前を指定する。省略時はa.out になる。
オプションの種類と説明を表示する。
C/C++のソースプログラムファイル名を指定します。複数のファイルを指定するときは、空白で区切ります。
ソースファイル名にはサフィックス .c 、C++プログラムのソースフ
ァイル名にはサフィックス .cc または .C が必要です。

プログラムの実行
コンパイルして作成された実行形式ファイルを実行するには、以下の２つの処理方法があります。
通常はバッチ処理を利用します。
バッチ処理
バッチ処理は、実行の手続きをジョブという単位でジョブ管理システムに登録し、一括に処理します。ジョブ管理システムは NQSⅡ(Network Queuing SystemⅡ)を用意しており、ジョブの操作は NQSⅡのコマンドで行います。通常のプログラム（長時間実行するプログラム、並列実行するプログラム等）はバッチ処理で実行します。
会話型処理
会話型処理は、コマンドラインでプログラムを実行する形式です。CPU 時間や使用できるメモリサイズに制限がありますので、短時間の演算やデバッグ作業にお使いください。

バッチ処理
プログラムの実行は、NQSⅡのコマンドを用いて操作します。図２は作業の流れを示しています。
まず NQSⅡにプログラムの実行を依頼するため、実行の手続きを書いたシェルスクリプトファイルを作成します。作成したファイルはバッチリクエストとして NQSⅡに投入することで、実行の依頼をしま6

す。NQSⅡではキューと呼ばれる実行クラスがあり、並列数やメモリサイズの違いにより複数のキューを設定しています。プログラムに合わせ適切なキューを１つ選択し投入します。リクエストの順番が来ましたら、NQSⅡは自動的に実行します。
リクエスト投入後は、リクエスト状態の確認やキューの込み具合等の確認、また投入済みのリクエストをキャンセルすることも可能です。プログラムが終了するとリクエストはキューの情報から消え、標準出力ファイルと標準エラー出力ファイルが出力されます。

バッチリクエストの作成↓
バッチリクエストの投入↓
バッチリクエストの状態確認↓
バッチリクエストの終了

qsub コマンド
qstat コマンド
qdel コマンド（キャンセル時）

図２ NQSⅡによるリクエストの流れ
バッチリクエストの作成
バッチリクエスト用のシェルスクリプトファイルを作成します。プログラムの実行手続きを、通常のシェルスクリプトと同じ形式で記述します。csh スクリプトと sh スクリプト、どちらでも記述できます（以降、解説は csh スクリプトとします）。リクエストファイル名は任意です。
リスト４はバッチリクエストファイルの一例です。実行形式ファイル a.out を実行する手続きを記述しています。
リスト４ バッチリクエストファイル例# test job-a
コメント行
cd work
作業ディレクトリへ移動
a.out
実行形式ファイル名
・#が先頭の行は、コメント行です。動作には影響しません。
・cd work で作業ディレクトリ（実行形式ファイルのあるディレクトリ）へ移動します。省略するとホームディレクトリを指定したことになります。
・a.out はコンパイルして作成した実行形式ファイルです。あらかじめ会話型処理で作成しておきます。自動並列、OpenMP 用オブジェクトも、同じ形式で指定します。
●作業ディレクトリの指定
NQSⅡ用の環境変数のひとつとしてPBS_O_WORKDIR 変数があります。この変数には、qsubコマンドを実行した時点のカレントディレクトリが設定されます。

7

NQSⅡの作業ディレクトリは規定値でホームディレクトリとなりますので、通常 cd コマンドで実行フ
ァイルのある作業ディレクトリに移動する必要があります。 PBS_O_WORKDIR 変数を設定することで、ディレクトリの具体名を記述する必要がなくなります。
リスト５ バッチリクエストファイル（環境変数 PBS_O_WORKDIR の指定）
# test job-a1
cd $PBS_O_WORKDIR
作業ディレクトリを環境変数で指定
a.out●実行時のデータファイル指定
Fortran で、入出力ファイルを割り当てる環境変数 ftnnn です。
リスト６ バッチリクエストファイル（入出力ファイルの指定例）# test job-b
setenv ftn11 datafile
装置番号 11 に、ファイル datafile を割り当てる
cd $PBS_O_WORKDIR
a.out < infile > outfile
標準入出力ファイルはリダイレクションでも可能

バッチリクエストの投入プログラムの実行は、作成したバッチリクエストを NQSⅡに投入することで行います。投入されたリクエストは、順番が来ると自動的に実行されます。

【形式】

qsub オプション バッチリクエストファイル名システムからのメッセージがリスト７の形式であれば、リクエストは正常に受け付けられています。リク
エストID(1234)は一意なもので、リクエストの状況確認やキャンセル等、ジョブの操作の際に必要となります。
リスト７ qsub コマンドの実行例
gen$ qsub –q a8 job-a
Request 1234.job submitted to queue: a8.
主な qsub コマンドオプション-q-N-oリクエストを投入するキュー名（クラス名）を指定します。（必須）
リクエスト名（ジョブ名）を指定します。指定がなければ、バッチリク
エストファイル名がリクエスト名になります。
標準出力のファイル名を指定します。指定がなければ、リクエスト投入時のディレクトリに「リクエスト名.o リクエスト ID」のファイル名で8

-e-j o-lcputim_job=hh:mm:ss-m b-m e-M メールアドレス出力されます。
標準エラー出力のファイル名を指定します。指定がなければ、リク
エスト投入時のディレクトリに「リクエスト名.e リクエスト ID」のファイル名で出力されます。
標準エラー出力を標準出力と同じファイルへ出力します。
実行打ち切りの CPU 時間を指定します。設定時間は、時：分：秒をhh:mm:ss の形式で指定します。この指定がなければ無制限となります。並列処理で実行するときは、各プロセスの合計 CPU 時間を指定します。
リクエストの実行が開始したときにメールが送られます。
リクエストの実行が終了したときにメールが送られます。
リクエストに関するメールの送信先を指定します。指定がなければ、「利用者番号@gen.isc.tohoku.ac.jp」宛に送られます。

●キュー-q オプションで指定するキュー名の一覧です。単一 CPU で実行するプログラムは as、並列プログラムは a8,a16,a32,a64 のいずれかに投入します。並列数に応じて適切なキューにリクエストを投入してください。並列用のキュー(a8,a16,a32,a64)を利用するには、並列用のオブジェクトを作成している必要があります。am は、アプリケーションプログラム Marc 専用キューです。
表２ キュー名
キュー名（ジョブクラス）asam(Marc 専用)
a8a16a32a64

利用可能 CPU 数(並列数)

CPU 時間メモリサイズ制限(GBytes)

418163264

無制限
無制限
無制限
無制限
無制限
無制限

8864128256512●qsub コマンドオプションの埋め込み
qsub コマンドに毎回オプションを入力することもできますが、手間を省くためバッチリクエストファイ
ルに指定しておくこともできます。
指定方法は、最初のシェルコマンドより前の行に、#PBS という文字列を先頭に指定します。#PBSの後に空白を一文字以上入れ、指定したいオプションを続けます。一行に複数のオプション指定も可能です。リスト５は、２行目で a8 クラスのキューを指定(-q)、３行目で標準エラー出力を標準出力ファイルにひとまとめにする(-jo)、さらにリクエスト名を reqname とする(-N)を、それぞれ指定して9います。
またコマンド列と埋め込みオプションに、同じオプションを指定した場合にはコマンド列の方を有効とします。
リスト８ バッチリクエストファイル（オプションの埋め込み）# test job-a2#PBS –q a8
埋め込みオプション#PBS –jo –N reqname
埋め込みオプション（複数）
cd $PBS_O_WORKDIRa.out

バッチリクエストの状態確認（１）
投入したリクエストの状態を表示します。実行待ち状態のときは、待ち順も表示します。

【形式】qstat

リスト９ qstat コマンド表示例
gen$ qstat
RequestID

ReqName UserName QueuePri STT S

Memory ACCPU Elapse R H M Jobs-------------- -------- -------- ------- --- --- - -------- ---- ------ - - - ---370.job

reqnamex2***9a80 RUN - 732.1B 42350 43012

YYY

1

1:371.job

jobAx2***9a160 QUE - 0.0B00YYY

1

1:373.job

jobB

x2***9a32

0 QUE - 0.0B

00YYY

1

主な表示項目の解説
RequestID

ReqNameUserNameQueue
STTMemory
ACCPUElapse

リクエスト ID
待ち状態(QUE)のリクエストについては、先頭に待ち順の番号がつきます。番号がないのは、実行中（RUN）です。
リクエスト名
ジョブの所有者
キュー名
ステータス （QUE：待ち、RUN：実行中）
使用メモリサイズ (Byte)
演算時間(sec)／並列演算の場合、使用 CPU の総演算時間 (sec)
経過時間 (sec)10システム内に自分のジョブが存在しない場合は、ヘッダのみ表示されます。
リスト１０ ジョブの終了
gen$ qstat
RequestID

ReqName UserName QueuePri STT S

Memory ACCPU Elapse R H M Jobs-------------- -------- -------- ------- --- --- - -------- ---- ------ - - - ----

ヘッダのみ表示されます

バッチリクエストの状態確認（２）
キューの情報を表示します。各ジョブクラスの件数が表示されますので、サーバの混雑度がわかります。
【形式】

qstat -Q

リスト１１ -Q オプションの表示例
gen$ qstat -Q[EXECUTION QUEUE] Batch Server Host: job========================================
QueueNameSCH JSVs ENA STSPRI

TOT ARR WAI QUE PRR RUN POR EXT HLD HOL RST SUS MIG STG CHK--------------- --- ---- ------- ---- -----------------------------------------------------------a1600 ENA ACT

32100001000000000a32

00 ENA ACT

32000000000000000a6400 ENA ACT

32400202000000000a800 ENA ACT

32000000000000000am

00 ENA ACT

32000000000000000as00 ENA ACT

32000000000000000p1614 ENA ACT

32000000000000000p32

14 ENA ACT

32000000000000000p8

12 ENA ACT

32000000000000000px

10 ENA ACT

32000000000000000s01 ENA ACT

32000000000000000ss01 ENA ACT

32000000000000000--------------- --- ---- ------- ---- -----------------------------------------------------------<TOTAL>

500203000000000--------------- --- ---- ------- ---- ------------------------------------------------------------

枠で囲った箇所が、並列コンピュータのキューです。

11主な表示項目の解説
QueueName
TOT
QUE
RUN

キュー名
リクエストの総数
待ちの件数
実行中の件数

バッチリクエストのキャンセル
投入済みのリクエストを取り消すこともできます。
【形式】

qdel リクエスト ID

リスト１２ qdel コマンドの表示例
gen$ qdel 1234
Request 1234.job was deleted.

会話型処理会話型処理は、短時間の演算やデバッグ作業に使用します。一般的な UNIX を利用する手順と同様で、コマンドラインから実行形式ファイル名を入力し実行する形式です（リスト１３）。表３は会話型処理の制限値です。
リスト１３ 会話型処理の例（a.out を実行する）
yourhost$ ssh gen.isc.tohoku.ac.jp –l 利用者番号：super$ a.out（実行中）
super$
表３ 会話型処理の制限値
CPU 時間（時間）（並列処理は総CPU 時間）
1

メモリサイズ(GBytes)
8

genにログインする

同時使用 CPU 台数
（並列数）
412

その他

プログラムの使用メモリサイズ
プログラムを実行した際、使用するメモリサイズをバイト単位で表示します。あらかじめ、必要とするメモリサイズが判断できます。なお、allocate 等で動的に確保するメモリサイズは含まれません。
【形式】

size 実行形式ファイル名

リスト１４ 使用メモリサイズの表示
gen$ size a.out
1046912 + 140272 + 418928 = 1606112

1,606,112 バイト使用します

バイナリファイルの扱い(Fortran の場合)
他のサーバで作成したバイナリファイルを扱う場合、注意が必要です。センターでは、並列コンピ
ュータ TX7/i9610 のエンディアン仕様は Big-Endian に設定しております。もし Little-Endian 仕様のバイナリファイルを扱う場合は、環境変数 F_UFMTENDIAN の設定をクリアします。
Little-Endian 仕様のファイルを扱う設定（csh 形式）【形式】

unsetenv F_UFMTENDIAN

マニュアル
センター１階利用相談室に設置しているマニュアルです。
NEC Fortran Compiler ユーザーズ・ガイド
NEC Fortran コンパイラ・オプション クイック・リファレンス・ガイド
NEC Fortran Libraries Reference
NEC C++ Compiler ユーザーズ・ガイド

13

アプリケーションプログラム
表４は、アプリケーションプログラム一覧です。MATLAB と SAS については、gen からgen2.isc.tohoku.ac.jp にログインしてお使いください。それぞれの詳しい利用方法は、センターのWeb ページをご覧ください。
Web ページ「アプリケーションプログラム」 http://www.cc.tohoku.ac.jp/service/AP/●表４ アプリケーションプログラムとサービスホスト
アプリケーションソフトウェア
分子軌道計算ソフトウェア
統合型数値計算ソフトウェア
汎用構造解析プログラム
対話型解析ソフトウェア
統計解析システム

Gaussian
Mathematica
MARC/Mentat
MATLABSAS

サービスホスト
gen.isc.tohoku.ac.jp

gen2.isc.tohoku.ac.jp

おわりにジョブ管理システム NQSⅡを中心に利用方法の解説と、アプリケーションプログラムの紹介をしました。
研究の強力なツールとしてセンターのシステムをご活用いただければ幸いです。
ご不明な点、ご質問等ございましたら、お気軽にシステム管理係までお問い合わせください。

14