2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Easy-ISLispにおける分散並列(1)

Last updated at Posted at 2024-06-25

分散並列Lisp 計算実験

Easy-ISLispはver5.0に向かって分散並列の機能を入れる予定です。ver4.20においてTCP/IP通信により親Lispと子Lispマシンとが通信できる機能を追加しました。

基本機能

(dp-create x1 x2 ... xn) 引数として子機のIPアドレスを与えます。

(dp-close) 子機にネットワークモードを終了を指示します。

(dp-let forms body) let構文を分散並列で実行します。

(eisl-test ch sexp) チャンネルchの子機にS式、sexpを送信します。計算実験をするための暫定的な機能です。

マシン

3台のパソコンをLAN接続して使います。

dp1.png

計算実験

フィボナッチ数を並列で計算させます。子機には予めフィボナッチ数を計算するプログラムをコンパイルしておきます。そして-nオプションによりネットワークモードで起動して待機させておきます。

親機においてdp-create構文を使って子機と接続します。eisl-testを使ってコンパイル済みのフィボナッチ数計算プログラムをロードしておきます。

親機においてdp-letを使った並列フィボナッチ数計算のプログラムをロードします。

bandicam 2024-06-25 16-42-37-911.jpg

さあ、計算実験開始です。

bandicam 2024-06-25 15-32-18-310.jpg

bandicam 2024-06-25 15-34-21-052.jpg

どうやら成功のようです。TCP/IPによるレイテンシーはほとんどないようです。よさそうです。

ネットワークモードで動さいしている子Lispの様子です。

bandicam 2024-06-26 07-33-00-380.jpg

改良

次の機能の追加を予定しています。

〇子機がバグで停止しても再起動、親機との通信を回復させる。

〇親機から子機へFTPによりファイルを転送する機能

〇親機から子機に一斉にコンパイル指示、ロード指示を出す機能

マルチプロセスとの併用

子機はそれぞれマルチコア、マルチプロセスで動作可能ですから、それらをフル活用すれば数台のパソコンで18コアマシンとして計算できるはずです。並列計算の可能性を追求したいと思っています。

実装はgithubにおいてあります。OSSです。自由にお使いください。
https://github.com/sasagawa888/eisl

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?