[ トップページ ]
数学・計算・情報学・プログラミング:プログラミングとコンパイラ

アセンブラまで Lisp でつくったスパコン S-810 のための Prolog

1980 年代後半に,私は当時は全盛だったベクトル型のスーパーコンピュータ (スパコン) をつかった記号処理や論理型言語 (Prolog) の処理を研究していた (「論理 / 記号 ベクトル処理」 参照). 当時,スパコンのプログラムを書くための唯一の言語は Fortran だった. しかし,Prolog プログラムの S-810 上での実行において最高性能をえるためには,それを Fortran に変換するのでは十分でなかった. そのため,Prolog 風のプログラムをいったんアセンブリ言語風のプログラムに変換し,さらに S-810 の機械語に変換するプログラムを Lisp によって記述していた. しかし,当時はそこまで論文には書かなかった.

当時,私はツールとしてよく Lisp と Prolog とをつかっていた. コンピュータとしてはメインフレーム (日立の M シリーズ) や PC-9801, PC-98LT などをつかっていた. Lisp はパソコン上でうまくうごくものがなかったので,メインフレーム上でつかっていた. それに対して Prolog は Prolog-KABA という軽量の処理系があったので,パソコン上でつかっていた.

そういうわけで,コンパイラをつくるときには Prolog はつかいにくかったので,UtiLisp をつかっていた. 現在ならプログラムは適当なプログラミング言語を選択してつかい,データは XML によって記述するというのがふつうだが,当時は XML などなかったし,Lisp ならプログラムもデータも統一的な構文で記述できるので,ぐあいがよかった. そのため,変換前の Prolog のプログラムも Prolog 本来の構文ではなく,Lisp の構文によって記述していた. このプログラムをやはり Lisp 風の構文にしたがうアセンブリ言語にコンパイルする. それを実際の S-810 の機械語に変換するわけである. この構成は実用的とはいえないが,プロトタイプをつくるには都合がよかった.

もうずいぶんまえのことなので,こまかいことはおぼえていない. また,当時使用したプログラムのおおくは磁気テープなどに保存されていて,すぐには (もしかしたら永遠に) アクセスすることができない. そのため,この項目は記憶をたよりに書いてきたが,記録などがみつかればそれをもとに上記の記述を詳細化したいとおもっている.

関連ページ:

キーワード: ベクトル処理, ベクター処理, 記号処理ベクトル化, 記号処理ベクター化, 論理型言語, ベクトル記号処理, 並列記号処理, スーパーコンピューティング, スーパー記号処理

トラックバック

このエントリーのトラックバックURL:
http://www.kanadas.com/mt/mt-tb.cgi/3414

コメントを投稿

Google でブログを検索:

メインページアーカイブページも見てください.
Creative Commons License
このブログはつぎのライセンスで保護されています. クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type