PVM patch for POV-Ray

The PVMPOV project at Sourceforge is now hosting the latest PVMPOV patches. There are patches for the new POV-Ray 3.5, as well as the older, more stable, POV-Ray 3.1g.

PVMPOV gives POV-Ray the ability to distribute a rendering across multiple networked computers. The implementation vehicle is the Parallel Virtual Machine (PVM) System 3.3, a package commonly used for distributed processing on a large number of different UNIX systems. You will also need the POV-Ray source code and a compiler before you can use this. The patch contains context diffs, applied using the GNU patch utility, which should be on most UNIX systems.

The 3.5 and 3.1g2 PVMPOV patch was updated by Jakob Flierl and the other PVMPOV team members. The 3.0x PVMPOV patch for POV-Ray 3.0.1 and 3.0.2 were updated by Harald Deischinger <Harald.Deischinger at risc.uni-linz.ac.at> from the original PVMPOV 2.9 patches that I created.

Microsoft Windows users will be happy to learn that there is now a version of PVM for Win32 available in beta form from the PVM developers. This means no royalties or shareware fees of any kind. I would be very interested to hear if anyone can get this working with PVMPOV (I would suggest trying the DOS source code to get the graphics and compiler support).

PVMPOV has been successfully run on SunOS 4.1 (SUN4), Solaris 2.4 (SUN4SOL2), NeXT STEP 3.1 (NEXT), AIX 3.2 (RS6K), AIX 4.1 (RS6KMP), Linux 2.x (LINUX), FreeBSD (FREEBSD), IRIX 5.3 (SGI5) and HP-UX 9.03 (HPUX). If you have success on other systems, I'd be happy to hear about it.

PVM was developed by a team from the University of Tennesee, Oak Ridge National Laboratory, and Emory University. The effort was funded in part by the U.S. Department of Energy, the National Science Foundation and the State of Tennessee. The PVM source is not a part of this modification.

Theory of Operation

Using the PVM code, there is one master and many slave tasks. The master has the responsibility of dividing the image up into small blocks, which are assigned to the slaves. When the slaves have finished rendering the blocks, they are sent back to the master, which combines them to form the final image. The master does not render anything by itself, although there is usually a slave running on the same machine as the master, since the master doesn't use very much CPU power.

If one or more slaves fail, it is usually possible for PVMPOV to complete the rendering. PVMPOV starts the slaves at a reduced priority by default, to avoid annoying the users on the other machines. The slave tasks will also automatically time out if the master fails, to avoid having lots of lingering slave tasks if you kill the master. PVMPOV can also work on a single machine, like the regular POV-Ray, if so desired.

The code is designed to keep the available slaves busy, regardless of system loading and network bandwidth. I have run PVMPOV on our new 4-processor RS/6000 PowerPC 601/120 systems and have had amazing results (well it was amazing at the time these tests were run ... ;-).

  Persistence of Vision Raytracer Ver 2.2.u
    This is an unofficial version compiled by:
     Andreas Dilger & Brad Kline - PVM Version 2.9
     The POV-Ray Team is not responsible for supporting this version.
  Copyright 1993 POV-Team
  POV-Ray is based on DKBTrace 2.12 by David K. Buck & Aaron A. Collins.
    Contributing Authors: (Alphabetically)
       Steve Anger        Steve A. Bennett   David K. Buck
       Aaron A. Collins   Alexander Enzmann  Dan Farmer
       Douglas Muir       Bill Pulver        Robert Skinner
       Scott Taylor       Drew Wells         Chris Young
    Other contributors listed in the documentation.

POV-Ray Options in effect: +ft +mb25 +nt20 +nn0 +nw28 +nh28 +naRS6KMP
+a0.300 +j1.000 +r3 -q9 -w640 -h480 -s1 -e480
-k0.000 -mv2.0 -iskyvase.pov -o/dev/null -l/acs2d/aedilger/povray/include
Spawning 20 PVM tasks on arch RS6KMP...
...20 PVM tasks successfully spawned.
Waiting up to 5s for each slave to start...
   ...20 tasks successfully started.
PVM Task Distribution: Tasks-20  Grid width-28  Grid height-28  Sections-414

Waiting for slave stats.

PVM Task Distribution Statistics:
         host name  [ done ] [ late ]         host name  [ done ] [ late ]
          acs1.acs  [ 6.09%] [ 0.00%]          acs1.acs  [ 4.70%] [ 0.19%]
          acs1.acs  [ 4.85%] [ 0.29%]          acs1.acs  [ 4.73%] [ 0.15%]
          acs5.acs  [ 5.61%] [ 0.19%]          acs5.acs  [ 4.30%] [ 0.00%]
          acs5.acs  [ 5.54%] [ 0.26%]          acs5.acs  [ 5.77%] [ 0.14%]
          acs6.acs  [ 4.81%] [ 0.00%]          acs6.acs  [ 5.32%] [ 0.13%]
          acs6.acs  [ 5.40%] [ 0.06%]          acs6.acs  [ 4.89%] [ 0.13%]
          acs7.acs  [ 3.79%] [ 0.00%]          acs7.acs  [ 4.81%] [ 0.13%]
          acs7.acs  [ 3.32%] [ 0.00%]          acs7.acs  [ 3.90%] [ 0.00%]
          acs2.acs  [ 5.54%] [ 0.06%]          acs2.acs  [ 6.89%] [ 0.13%]
          acs2.acs  [ 4.59%] [ 0.45%]          acs2.acs  [ 5.14%] [ 0.26%]

POV-Ray statistics for 16/20 slaves:
skyvase.pov statistics
Resolution 640 x 480
# Rays:     1431443    # Pixels:   262448  # Pixels supersampled:   11286
  Ray->Shape Intersection Tests:
   Type             Tests    Succeeded   Percentage
  Sphere          2405704      454483       18.89
  Plane          24262280    13403881       55.25
  Quadric         2405704     1032374       42.91
  Cone            2242248     1834117       81.80
  Bounds          2242248     1202852       53.64
  Calls to Noise:      1696294
  Calls to DNoise:     1963598
  Shadow Ray Tests:    3987558     Blocking Objects Found:       96039
  Reflected Rays:      1067421
  Time For Trace:    0 hours  0 minutes 32.00 seconds

Please also see the MPI-Povray site for an MPI version.

<<-Back to Andreas' ray-tracing page