Busy, busy, busy

quidity on 2001-08-30T19:20:19

Or not busy enough... I've been experimenting with the Parallel::* modules recently, but I'm afraid they suck to various degrees.

Parallel::PVM (Parallel Virtual Machine) is the better of the two, but suffers from only being able to pass string data (with no tabs) and a compiled in buffer limit. Add to that the fact it runs on top of PVM and everything starts to look less than rosy.

Parallel::MPI (Message Passing Interface) is under-developed as it was done as a couple of people's college project then promptly abandonded.

Anyway, why do they both suck? At the root of their failure lies their un-perlish way to do something. MPI and PVM were designed to allow scientists to write portable numerical code in Fortran and C (then later C++), this means they focus on sending chunks of typed data (arrays of integers, floats and what have you). The P::PVM module gets around this by getting the programmer to encode all of his data in a string (array of characters) then calling out to the PVM character sending routines to actually pass messages. The P::MPI module tries to implement MPI too completely, so there are a huge number of calls, one for integers, one for strings and so on.

Perl though deals with atoms of data, or very complicated trees of data with a single root, scalars. Ideally a message passing system suitable for perl would let you throw arbitary data structures (even objects and other non-process specific data) between nodes. Then message passing in perl might suck less.

I've also been playing a bit with VRML (which has a slightly nicer perl interface) and reveling in the joys of an easy to write OO language as I throw data from one mollecular dynamics code to another, this involves large data sets though, and is begging to be parallelised, but perl just isn't ready yet. Oh well.