{{category Perl}} *Parallel::MPI::Simpleによる並列処理 Parallel::MPI::SimpleモジュールからMPIを用いることでPerlスクリプトをPCクラスタ上で並列に走らせることができる。 *コード例 use strict; use Parallel::MPI::Simple; MPI_Init(); my $rank = MPI_Comm_rank(MPI_COMM_WORLD); if ($rank == 0) { my @work = 1..100; MPI_Bcast(\@work, 0, MPI_COMM_WORLD); &echo(\@work, $rank); } else { my $work = MPI_Bcast(undef, 0, MPI_COMM_WORLD); &echo($work, $rank); } MPI_Finalize(); sub echo { my $work = shift; my $rank = shift; foreach (@{$work}) { if (mkdir(".lock_$_", 0755)) { unless (-e "echo_$_") { system("echo $rank > echo_$_"); sleep(1); } rmdir(".lock_$_"); } } } 起動するには以下のコマンドを実行する。 mpirun -np 並列数 perl スクリプトファイル名 この例では、並列プロセスのそれぞれに同一の配列を与えて処理をさせるが、処理中or処理済みであればスキップする。4CPUマシンで4並列で走らせた場合、25秒程度で終わるが、非並列処理の場合は100秒以上かかるはずである。