#!/usr/bin/perl #Parallel dispatch #Run data parallel jobs, with multiple CPUs per slice use strict; use IPC::Open2; use IO::Select; use IO::Handle; #I don't know how to make a proper struct in Perl, so settling for an array use constant { PROCIN => 0, PROCOUT => 1, PROCPID => 2, PROCINDEX => 3 }; #Spawn the job sub forkjob { my ($machinefileindex,$script,$piece)=@_; my $machinefile="machines_".$machinefileindex.".lst"; my $procin=IO::Handle->new(); my $procout=IO::Handle->new(); my $pid; $pid=open2($procout,$procin,$script,$machinefile,$piece); return [$procin,$procout,$pid,$piece]; } #Check if have the correct number commandline parameters if (@ARGV!=4) { print STDERR "pdisp