- 著者
-
外崎 由里子
大野 和彦
中島 浩
- 出版者
- 一般社団法人情報処理学会
- 雑誌
- 情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
- 巻号頁・発行日
- vol.43, no.3, pp.82-82, 2002-03-15
PCクラスタやデュアルCPUマシンなどの普及により近い将来,研究者だけでなく一般のエンドユーザが並列環境を利用できるのが当たり前になると予想される.逐次計算機上では,Cなどの高性能なコンパイラ型言語処理系とともに,Perlなどの手軽なスクリプト言語処理系が使用されてきた.並列計算機上では前者に対してHPC++などが開発されているが,後者に相当するものの研究は進んでいない.そこで我々は,エンドユーザが容易に並列計算機資源を有効利用できる環境を実現するため,並列性を簡易に記述できるようにPerlを拡張した,並列スクリプト言語(Perl)+の設計・開発を行っている.(Perl)+では指定した計算機を並列環境に追加し,RPCにより任意のサブルーチンを実行することができる.その返り値は遅延評価されるため,ユーザは複数のサブルーチン呼び出しを容易に並列タスクとして実行できる.また,並列タスク間では通信用に擬似的なファイルストリームを開くことができ,Perlの入出力関数を使ってデータを送受信できる.これらの機能はCで実装し,PerlとCを組み合わせるためのツールであるXSを使ってPerlモジュールPerlplus.pmを構築している.このため,ユーザは本モジュールを取り込むだけで(Perl)+の機能を利用できる.本モジュールは起動時に各ホスト上にPerlプロセスを生成し,PVMによりRPCや通信を実現している.また,各プロセス上で実行スレッド/受信スレッドを生成することで,RPCの実行と並行して受信処理を行えるようにしている.The spread of PC clusters and multi-CPU machines makes multiprocessors environment available not only for the reseachers but also for the end users.On the uniprocessor machines,we can use both effcient languages such as C and simple script languages such as Perl.On the multiprocessors,the languages of the former type such as HPC++have been developed.However,the latter type is not researched enough.Thus,we designed and implemented a parallel script language named (Perl)+as an extension of Perl.(Perl)+supports parallel task generation using RPC.Since the return value of a subroutine is lazily evaluated,the subroutine is executed in parallel to its caller.In addition to the communication through input arguments and return value,a user may open quasi file streams for the communication between parallel subroutines.Through this stream,any type of Perl data may be transferred using input/output functions of Perl.We implemented these functions in C.The user-interface is built as a Perl module Perlplus.pm,using XS for the linkage of C and Perl. This module adds speci fied hosts to the PVM virtual machines and creates Perl processes.We also introduced multi-threads for concurrent execution of user 's Perl code and PVM message receiving.