科学計算用ベクトル計算機及び高速計算機の利用について

Nara Women's University Digital Information Repository
Title
科学計算用ベクトル計算機及び高速計算機の利用について
Author(s)
上江洌, 達也
Citation
上江洌達也:奈良女子大学情報処理センター広報, Vol. 9, pp.2-9
Issue Date
1997-12
Description
URL
http://hdl.handle.net/10935/3830
Textversion
publisher
This document is downloaded at: 2015-02-01T00:28:45Z
http://nwudir.lib.nara-w.ac.jp/dspace
業務会より
科学計算用ベクトル計算機及び高速計算機の利用について
理学部物理科学科上江測達也
1.はじめに
情報処理センターへの高速な計算機の導入の要望は、以前より、数値計算を重要な研究手段としてい
る教官、学生達によって、頻繁に寄せられていた。そこで、それに応えるため、平成 9年度の機種更新
2月
に際して、高速計算機の導入を目指すことがセンターの諸会議で合意された。そして、平成 6年 1
7日に行なわれた、センター主催の導入説明会において4計算機環境の現状をレビューし、高速計算機
の導入の必要性を報告した。その内容は、センターにある既存の計算機とパソコンの科学計算のベンチ
マークテストの結果についての比較を行なった結果、すでに、汎用計算機はパソコンと同程度の速さで
あり、数値計算に利用されていた数台のワークステーションも、せいぜいパソコンの数倍の速さでしか
ないというものであった。
その時点では、 300MFLOPS以上のコンビュータはスーパーコンピュータと定義されており、スー
ノマーコンビュータ導入に際しては、国外のメーカーにも、入札の機会を与える必要があった。しかしな
がら、計算機の演算速度は、日進月歩で高速化しており、事実上、上記の規制は、ほとんど無意味となっ
ていた。すなわち、ワークステーションの演算速度が、 lOOMFLOPS に達する状況であったため、ワー
クステーションのクラスターによって、 300MFLOPS は、容易に達成することが可能になっていたた
めである。 一方、スーパーコンピュータの定義そのものの見直しが行なわれるようであるとの噂も流
れていたため、仕様書作成の準備段階で、 300MFLOPS程度のワークステーションクラスターの導入
のみならず、 GFLOPS レベルの超高速計算機の導入案も検討していた。それと同時に、汎用計算機に
代わる、数値計算、文書作成、簡単な作図等を遂行する多目的ワークステーションの導入も計画した。
噂どおりに、スーパーコンビュータの定義の見直しが行なわれたのが、仕様書作成期限の数カ月前で
あったため、計算機環境に配分された予算を鑑みて、仕様書には、 2GFLOPS程度のベクトル計算機
を超高速計算機として要求し、また、汎用科学計算機として 3台の高速計算機を要求した。その結果導
u
j
i
t
s
u のベクトル計算機 (VX-1 (2.2GFLOPS))であり、
入されたのが、 F
3台のワークステー
u
n
4
2
0H 150MP(hyperSPARC(150MHz)) 1台
、 S
u
n
4
2
0H 1
5
0 2台)である。余
ション( S
談であるが、ホスト名の命名のために、ギリシャ神話の本 I)を購入し、ベクトル計算機には、「時」を
hronosを
、 3台の多目的ワークステーションには、「天、地、海」に関連する、 peg
a
su
s、
意味する c
g
a
i
a、t
r
i
t
o
nなる h
o
s
tnameを割り当てた。更に、ある事情によって、もう 1台数値計算用のワーク
ステーション( S
u
n
7
3
0
0U (
u
l
t
r
a
S
PARC))が導入されたため、機種に因んで、 uranosと命名した。
hronosの稼働率は、想像もしなかったことであるが、 9
0ノマ一セントを優に越えており、ま
現在、 c
た
、 4台の多目的ワークステーションの稼働率も極めて高い。この事実は、このような高速計算機が如
何に必要であったかの証であろう。
このようにして導入された計算機群ではあるが、必ずしも全ての利用者に、利用法などの情報が行き
2
渡っているというわけでもないようである。これまでに、ベクトル計算機については使用説明とベクト
ル化のプログラム講習会、 f
o
r
t
r
a
n9
0や workbenchについては講習会等を、各々 2回程度行なってい
る。しかし、参加者が 5∼2
0人程度と比較的少人数であり、また、その回数が少なかったことも、情
報が浸透していない理由のひとつにあげられるだろう。
そこで、本稿では、利用者への普及を図るべく、ベクトル計算機や多目的ワークステーションによる
科学計算の方法を簡単に説明しようと思う。筆者としては、これらの機器でできることを知ってもらい、
少なくとも、もっとも基本的なことは実行できる程度の情報は提供したいと考えている。しかしながら、
完壁を期すための時間も知識も不足しているので、多々、不備な点があると思われるが、悪しからず御
了承いただきたい。
0などのソフトウェアーの簡単なマニュアルは、富士
なお、ベクトル計算機の使用法や、 Fortran9
通の SEの方々の御協力を得て作成し、情報処理センターに備えてある 2)-3)0 また、詳しい説明書等4ー)5)
もあるので、不明な点はそれらを参照していただきたい。
2
. ベクトル計算機及び多目的ワークステーションを使用するのに必要な設定
0
,c
,c++及びそれらの言語で書かれたプログラムのデ
多目的ワークステーションには、 Fortran9
ノてッガ− workbench,多国語対応エディター muleなどが、インストールされている。これらのソフ
トウェアーの使用や、ベクトル計算機の使用には、環境設定ファイルにパス等を指定する必要がある。
平成 9年度 6月以降のユーザーについては、アカウントをもらった時点で、パスが設定されているはず
であるが、それ以前のユーザーについては、設定を行なう必要があるの, 6) 0 センターで用意した標準環
境のコピーをお勧めするが、自分で作成した環境を継続して利用したいユーザーは、次の設定を行なう
必要がある。 .
c
s
h
r
cに、以下の下線部を追加する。
f
r
t
,m
u
l
e
,v
x
,workbenchのパス
s
e
tpath =
(
Ishin:/usr/shin: - :I
opt/FSUNf90/bin:/u
s
r
/
l
o
c
a
l
/m
u
l
e
/
b
i
n
:
/usr/lang/bin
:
/usr
I
l
o
c
a
l
/s
h
e
l
l)
s
e
t
e
n
vLD_LIBRARY
_PATHI
opt/FSUNf90/lib:/usr/openw
i
n
/
l
i
b
:
/u
s
r
/
l
a
n
g
/
l
i
b
:
/usr/u
x
p
l
i
b
:
/
u
s
r
/
l
i
b
s
e
t
e
n
vMANPATHI
usr/man:/opt/SUNWspro/man:-:
/opt/FSUNf90/man
ここで、/ u
s
r
/
l
i
b は、必ず一番最後に書く。また、次の 1行を追加する。
s
e
t
e
n
vWBWINKIND 1
以下は、標準環境をコピーする方法である o z
e
u
sにあるディレクトリー
I
e
t
c
/s
k
e
lの下のドット
ファイルを、次の方法で全てコピーする。ただし、この場合には、各自が作った環境が変更される。以
下でゴシック体の部分は、ユーザーによる入力であり、右側の{}内の文章は、説明文である。
t
e
l
n
e
tz
e
u
s
{z
e
u
s にログインする。}
mkdir backup-
{ディレクトリー backupを{乍る。}
mv
{現在あるドットファイルをディレクトリー backupにパックアップする。}
.本
backup/
3
cpI
e
t
c
/s
k
e
l/.本./
{標準のドットファイルを、ホームディレクトリーにコピーする。}
source .
c
s
h
r
c
{新しい環境を反映させる。}
3
. 高速計算機で f
o
r
t
r
a
n
9
0 を使用する
(
a
)f
o
r
t
r
a
n
9
0の実行方法
r
tコマンドを使用する。
翻訳結合処理には、 f
例
f
r
tf
i
l
e
n
a
m
eob
.
o
u
tl
f
s
s
l
2
ここで、 f
i
l
e
n
a
m
eは、プログラム名で、拡張子は必ず .
fである。− l
f
s
s
l
2 は、オプションで、科学
I
Iを利用する時に付け加える。実行ファイル名を指定するコマン
用サブルーチンライブラリー SSL
.
o
u
tが指定されている。その結果、カレントディレクトリーに b
.
o
u
t
ドが、− 0 で、この例では、 b
が作成される 0 ・o以下を省略すると、カレントディレクトリーに a
.
o
u
tが作成される。フォアグラ
ウンドで実行するには、
b
.
o
u
t
とタイプする。データの読み書きは、標準出力の場合は、
>filename2
b
.
o
u
t
と入力する。すると、 w
r
i
t
e(
6*)などで書いた出力が、 f
i
l
e
n
a
m
e
2 に出力される。
この場合、計算結果が画面に表示され、その画面は計算終了まで使用できない。但し、コントロール
キーと zキーを同時に押すことによって、計算を中断することができる。
g を入力する。次に述べるパックグラウンドジョブにしたい時には、ここで、
再度続行する時には、 f
bgを入力する O
(
b)パックグラウンドで計算を実行する
パックグラウンドで実行するには、最後に&をつける。
>
b
.
o
u
t f
i
l
e
n
a
m
e
2&
この場合は、画面で別の仕事を遂行できる O
(
c)パックグラウンドジョブの実行状況を見る
パックグラウンドジョブの実行状況を見るには、 p
s と入力する。但し、一旦、 l
o
g
o
u
t してしまう
と、再度 l
o
g
i
n した時、 ps では見えない。その場合でも、計算が終了していない限り、バックグラ
ウンドで run していることに注意すること。その際に、 run しているか否かを見るには、 ps e
fと
入力する。
4
p
s−・e
f (あるいは、 p
se
f Imore)
すると、次のようなメッセージが表示される。
UID
PID PPID C
STIMETTY
ぷよ
&
ム
にu
et
u
−
o
s a−
P
ハU
ハV 4
sp49065 24624 .
6
4
7
1 80 13・:15:38pts/4
ハυnv
sp49065 24626 6471 9 13:15:53pts/4
TIMECOMO
ここで、 2
4
6
2
4は
、 a
.
o
u
tの PID(プロセス ID)である。
(
d)ジョブをキャンセルする
k
i
l
l92
4
6
2
4
を入力する。ここで、 2
4
6
2
4は
、 PID。
4
. 高速計算機で cを使用する
e
eであり、使用法は、 f
o
r
t
r
a
n
9
0 の場合とほとんど同様である。
翻訳結合処理コマンドは、 f
例 f
e
ef
i
l
e
n
a
m
eob
.
o
u
tl
f
s
s
l
2
f
i
l
e
n
a
m
e は、プログラム名で、拡張子は必ず .
eである。」f
s
s
l
2 は、オプションで、科学用サブルー
I
Iを利用する時に付け加える。
チンライブラリー SSL
5
. 高速計算機で、デバッガ− workbench を使用する
f
o
r
t
r
a
n
9
0、c及び e++でかかれたプログラムのデバッガーが workbeneh である。未定義変数
n
d
e
f
) や、サブルーチンの引数の型が一致しているか否か( argehk)、配列の大きさを越え
の検出( u
て使用していないか( subehk)等のチェックが行なえる O また、プログラムのどの部分にどれだけ時
amplerで得ることができる。このソフトによって、このような情報
間がかかっているか等の情報を s
のグラフ化やグラフの印刷等も可能である O 詳しくは、文献 2)を参照のこと。
6
. ベクトル計算機
vxで数値計算を行なう
vxは、最大速度、
2.2GFLOPSの高速ベクトル計算機で、ある。ベクトル化には、いろいろノウハウ
があり、ベクトル化がうまく行けば計算の高速化が可能である O 但し、プログラムによっては、高速計
算機より遅くなる場合さえある。一例をあげると、あるプログラムをベクトル化を考慮せずに、
vxで
a
i
aの 2倍程度の時間がかかってしまったが、インライン展開というオプション
計算させたところ、 g
a
i
aの 2
0分の lの時間ですんだ。(インライン展開については、後
を使用したところ、今度は逆に、 g
5
出。詳しくは、文献 4)を参照のこと。)このようなオプションを付け加えて計算してみることをお勧
めする。
v
xには、
muleなどの e
d
i
t
o
rは入っていないが、ファイルはセンター内のワークステーションと
共有しているので、プログラムファイルの編集は、他のワークステーションで行ない、実行のみを
chronosで行なうようにするのが便利である。
(
a
) VXで計算する方法
ここでは、
v
xで計算する方法を、簡単な例をあげて説明する。まず、
t
e
l
n
e
tchronos
と入力して、 chronos に入る。プログラムのあるディレクトリーに入って、次のコマンドを入力す
ることにより、コンパイルを行なう。
f
r
t
v
cs
q sampv.fcosampv.out {プログラム sampv.f を翻訳・結合する。ジョブキューは
sq}
実行ファイルは、カレントディレクトリーにできる。実行状況は、
q
s
t
a
ts
q
によって、見ることができる。次項参照。終了すると、 f
r
t
v
c
.
1
.
e
1
3
4
7
*
,f
r
t
v
c
.
1
.
0
1
3
4
7*の形式のファ
イルができる。 f
r
t
v
c
.
1
.
e
1
3
4
7忠に、ベクトル化のメッセージが入っている。
プログラムを実行するには、次のように入力する O
f
r
t
g
ovpa sampv.out
{sampv.outをジョブクラス vpaで実行する。}
入出力ファイルを使用する場合や、他のオプションの種類や指定方法など、より詳しい情報は、文献
4)を参照のこと。
その他、シェルファイノレを利用する方法もある O
例えば、ディレクトリ
/home/s
p
/s
p
4
/s
p
4
9
0
6
5
/
vx下のファイル s
a
m
p
l
e
.
fをコンパイルするため
に、次のようなファイル comp.shを作成する。
comp.sh の中身。
s
e
t”X
cd/home/sp/sp4/sp49065/vx
/
u
s
r
/
l
a
n
g
/
b
i
n
/
f
r
ts
a
m
p
l
e
.
f-Ne-PodtZc
o
m
p
.
l
i
s
t osample.out
白
2行目はプログラムの入っているディレクトリヘ移動するコマンドである。
最終行の、− Ne は、インライン展開の指定を、− Zc
o
m
p
.
l
i
s
t は、コンパイル結果の出力ファイル名
6
をc
o
m
p
.
l
i
s
t と指定することを、− os
a
m
p
l
e
.
o
u
t は実行ファイル名を s
a
m
p
l
e
.
o
u
t とすることを
意味する。コンパイルは、次のように行なう。
qsubqs
q comp.sh
次に、計算時間もみられるようにするために、実行用のファイル g
o
.
s
hを作成する O
g
o
.
s
hの中身。
s
e
t
田
X
cd/home/s
p
/s
p
4
/s
p
4
9
0
6
5
/
v
x
timexs
a
m
p
l
e
.
o
u
t
ここで、 t
imex コマンドは、計算時間の測定を行なうことを意味する。実行は、
qsubq vpa g
o
.
s
h
で行なう。すると、 g
o
.
0
4
1
7
2
6 のような、ジョブ番号が後ろについたファイルが作成され、そのファ
イルを開くと、計算結果の後に、実行時間が以下のようにでてくる。
r
e
a
l4
:
0
5
:
3
0
.
9
4
{ジョブを投入してから終了するまでに実際にかかった時間}
u
s
e
r1
:1
7:
5
0
.
2
3
{プログラム実行に要した時間}
s
y
s 0
.
5
3
{システムが要した時間}
v
u
u
s
e
r1
:
1
6
:
5
1
.
3
9
{ベクトル計算において、ユーザーが要した時間}
v
u
s
y
s 0
.
0
0
{ベクトル計算において、システムが要した時間}
v
u
u
s
e
r
u
s
e
r がベクトル化率となる。
(
b)プログラムのどの部分にどれくらい時聞がかかっているかを見る
コマンド f
jsampを用いる。そのために、次のようなファイル g
o
l
.
s
hを作成する。
g
o
l
.
s
h の中身
s
e
tx
cd/home/s
p
/s
p
4
/s
p
4
9
0
6
5
/
vx
F
J
S
A
M
P
=
f
i
l
e
:
s
a
m
p
.
d
a
t
,
i
n
t
e
r
v
a
l
:
l
O
,
t
y
p
e
:
v
t
i
m
e
e
x
p
o
r
tFJSAMP
<input.dat>output.dat
timexs
a
m
p
l
e
.
o
u
t
/
u
s
r
/
l
a
n
g
/
b
i
n
/
f
j
s
a
m
psample.out
これを実行すると、 g
o
l
.
0
4
1
7
2
8 のようなファイルに、サブ、ルーチン毎の実行時間等が出力される。
7
(
c)実行状況をみる
ジョブの実行状況を見るには、
q
s
t
a
tvpa
と入力する。すると、 vpaへの投入ジョブの状況が表示される。
q
s
t
a
ta
田
と入力すると、実行中のジョブ、待機中のジョブ等が、キュー毎に表示される。
(
d)ジョブをキャンセルする
実行中のジョブのキャンセルは、次のようにする。
q
d
e
lk ジョブ番号
{自分の投入ジョブ番号が 1351.chronos の場合は、ジョブ番号は 1
3
5
1
0q
s
t
a
t等で確かめる。}
待ち状態のジョブのキャンセルは、次のようにする。
q
d
e
l ジョブ番号
(
e)ペクトライズの仕方
(
b
)を実行後、最も時間のかかっているサフやルーチンを見つけ、そこをいかに高速にするかを考える。
まずやってみることは、 DOループのもっとも内側の繰り返し回数をできるだけ多くすることである O
また、比較的有効なオプションとしては、インライン展開と、配列中の配列(例 A(K(I)))の強制
的ベクトライズとがある。インライン展開とは、サフソレーチンや関数を引用箇所に全部かいてしまう
r
tのオプションで\,− Ne を指定する。 20行以内なら有効である。また、配
操作に対応しており、 f
列中の配列の強制的ベクトライズは、プログラム中の該当箇所に
!OCL NOVREC
を挿入する。但し、例えば、上の例で、 K(I)=K(J)のように K の値に重複があると、結果が保証
されないので注意を要する。
詳しくは、文献 4)を参照のこと。
(
f)キューの種類
現在、キューは、 s
q
,v
p
a
,v
p
b
,vpc の 4種類である。このうち、 sq は、コンパイル用で、あとの
3つが、実行用である o s
q
,v
p
a
,v
p
b
,vpc の順に、制限時間は、 1時間、 2
0分
、 2時間、 8時間
である。 CPU配分率は、 v
p
a
,v
p
b
, vpc が、各々、 40%、40%、20% である。例えば、 VXのCPU
時間 1
0
0分の内、 v
p
a
,v
p
b
, vpc の各キュー全体に、 40分
、 40分、 2
0分 の CPU時間が割り当て
な
の
で
:
'
,
られる。スカラープロセッサーのキューは sq1つ
CPU配分率は 1
0
0%である。 1ユーザー
あたりの最大投入ジョブ数は、 2、 2、 2、 1 である。次表参照。
8
表各ジョブキューの設定状況
sq
vpa
VPb
VPC
50
50
49
48
5
5
3
3
100%
40%
40%
20%
60分
20分
120分
480分
48MB/JOB
36MB/JOB
178MB/JOB
2
2
2
スカラー
全日
注
)
ベク
全日
624MB/JOB
トル
全日
全日
sqクラスは、主にコンパイルで使用する。
また、ベクトルクラス( vPa, vPb, vpc)は、コンパイルでは使用しないで下さい。
(
g
)ユーザーの心得
できるだけ多くのユーザーが、快適に利用するためには、ユーザーどうしの協力が不可欠である O 上
に述べたように、 1ユーザーあたりの最大投入ジョブ数を決めてあるが、 4つのキューを合計した、
全投入ジョブ数は、 1ユーザーあたり、 2としているので、御協力いただきたい。
7
. おわりに
駆け足で紹介してきたが、筆者の知らない機能や、便利な方法も多々あると思われる。読者の御指摘
を乞う次第である。
また、多国語対応のエディタ一 m
ule、数式処理ソフト maple、描画ソフト gnup
l
o
t、文書作成ソフ
トLATEX等も利用でき、それらのいくつかについてはセンター内に簡単なマニュアルがあるので、
それらを参照していただきたい。
はじめに述べたように、現今の計算機の高速化は著しいものがあり、特に、パソコンの演算速度の高
速化には目を見張るものがある。
v
xはさておき、ここで紹介した高速計算機の演算速度は、既に 50
万円程度のパソコンと同程度となっている。情報処理センターの科学計算用計算機の構成は、将来、超
高速計算機とパソコンということになるのかもしれない。
本稿で引用した、 For a
n90 C のマニユアル 2
、
)
vxのマニユアル
3)及び標準環境フアイルは、
富士通株式会社の久米川俊英氏の御尽力により完成した O ここで、久米川氏に感謝の意を表したい。
文献
1
)「ギリシャ神話」、呉茂一著、新潮社
2
)For an90S
c
i
e
n
t
i
f
i
cPackage利用の手引( F
、
ortran/C言語) (第 1
.
0版)、奈良女子大学情報
処理センター
3)ベクトル計算機 v
x-1 バッチリクエスト用シェル利用の手引(第 1
.1版)、奈良女子大学情報処
理センタ−
4
)UXP/VVPFortran フ。ログラミング
FUJITSU
.0版)
5
)VPFortran プログラミング補足資料、(第 1
1
9
9
6年 6月、 富士通株式会社
6)情報処理センター速報 V
o
l
.
1
0N
o
.
61
9
9
7
.
5
.
2
9
9