[日本 OR 学会

第 7 回事例研提奨励賞

ソフトウェア部門受賞作品]

行列演算用言語 LAMAX-S
一一数学ソフトウェア用の雷語に向けて一一八巻直一，内田智史，本郷茂11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
illlllllllllllllllllll
スとして保持し，ユーザーの目的を理解してインターフ1. はじめにェースを実現する機構が，言語処理系に必要である.ま1980年代に，スーパーコンビュータが出現したことにた，過去の社会的資産や技術計算のプログラミング文化

よって，科学技術計算の分野は急に前途が開けた感があは，ほとんどが FORTRAN を中心としているので，る.超大容量のメモリー空間と，超高速計算によって，新しい言語は FORTRAN とト分な緩和性が保たれてこれまで事実上不可能であった問題の多くが現実に解けいなければならない.

るようになったのである.これからも，スーパーコンピFORTRAN には，ある程度の数学的表現能力があュータの発達は進むであろうし，それにともなって数値り，かつ社会的資産も豊富である.しかしながら，その数学的表現能力はまだ不十分である. LAMAX-S の言計算技術も大いに進展するに違いない.
ところが，スーパーコンビュータの能力を十分に引き語仕様は，上記の理由を動機としてIf' FORTRAN+ 行出すためには，個々のハードウェア知識がどうしても必列表現』とされた.そして，処理系は FORTRAN ソー要となる.しかも，個々のスーパーコンビュータは相当スコードを生成するプリプロセッサとして実現された.に異なる構造をもっているので，あるコンビュー究で十LAMAX-S 以外にも，行列型の変数を扱うことので分な性能を示すプログラムが，他のコンピュータ上ではきる言語はいくつか存在するが，あまり普及していない期待ほどではないことがむしろ普通である.のが現状である.そのことには

2 つの理由が挙げられ上のような背景から，われわれは新しい言語を提案する.第 l は，それらの言語の多くが， FORTRAN に代LAMAX‑S[1]であり，その表される技術計算の文化とうまく融合できていないことるにいたった.それが，設計のコンセプトは，以下のとおりである.

である.行列表現が可能な言語のほとんどは，本質的にA. 数学的表現が素直にできる言語を実現する.

FORTRAN とは異質な言語であり， FORTRAN の資B.

個々のスーパーコンピュータのハードウェア知識産の継承が困難なばかりでなく，プログラミング文化がを活かして，ユーザーが意図する性能を引き出す能異なることが大きな問題となるのである.第 2 はもっと力を実現する.

重要だと思われるが，言語仕様に行列型変数を導入した

E

C. 有用な数学ライブラリ(Ll NP ACK 2]など)を有効に活かす能力を実現する.

だけでは，数学的ソフトウェアの表現機能は満たされないということである.数学的ソフトウェアに適応するた

D. 過去の社会的資産を継承するとともに，技術計算のプログラミング文化を継承する.
数学的表現能力を期待するならば，どうしても新しい言語仕様を設計しなければならない.ハードウェアや数学ライブラリを有効にしかも自動的に利用するためには，個々のコンビュータやライブラリの特性を知識ベーめ，とりわけ数値計算ソフトウェアに適応するためには，以下の機能が重要な要素となる.
A. 行列の構造(対称，バンドなど)に対応する.
B.

ベクトル化などの最適化を，自動的に行なう.このとき，各機種の特性を自動的に考慮する.

C. 数学ライブラリを自動的に有効利用する.このとき，各種ライブラリの特性とインタフェースを自動やまき

なおかず側システム計画研究所

干 150 渋谷区桜丘町 2-9

うちだほんごうカスヤピル

きとし神奈川大学工学部

しげる

1992 年 12 月号

的に考慮する.
上記のような機能が供給されることによって，はじめて本格的な数学プログラムに対応することが可能になる

専修大学経営学部のであって，単に行列型変数が扱えるだけでは，小さな© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

(45)611実験的プログラムには適用できるが，実用的なソフトウェアの構築は難しい.まして，個々のスーパーコンピュータの性能を引き出すような工夫は困難であろう.
ハードウェアとライブラリの知費量

