# Copyright (c) 2002 Peter Guntert. All rights reserved. ## 7MACROS: parallel - run a command in parallel ## ## Usage: parallel var i cmd s n3 nn if (nparam.lt.1) error "*** Error: Missing command." cmd:= do i 1 nparam cmd:=$cmd $p$i end do if (nproc.eq.1) then $cmd else s:= do i 1 ndim-1 s:=$s $ndata(perm(i)) end do tmpnam:=prosa$getpid n3=ndata(perm(ndim)) nn=n3/nproc+1 do i 1 nproc parallel reduce $s ${1+nn*(i-1)}..$min(nn*i,n3) $cmd write real $tmpnam.$i(I2.2) end do system "cat $tmpnam.[0-9][0-9] > $tmpnam" system rm -f $tmpnam.[0-9][0-9] read real $tmpnam $s $n3 system rm -f $tmpnam end if