分散言語処理系 DKLIC を用いた 分散演算マネージャdcalc の設計と実装 Design and Implementation of a Distributed Calculation Manager dcalc using Distributed System DKLIC G99P098-5 中島 求 NAKAJIMA Motomu 上田和紀研究室 指導:上田 和紀 教授 UEDA Laboratory Prof. UEDA Kazunori 概要:分散処理を記述するには、プロセス群の分散、通信プロトコルの設計と実装、同期などの記述が不可欠である。 しかし、手続き型言語を用いて、これらの処理を記述するのは非常に面倒である。 理想的な分散処理環境とは、単体の計算機上で実行するように設計されたプログラムを、無改造にて、実行出来る事 であり、また、単体の計算機上で動作させるのと同じインターフェースを与える事である。 そこで、本研究では分散演算マネージャ dcalc を提案する。dcalc は、仮想的な標準入出力、遠隔ノードの検索、遠 隔ノード上での実行機能を提供する。 本研究では、手続き型言語によって書かれた演算プログラムに対する、分散処理の追加記述を最小限に抑えつつ、分散 演算を可能にする事を目指した。これを実現するために、分散処理特有の処理を dcalc によって提供し、ユーザ (プ ログラマ) は演算部分の記述のみに専念できる環境を目指した。 その結果、ある一定の制限付きながら、単体の計算機での実行を念頭にして手続き型言語で書かれたプログラムを、分 散処理の追加記述無しで分散実行する事が出来た。 キーワード: keywords: 1 KL1、KLIC 処理系、分散言語処理系 DKLIC、分散処理 KL1, KLIC, DKLIC, Distributed Computing 背景と目的 一方のプロセスで具体化するともう一方のプロセ スでもその値は見えるからである。 現在、Java や C 言語に代表される手続き型言語を 用いて、分散処理を記述するのは非常に面倒であり、 3 かつプログラマに分散処理に関する高度の知識を要 求する。従って、ある演算を分散化させたいと思う 分散言語処理系 DKLIC DKLIC は、KLIC に分散拡張モジュールを追加し た KL1 分散処理系である。 DKLIC は以下の機能を提供する: プログラマは、その演算の処理よりも分散化させた 事によって生ずる処理の記述に多くの労力を割かれ てしまう。本研究では、既に手続き型言語によって • ネーミングサービス 書かれた演算プログラムに対する、分散処理の追加 記述を最小限に抑えつつ、分散演算を可能にする事 • 分散論理変数 を目指し、分散演算マネージャdcalc を提案する。 • 遠隔述語呼出し 2 DKLIC を用いると、例えば通信部分の同期や位 KL1 とその処理系 KLIC 置透過性を持たせる事など、分散処理特有の記述の 負担が軽減される。 dcalc は、KLIC で記述した。KL1 言語は、並行 論理型言語である。KL1 では、変数を用いたプロセ ス (ゴール) 間通信の表現が容易である。 4 KL1 変数は、プロセス (ゴール) 間での共有変数 として現れると、それらのプロセス間通信の表現と 分散演算マネージャdcalc 理想的な分散処理環境を提供するための手段とし なっている。なぜならば、KL1 変数は単一代入変数 て、分散演算マネージャdcalc を開発した。 dcalc は、以下の機能を備える: であるため、 1 れぞれ RSA 暗号化し、1 つのファイルに改行コード • 標準入出力 で区切りまとめた入力ファイルを用いた。RSA 暗号 • ネーミングサービスを用いた、遠隔ノードの検索 化には、同コンテストにてサンプルとして配布され • 遠隔ノード上での実行 • 台数による入力データファイル分割機能 dcalc を用いて分散演算を実行すると、遠隔ノー ドが検索され、それらの上で演算が実行される。遠隔 ノード上の標準出力に出力された演算結果は、ユー ザが使用している計算機の標準出力にまとめられて 出力される。 dcalc は、DKILC 動作環境を要求する。これ は、KLIC-3.003-extio-shared 以上、C コンパイラ、 DKLIC モジュール、及び UNIX 環境を要求する。 標準入出力を提供する部分は、KLIC のインライ ン C コード機能を用い、popen システムコールを呼 出す事によって実装した。 ネーミングサービスは、計算機 nantais が dcalc を起動している計算機の表を管理し、実際の計算機 環境の情報は各計算機上で起動しているネームサー バが管理する。 遠隔ノード上で実行されるのは、遠隔ノード上に ある実行ファイルである。実行ファイルは転送され ない。 入力データファイルのファイル名を与えると、 dcalc はそのファイルを実行台数比で分割し、各ノー ドでは分割されたデータを用いて演算が実行される。 た、RSA 暗号化プログラム rsa.c を用いた。 ¶ 単体計算機上で asr.c を実行 ³ $./asr 24 024ab5 69c101 < 7-encrypted.txt > 7-decoded.txt µ ¶ dcalc を用いて asr.c を実行 ´ ³ $./dcalc-client "asr 24 024ab5 69c101" "7-encrypted.txt" > 7-decoded.txt µ ´ 表 1: asr.c を用いて 7 個の 24 ビット RSA 暗号文の 解読に要した時間 6 分散実行 単体実行 使用した計算機 soleil,rigotte,brie rigotte 1 回目 2 回目 3 回目 4 回目 5 回目 16.1 秒 16.2 秒 16.0 秒 16.0 秒 16.0 秒 39.6 秒 40.1 秒 39.8 秒 40.1 秒 40.6 秒 平均値 16.1 秒 40.0 秒 まとめと今後の課題 このように、単体の計算機上で動くプログラムを 5 ほぼそのまま分散実行する事が可能である。しかし、 考察 現在の実装ではさまざまな制限がある。 現状ではファイル転送機能が実装されていないの 山梨大学ソフトウェアコンテスト 2000 の暗号解読 部門 においてサンプルとして配布された、RSA 解 で、評価時には NFS 環境下にて代用した。ファイル 読プログラム asr.c を dcalc を用いて分散環境上に 転送機能が実装されれば、データファイルや実行ファ て実行し、単体計算機での実行と比較した。asr.c は イルの移送が非 NFS 環境下においても実現出来る。 C 言語で記述された、暗号鍵 (公開鍵) より暗号文を 力まかせ方により解読するプログラムである。単体 また、標準入出力の制限も多く、これらが解決す れば動作可能なプログラムが大幅に増加すると思わ 計算機上での実行のみを想定している。なお、dcalc れる。現在の制限は以下の通りである: 1 を用いて動かすためには、入力と出力部分を 2 行改 • 標準入力は最大 9 個の引数のみを提供し、 造する必要があった。 • 標準出力は大きなデータ (15MB 超) を出力する 平文”sage”, ”age”, ”mage”, ”hoge”, ”foo”, ”bar”, と異常終了するという ”fuga” を 24 ビット暗号鍵 024ab5,69c101 によりそ 1 http://www.csci.yamanashi.ac.jp/~mino/crypto/ index.html • 標準エラー出力は提供しない。 2
© Copyright 2024 Paperzz