LAMAX-S の計画は，この点の打開をめざしたものである.なお，本稿では， LAMAX-S の基本的な機能についての概要を述べるにとどまるが，さらに深い内容

ハードウェア機能とライブラリを i舌かした
FORTRAN ソースコードについては別に発表する機会をもちたい.

2. 言語仕様と機能
LAMAX-S の文法は，

図 1

FORTRAN の上に行列に関する豊富な表現能力を付加したものである .LAMAX.Sの処理系(プリプロセツサ)は，

LAMAX-S のソース

LAMAX-S の処理概念

わけではなしその意味で現パージョンは評価用と位置づけられるものと認識している.

2.
1 行列型変数の導入

コードを解析し，オブジェクトとして FORTRAN77

LAMAX-S の最大の特徴は，行列を明示的に取り扱のソースコードを生成する.以下処理系をコンパイラとうことができる点である.ここでは，言語仕様の上で行呼ぶ.

列がどのように定義され，どのように扱われるかの概要

LAMAX-S コンパイラの特徴の l つは，構文解析機を示す.

能の中に FORTRAN77 を完全に包含することであ行列あるいはベクトルを表わす変数または定数には，る.もう 1 つの特徴は，これが本質的であるが，用いる型と構造および数学的性質が付随する.型は，もともとコンビュータに対応した最適化を施したソースコードをの FORTRAN77 で定義されている型である.構造と自動生成することと，用いる数学ライブラリと自動的には，対角行列，パンド行列インターフェースをとることである.そのためには，各置に関する構造を意味する.数学的性質は，対称性，交種のコンピュータの特性を知識ベースとして保持するこ代性，正定値性などの数学的意味づけを表わす.また，と，および各種の数学ライブラリの使い方の知識ベース

スパース行列はその数値計算上の取扱いが密行列と異な3 角行列などの，要素の配をもつことが必要となる.そのことは，最近のプログラるために，数学的性質と規定している.以下に，行列のミング思想であるリポジトリベースの活用とも合致す定義の例を示す.

る.あるいはユーザーから見ると，ライブラリ利用のた

real:matrix[3 , 5J A

めのシンタックスシュガー(より使いやすいように考慮

real:vector[6J xされた文法)と考えることも可能であるう.

real:rvector[7] y

このような考え方の，さらに重要な効用は，スーパーコンピュータ聞のソフトウェアの可搬性の実現であろう.

LAMAX-S のソースコードi 土，ハードウェアとは完全に独立しているので，ハードウェア間の可搬性の問題は解消される.

real:matrix[5 , 5 diagonalJ D
上の定義では ，ベクトノ~，

A は 3 行 5 列の行列

y は 7 次元横ベクトノ~，および D は 5 行 5 列の対角行列となる.このように，行列は自然に定義される.行列の構造には，以下，主として行列型変数の取扱いと，数学的表現のx は 6 次元の縦Ir対角，三重対角，上 3 角，下 3角，パンド』がある.数学的性質には，Ir密，スパース，記述を中心に，代表的な機能について述べる .LAMAX

対称，交代，正定値，エルミート』がある.以下に，行-S の特徴には，列宣言のいくつかの例を示す.

数学的表現の記述性の他に，メモリーの動的管理や最適アンローリング(繰り返し計算を工夫

1. real:matrix[100 , 100:loweLtr(I)J Aして実行の並列性を高める手法)の自動実現があり，数2. real:matrix[100 , 100:sparse(200) ,学的意味を利用したプログラムの最適化，数学的ソフト

symmetricJ B

ウェアの開発環境，あるいは TeX [3J(数学文書の整形

3. real:matrix[10 , 10 :skewJ C組版ソフトウェア)形式との相互変換などの研究が付随

4. complex:matrix[5 , 5 :hermitianJ D

している.これらは，本稿では害Ij愛し，他の機会にゆず

5. real:matrix[10 , 10:band(2 , 2)Jりたい.また，表記の目標が現時点て‘すべて達成された

上記の各行列は次表のように定義される.

612 (46)© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

Eオベレーションズ・リサーチ

表 2

行列の定義

は，現在実現されている機能を列挙する.行列に対する

行列|型

A
B
C
DE

実数

下 3 角(対角要素は 0)

実数

スパース(要素数 <200) ，対称実数

交代 (D'=-D)

複素数

エルミート

実数

バンド( 5 重)￨構造と数学的性質

操作には，以下のものがある.
・ i ， j 要素を示す .

A[i ,n*J• i 行を示す

A[i ，・転置を表わす

A'・部分行列を示す .

A[i:j , k:1J行から j 行

k列から l 列までの部分

行列-対角部分指定

lower_tr(l) は，下 3 角行列で (1) は対角から i 離れたところまで零となることを意味する.

対角からの変位が iAく i)の要素からなる縦ベlower
̲
tr(2)

クトノレ

ならば，対角要素と対角要素の隣の要素が 0 となる.

行列の演算式は，自然な表現をほぼそのまま用いるこband(2 ， 2) は，対角要素から上に 2 ，下に 2 の幅であることを意味する.したがって 5 重対角行列になる.上に1 ，下に 3 の幅を与えるときは，2.2とができる.以下に例を示そう.

1.

band (1， 3) とする.

動的な行列の定義

3. k=x'*Q*エ +b'*x

LAMAX-S の特徴の 1 つに，行列のダイナミックな展開がある. FORTRAN においては，配列の便宜的に行列変数とした場合，次元の大きさはあらかじめ定めておかなければならない.実行前に大きさがわからないときは，配列の領域を安全と思われる大きな値にしておく必要がある.

LAMAX-S では，動的行列の宣言をすることによって，代入の実行時に次元を動的に決定させることが可能である.動的行列の宣言は，次元の大きさをすべて*に置き換えればよく，次のように行なう.

real:matrix[*, *JA

1.は B の転置と C の積を A に代入する.

列と C の積を A に代入する.

理するために，行列用のメモリー空間を管理するライブラリをもっている.このライブラリは，動的行列のための巨大なメモリー空間を確保し，必要に応じてそのメモリーの一部を切り出して行列j に割り当てたり，不要になったメモリー領域を再利用できるように戻す機能を備えている.

LAMAX-S では，このメモリー領域の大きさ3. の右辺は2. は B の逆行2 次形式である.このように，行列の演算式は自然に表現できる.しかし，

LAMAX-S の特徴は，行列の演算が自然に表現できることに留まらず，ライブラリの積極的な利用を自動的に実現することにある.たとえば，上記例の 2. では逆行列を求めているが，用いるコンピュータの性能を十分に引き出す逆行列ライブラリが存在すれば，自動的にそれを利用することができる.
スーパーコンピュータの場合には，専用のライブラリ

動的行列に対して，次元の大きさを定数で与えた場合，静的行列と呼ぶ. LAMAX-S て‘は，動的行列を処A=B切 C2. A=B^*Cが用意されているのでそれを用いるべきである.さらにC がベクトルであれば ，=C の解なので，A は連立 1 次方程式 B*A

LU 分解のサブプログラムを用いるほうがより効率がよいだろう.

LAMAX-S は，文脈から最も適した手法を選択し，実行効率の高いプログラムを生成する.このような戦略は数学的最適化と呼ばれていて，重要な要素となっている.

(数学的最適化の機能は，現パージョンでは実現していない)を利用者が与えるようにしている.

2.
3 行列型関数の導入

3.

アルゴリズム記述能力

LAMAX-S では，行列を値として返す関数を定義す数学ソフトウェアに必要な機能の最大の要素は，アノレることができる.たとえば

real:matrix[*, *J FUNCTIONP(X)は，ρ が行列であることを表わす.行列関数は，数学ソフトウェアのためには大変便利で・ある.

2.
4 行列の演算イブラリの隠ぺいは，アルゴリズム表現にとって予想以上の効果を発簿し，われわれが当初意図したよりも記述性能は高いものが得られたと考えられる.

LAMAX-S における行列の取扱いは，行列に関して必要なすべてを実現することを目標としている.本節で1992 年 12 月号

コリズムの記述能力であろう.行列表現の導入と行列ラ

3.
1 連立 1 次方程式の解法
連立 1 i欠方程式 Ax=b の数値解法には，大きく分け© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

(47)613

れば消去法と繰り返し法の 2 つがある.ここで‘は，そのその数学アルゴリズムの記述能力の高さが，ある程度実代表的な方法であるガウスの消去法をとりあげる.なお証されたものと考えられる1 ・しかし，数学ソプトウェア

アルゴリズムの詳細とプログラムの詳細の説明は省略すのための言語としては，さらにいくつかの機能を付加しるが，なければならない.

LAMAX-S の記述性のよさはおのずと認識できるであろう.

まず第 l は，ヒューマンインターブエースの強化であ〔アルゴリズム]ガウスの消去法る.数学記号やその意味の明示的な表現が，どうしてもステップ1.以下の，ステップ 1- 1.とステップ 1-2. を必要である.たとえば TeX や，いくつかの文書ソフト

k=1 から n( 変数の次元)ー l まで行なう

ウェア，あるいはある種の数式処理システムにその萌芽

ステップト 1. A と b の h 行を Ak.k で割るが認められる.しかしそれらは，数値計算アルゴリズム

ステップト2.

A の h 行 h 列以降の下 3 角要素を 0 にの表現とは，直接つながってはし、ない.かつ，表記の意する.

味までは完全に認識できているわけではない.

ステップ 2. 上 3 角行列をもっ連立 l 次方程式を解いて解 z を得る

合，区間などの型も，ぜひ必要である.さまざまな関係

アルゴリズム中のステップト1.および 1-2. は，いわゆる行列の基本演算によって実現できる.
[LAMAX-SJ ガウスの消去法

real:matrix[*，吋

第 2 は，もっと多くの数学的要素の導入である.集演算，射影などの表現，空間の概念の導入なども重要である.

第 3 には，計算誤差の管理能力の確立である.高速自A， D

動微分 [4J などの数学ツールや，区間演算[ 5J など

real:matrix[*,*: uppectr(*)] Uの，誤差評価を積極的に取り扱う手法の研究が現在急速

real:vector[*J bに進展している.それを受けて，今後はそれらの成果を

real:vector[*J x十分に取り込みながら，数値計算における誤差管理機能cを，言語レベルで実現する必要があろう.

callminput(A)われわれは，上記目標に少しでも近づくために，これn=icol(A)からも LAMAX-S プロジェグトを中心として推進して

callminput(b)し、きたい.

C ステップ1.

[謝辞]

do 1
00 k=l , n ー 1

本研究に対して OR 学会賞をいただきましたことに，C ステップ 1- 1.

D :1.dOO:matrix[n , n:diagonalJ

深く感謝いたします.今後も，なお一層努力を重ねて，OR の発展のために少しでも寄与したいと思います.

D[k， 町 =1. /A[k ， kJ

参芳文献

c ステップト2.

D[k+1:n ， kJ=-A[k 十 1 :n , kJ/A[k , kJ
A=D ホ A

日刊工業新聞社，

b=D 事 band Stewart , G.W. , LINPACK Users' Guiｭc ステップ 2.

de , SIAM , 1
979U=A[3] Knuth , D. E. , The TeXbook , Addisonｭsolve U * エ =b

Wesley , 1
984c[4J 伊理正夫，久保田光一，高速自動微分法 (1 )(n) ,callmprint(x)

応用数理，

end

Vo l. l , No.l , pp.17-35 , 1991 , Vo l. l ,No.2 , pp.53-63 , 1
991

数学ソフトウェア用の言語に向けて[5J 久保田光一，伊理正夫，区間演算を用いた丸め誤差解析，情報処理，

LAMAX‑Sは，現在の評価パージョンにおいても，

814(48)

1991.J. , Bunch. J.R. , Moler , C.B.
[2J Dongarra , J

100continue

4.

[1J ASNOP 研究会，非線形最適化プログラミング，

Vo1.31 , No.l , pp.1212-1219 ,1990© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

オペレーションズ・リサーチ