Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > e9d339982d437f63bf085788b3420a44 > files > 5

povray-pvm-3.1g-11mdk.i586.rpm


<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>PVMPOV&nbsp;HOWTO</title><link rel="stylesheet" href="style.css" type="text/css"><link rev="made" href="mailto:flierl@luga.de"><meta name="generator" content="DocBook XSL Stylesheets Vstyle.css"><meta name="keywords" content="PVMPOV, PVM-POV, Parallel POV-Ray"><meta name="description" content="a HOWTO about PVMPOV"><meta name="MSSmartTagsPreventParsing" content="TRUE"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" id="d0e1"><div class="titlepage"><div><h1 class="title"><a name="d0e1"></a><i>PVMPOV&nbsp;HOWTO</i></h1></div><div><p class="pubdate">September 6th 2001</p></div><div><div class="abstract"><p><a name="d0e20"></a><b>Abstract</b></p><p>
    This document gives you explicit instructions on installing and
    running PVMPOV, a parallel version of the popular ray-tracing
    application Persistence of Vision (&#8220;POV-Ray&#8221;).
   </p></div></div><hr size="1" noshade></div><div class="toc"><p><b>Table of Contents</b></p><ul><li> <a href="#intro">Introduction</a></li><li>1 <a href="#setup">Setting up PVMPOV</a></li><li>2 <a href="#use">Using PVMPOV</a></li><li>3 <a href="#bugs">Bugs &amp; Limitations</a></li><li>4 <a href="#faq">Frequently asked questions</a></li><li>5 <a href="#cmd-line-options">Command line options</a></li><li>6 <a href="#standard-info">Standard Information</a></li></ul></div><div id="intro" class="preface"><div class="titlepage"><div><h2 class="title"><a name="intro"></a>Introduction</h2></div></div><p>
   PVMPOV = PVM + POV-Ray
 </p><p>
  <i>PVM</i> is a message passing system that enables a network
  of computers to be used as a single distributed memory parallel computer.
  This network is referred to as the <i>Parallel Virtual Machine
  </i>.
 </p><p>
  <i>POV-Ray</i> is a 3-dimensional raytracing engine. It takes
  information you supply and simulates the way light interacts with the objects
  you've defined to create stunning 3d pictures and animation. This process
  is called <i>rendering</i>.
 </p><p>
  <i>PVMPOV</i> has the ability to distribute a rendering
  across multiple heterogeneous systems. Parallel execution is only active if
  the user gives the &#8220;<tt>+N</tt>&#8221; option to PVMPOV.
  Otherwise, PVMPOV behaves the same as regular POV-Ray and runs a
  single task only on the local machine.
 </p><p>
  Using the PVM model, 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.
 </p><p>
  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.
 </p></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="setup"></a>Chapter 1. Setting up PVMPOV</h2></div></div><p>
   The PVM patches to POV-Ray are very easy to install. The entire
   operation should take only a few minutes once you have the
   source code. But before compiling PVMPOV you must be sure to have
   the PVM library installed correctly.
 </p><a name="d0e153"></a><table class="important" border="0"><tr><td rowspan="2" align="center" valign="top" width="24"><img src="images/important.png" alt="Important" width="24" height="24"></td></tr><tr><td colspan="2" align="left" valign="top">
   PVM is not included in the
   PVMPOV distribution. You have to download and install it
   manually. Get it from the <a href="http://www.epm.ornl.gov/pvm/pvm_home.html">PVM
   home page</a>.

  
   Also note that the PVMPOV patch only works with the unix sources of
   POV-Ray.
  </td></tr></table><div class="sect2"><a name="d0e169"></a><div class="titlepage"><div><h3 class="title"><a name="d0e169"></a>1.1. 
     Getting the sources
    </h3></div></div><p>
     The following files are required to build and run PVMPOV:
    </p><p>
     <div class="itemizedlist"><ul><li>
        <a href="http://www.luga.de./~flierl/pvmpov/pvmpov-3.1g2.tgz">pvmpov-3.1g2.tgz</a>, the PVMPOV patch,
       </li><li>
        <a href="ftp://ftp.povray.org/pub/povray/Official/Unix/povuni_s.tgz">povuni_s.tgz</a>, the POV-Ray unix source code, and
       </li><li>
        <a href="ftp://ftp.povray.org/pub/povray/Official/Unix/povuni_d.tgz">povuni_d.tgz</a>, a collection of data files, documentation,
        and examples that are part of POV-Ray.
       </li></ul></div>
    </p><p>
     If you already have another version of POV-Ray 3.1 installed on
     your computers, then you only need to download
     <tt>pvmpov-3.1g2.tgz</tt> and
     <tt>povuni_s.tgz</tt>.
    </p><p>
    You should put these files someplace easily accessible that
    has at least 15Mb of free space; for the purposes of the rest of these 
   examples, we will presume the sources are in
    <tt>$HOME/tmp</tt>, which is
    shared across all computers:
   </p><pre class="screen">
<tt>$ </tt><span class="userinput">cd $HOME/tmp</span>
<tt>$ </tt><span class="userinput">wget -q http://www.luga.de./~flierl/pvmpov/pvmpov-3.1g2.tgz</span>
<tt>$ </tt><span class="userinput">wget -q ftp://ftp.povray.org/pub/povray/Official/Unix/povuni_s.tgz</span>
<tt>$ </tt><span class="userinput">wget -q ftp://ftp.povray.org/pub/povray/Official/Unix/povuni_d.tgz           </span>
</pre></div><div class="sect2"><a name="d0e246"></a><div class="titlepage"><div><h3 class="title"><a name="d0e246"></a>1.2. 
    Unpacking the sources
    </h3></div></div><p>
     Untar the PVMPOV patch file.
    </p><pre class="screen">
<tt>$ </tt><span class="userinput">tar xfz pvmpov-3.1g2.tgz                                                     </span>
</pre><p>
    This will create a <tt>pvmpov3_1g_2</tt>
    directory. Change into the this directory and extract the POV-Ray
    source files.
   </p><pre class="screen">
<tt>$ </tt><span class="userinput">cd pvmpov3_1g_2</span>
<tt>$ </tt><span class="userinput">tar xfz ../povuni_s.tgz</span>
<tt>$ </tt><span class="userinput">tar xfz ../povuni_d.tgz                                                      </span>
</pre></div><div class="sect2"><a name="d0e286"></a><div class="titlepage"><div><h3 class="title"><a name="d0e286"></a>1.3. 
     Patching POV-Ray
    </h3></div></div><p>
     Once the source files have been extracted, apply the PVMPOV
     patch by executing the &#8220;<tt>inst-pvm</tt>&#8221;
     shell script.
    </p><p>
    <pre class="screen">
<tt>$ </tt><span class="userinput">./inst-pvm</span>
<span class="computeroutput">
Trying to apply the patch.

Searching for rejected files
</span>
<tt>$</tt>
</pre>

    If you see nothing listed between the &#8220;Trying to apply ...&#8221;
    and &#8220;Searching for ...&#8221; lines, the patch was successfully
    applied to the POV-Ray sources, and you can continue to build the
    modified sources.
   </p><p>
    If there are problems with the patch (for example, some of the
    patches are misaligned with regard to the current version of
    the source), you will get error messages from the patch program.
    If this happens, all is not lost. It's pretty easy to look at the
    <tt>.rej</tt> files and then compare them to the sources
    and insert the patches by hand. The
    &#8220;<tt>inst-pvm</tt>&#8221; shell script just makes things
    a little more convenient.
   </p><p>
    Another common problem is, that people are not using the the
    <a href="ftp://ftp.gnu.org/pub/gnu/patch/">GNU patch utility</a>,
    which should be on most UNIX systems. Other patch programs may not work.
   </p></div><div class="sect2"><a name="d0e340"></a><div class="titlepage"><div><h3 class="title"><a name="d0e340"></a>1.4. 
    Building PVMPOV
   </h3></div></div><p>
     After the patch has been applied successfully you can build the PVMPOV
     binaries. Change into the <tt>povray31/source/pvm</tt> directory and type
     &#8220;<tt>aimk newunix</tt>&#8221;. When the
     compilation finishes, compile the display capable versions of PVMPOV
     by executing &#8220;<tt>aimk newsvga</tt>&#8221; and
     &#8220;<tt>aimk newxwin</tt>&#8221;. The binaries will then be
     in <tt>povray31/sources/pvm/$PVM_ARCH</tt>.
    </p><pre class="screen">
<tt>$ </tt><span class="userinput">cd povray31/source/pvm</span>
<tt>$ </tt><span class="userinput">aimk newunix</span>
<span class="computeroutput">
making in LINUX/ for LINUX
/home/flierl/tmp/pvmpov3_1g_2/povray31/source/pvm/LINUX
rm -f ./povray.o ./render.o ./userio.o ./vbuffer.o pvm.o
cp ../../unix/unixconf.h config.h
(cd ..; aimk unix)
making in LINUX/ for LINUX
/home/flierl/tmp/pvmpov3_1g_2/povray31/source/pvm/LINUX
make[1]: Entering directory `/home/flierl/tmp/pvmpov3_1g_2/povray31/source/pvm/
LINUX'
gcc -O6 -ansi -finline-functions -ffast-math -c -Wall -DCOMPILER_VER=\".`uname`
.gcc\" -I. -I.. -I../.. -I../../unix -I../../libpng -I../../zlib -I/usr/X11R6/i
nclude ../../atmosph.c -o atmosph.o

...

gcc -O6 -ansi -finline-functions -ffast-math -c -Wall -DCOMPILER_VER=\".`uname`
.gcc\" -I. -I.. -I../.. -I../../unix -I../../libpng -I../../zlib -I/usr/X11R6/i
nclude ../../unix/unix.c -o unix.o
gcc ./atmosph.o ./bbox.o ./bcyl.o ./bezier.o ./blob.o ./boxes.o ./bsphere.o ./c
amera.o ./chi2.o ./colour.o ./cones.o ./csg.o ./discs.o ./express.o ./fractal.o
 ./gif.o ./gifdecod.o ./hcmplx.o ./hfield.o ./iff.o ./image.o ./interior.o ./la
the.o ./lbuffer.o ./lighting.o ./matrices.o ./media.o ./mem.o ./mesh.o ./normal
.o ./objects.o ./octree.o ./optin.o ./optout.o ./parse.o ./parstxtr.o ./pattern
.o ./pgm.o ./pigment.o ./planes.o ./png_pov.o ./point.o ./poly.o ./polygon.o ./
polysolv.o ./povray.o ./ppm.o ./prism.o ./quadrics.o ./quatern.o ./rad_data.o .
/radiosit.o ./ray.o ./render.o ./sor.o ./spheres.o ./super.o ./targa.o ./textur
e.o ./tokenize.o ./torus.o ./triangle.o ./truetype.o ./txttest.o ./userio.o ./v
buffer.o ./vlbuffer.o ./warps.o ./pvm.o ./unix.o /usr/lib/pvm3/lib/LINUX/libpvm
3.a /usr/lib/pvm3/lib/LINUX/libgpvm3.a     -L../../libpng -lpng -L../../zlib -l
z -lm  -o pvmpov

make[1]: Leaving directory `/home/flierl/tmp/pvmpov3_1g_2/povray31/source/pvm/L
INUX'
</span><tt>$ </tt><span class="userinput">aimk newsvga</span>
<span class="computeroutput">
...
</span>
<tt>$ </tt><span class="userinput">aimk newxwin</span>
<span class="computeroutput">
...
</span>
</pre></div><div class="sect2"><a name="d0e402"></a><div class="titlepage"><div><h3 class="title"><a name="d0e402"></a>1.5. 
    Installing the binaries
   </h3></div></div><p>
    As the case may be, the PVMPOV binaries can be installed in lots of ways.
   </p><p>
    <div class="itemizedlist"><ul><li>
       If you can get administrative rights, then do the following:
      <pre class="screen">
<tt>$ </tt><span class="userinput">su -</span>
<tt>$ </tt><span class="userinput">aimk install</span>
</pre>
       This will copy the binaries to <tt>$PVM_ROOT/bin/$PVM_ARCH</tt> and create
       symbolic links in <tt>/usr/local/bin</tt>.
      </li><li>
       If you cannot get &#8220;root&#8221; you have two other options:
      
       <div class="orderedlist"><ol type="1"><li>
          Move the binaries into <tt>$HOME/pvm3/bin/$PVM_ARCH</tt>.
         </li><li>
          Use the &#8220;<tt>ep=$PATH</tt>&#8221; option in
          your <tt>pvm.hosts</tt> file. Read the PVM
          documentation for more information.
         </li></ol></div>
      </li></ul></div>
   </p></div></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="use"></a>Chapter 2. Using PVMPOV</h2></div></div><p>
  The following is an example from Jason Hough, and was generated on a group
  of six Solaris based 4-processor SPARCstation 20s. His home directory is
  NFS mounted to all of these hosts.
 </p><div class="sect2"><a name="pvm"></a><div class="titlepage"><div><h3 class="title"><a name="pvm"></a>2.1. Starting the PVM daemons</h3></div></div><p>
   You first must have a PVM daemon launched on each host that will
   be participating in the rendering.
   Create a file called <tt>pvm.hosts</tt> which
   should contain some information needed for the pvm daemon to run. Refer
   to the PVM documentation (&#8220;<tt>man pvmd3</tt>&#8221;)
   to get more info about PVM's host file format.
  </p><p>
   Jason Hough keeps the pvm daemon installed in a directory called
   &#8220;<tt>bin</tt>&#8221;, given by
   &#8220;<tt>dx=./bin/pvmd3</tt>&#8221; relative to his home
   directory, and PVMPOV is in various subdirectories under &#8220;<tt>bin</tt>&#8221; (ie
   &#8220;<tt>bin/SUN4</tt>&#8221;,
   &#8220;<tt>bin/SUNMP</tt>&#8221;,
   &#8220;<tt>bin/LINUX</tt>&#8221;, etc.), given
   by the executable path &#8220;<tt>ex=./bin</tt>&#8221;,
   so his <tt>pvm.hosts</tt> file looks like:
  </p><p>
<pre class="screen">
<tt>$ </tt><span class="userinput">cat $HOME/pvm.hosts</span>
<span class="computeroutput">
glee    dx=./bin/pvmd3 ep=./bin
elation dx=./bin/pvmd3 ep=./bin
ecstasy dx=./bin/pvmd3 ep=./bin
bliss   dx=./bin/pvmd3 ep=./bin
delight dx=./bin/pvmd3 ep=./bin
rapture dx=./bin/pvmd3 ep=./bin                                                
</span>
</pre>
  </p><p>
   The following command launches the PVM daemons:
  </p><p>
<pre class="screen">
<tt>$ </tt><span class="userinput">pvm pvm.hosts</span>
<span class="computeroutput">
3.3.7
t40001

<tt>pvm&gt; </tt></span><span class="userinput">conf</span>
<span class="computeroutput">
6 hosts, 1 data format
                    HOST     DTID     ARCH   SPEED
                    glee    40000    SUNMP    1000
                 elation    80000    SUNMP    1000
                 ecstasy    c0000    SUNMP    1000
                   bliss   100000    SUNMP    1000
                 delight   140000    SUNMP    1000
                 rapture   180000    SUNMP    1000                             
<tt>pvm&gt; </tt></span><span class="userinput">quit</span>
<span class="computeroutput">
pvmd still running.
</span>
<tt>$ </tt>
</pre>
  </p><p>
   Type &#8220;<tt>quit</tt>&#8221; at the PVM prompt to exit
   the PVM interface and leave the PVM daemons still running.
  </p></div><div class="sect2"><a name="pvmpov"></a><div class="titlepage"><div><h3 class="title"><a name="pvmpov"></a>2.2. Rendering in parallel</h3></div></div><p>
   Now that the PVM daemons are up and waiting for work to do, we can
   render.
  </p><p>
   POV-Ray needs object script files
   (<tt>.pov</tt>) to raytrace, and there are many places
   on the Internet you can obtain .pov files from. For your first
   rendering, you may want to check out the POV-Ray benchmarking site
   <a href="http://www.haveland.com/povbench/">POVBench</a>
   and get the <tt>skyvase.pov</tt> file. This
   file is used to benchmark and compare computers of varying designs
   and can provide a way of measuring your parallel virtual machine's
   performance.
  </p><p>
   Note that for these multi-processor machines Jason Hough forces PVMPOV
   to start more tasks than the default 1 per host, and uses a 64x64 block
   size:
  </p><pre class="screen">
<tt>$ </tt><span class="userinput">pvmpov +Iskyvase.pov +Oskyvase.tga +NT24 +NW64 +NH64 +v</span>
<span class="computeroutput">
POV-Ray Options in effect: +v1 +ft +mb25 +NT24 +NN5 +NW64 +NH64 +a0.300
+j1.000 +b999 +r3 -q9 -w1024 -h768 -s1 -e768
-k0.000 -mv2.0 +Iskyvase.pov +Oskyvase.tga
   ...at least 13 tasks successfully spawned in time.
   ...Don't worry, more are on the way, I'm just not waiting
PVM Task Distribution: Tasks-24  Grid width-64  Grid height-64  Sections-192

Waiting for slave stats.

PVM Task Distribution Statistics:
           host name  [ done ] [ late ]           host name  [ done ] [ late ]
                glee  [ 4.17%] [ 0.00%]                glee  [ 4.17%] [ 0.00%]
                glee  [ 4.17%] [ 0.00%]                glee  [ 4.17%] [ 0.00%]
             elation  [ 4.69%] [ 0.00%]             elation  [ 4.17%] [ 0.00%]
             elation  [ 4.17%] [ 0.00%]             elation  [ 4.17%] [ 0.00%]
             ecstasy  [ 3.65%] [ 0.00%]             ecstasy  [ 4.69%] [ 0.00%]
             ecstasy  [ 4.69%] [ 0.00%]             ecstasy  [ 4.17%] [ 0.00%]
               bliss  [ 3.65%] [ 0.00%]               bliss  [ 4.17%] [ 0.00%]
               bliss  [ 4.69%] [ 0.00%]               bliss  [ 3.65%] [ 0.00%]
             delight  [ 3.65%] [ 0.00%]             delight  [ 4.17%] [ 0.00%]
             delight  [ 4.17%] [ 0.00%]             delight  [ 4.17%] [ 0.00%]
             rapture  [ 4.69%] [ 0.00%]             rapture  [ 4.17%] [ 0.00%]
             rapture  [ 4.17%] [ 0.00%]             rapture  [ 3.65%] [ 0.00%]


skyvase.pov statistics
--------------------------------------
Resolution 1024 x 768
# Rays:     3773743    # Pixels:      798720  # Pixels supersampled:      17381
  Ray-&gt;Shape Intersection Tests:
   Type             Tests    Succeeded   Percentage
  -----------------------------------------------------------
  Sphere          6304452     1170727       18.57
  Plane          63822062    35385552       55.44
  Quadric         6304452     2770858       43.95
  Cone            5918163     4839298       81.77
  Bounds          5918163     3152226       53.26
  Calls to Noise:      4327871
  Calls to DNoise:     5141872
  Shadow Ray Tests:   10498615     Blocking Objects Found:      254807
  Reflected Rays:      2818594
  Time For Trace:    0 hours  0 minutes 47.00 seconds
</span>
</pre><a name="d0e607"></a><table class="important" border="0"><tr><td rowspan="2" align="center" valign="top" width="24"><img src="images/important.png" alt="Important" width="24" height="24"></td></tr><tr><td colspan="2" align="left" valign="top">
   Note that for comparison purposes with other skyvase benchmarks that this
   is rendered at 1024x768 instead of the usual 640x480.
  </td></tr></table></div></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="bugs"></a>Chapter 3. Bugs &amp; Limitations</h2></div></div><p>
  The following bugs and limitations are known:
 </p><p>
  <div class="itemizedlist"><ul><li>
     Radiosity is not working. The resulting image looks like a
     mosaic. The energy bias for each block is different because the
     radiosity equation is not globally resolved correctly.
    </li><li>
     Field rendering (&#8220;<tt>-UF</tt>&#8221; option)
     is not working.
    </li><li>
      The master process does not parse the input file. As long
      as your input file still contains error you should disable PVM
      support (&#8220;<tt>-N</tt>&#8221; or PVM=off).
    </li><li>
     The statistics for the image being rendered may not be accurate
     if any of the slaves is too slow, or stops for some reason.  As
     well, since some sections may be rendered twice if the block is
     reassigned, the statistics will not be exactly the same as if it
     were rendered on a single host. The master only waits a few
     seconds for statistics to arrive before printing them.
    </li><li>
     When using automount you might have the problem, that the slaves
     can't change to the working directory. Use the
     &#8220;<tt>+ND</tt>&#8221; (pvm_wd) option. Calling
     PVMPOV with &#8220;<tt>+ND$PWD</tt>&#8221; should
     solve the problem.
    </li><li>
     PVMPOV also supports animations. It computes multiple frames
     simultaneously, so it is not possible to do &#8220;recursive
     animations&#8221;.
    
     All the pre-scene shellouts are done by the master process in
     the correct order, and the same for the post-scene
     shellouts. But for example the pre-scene shellout for frame 2,
     will be executed before the post-scene shellout for frame 1.
    </li><li>
     The command line arguments for specifying hosts is not
     cumulative, so the following command will <i>not</i> start
     24 slaves on the multi-processor system(s) (which may have 4 CPUs each),
     and then start one slave on each of the remaining systems.
     <pre class="screen">
<tt>$ </tt><span class="userinput">pvmpov +NASUNMP +NT24 +N +Iskyvase.pov +Oskyvase.tga                   </span>
     </pre>
    </li></ul></div>
 </p></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="faq"></a>Chapter 4. Frequently asked questions</h2></div></div><p>
  <div class="itemizedlist"><ul><li><a name="d0e685"></a>
    I have a problem with PVM.
    <p>
      Have a look into the <a href="http://www.netlib.org/pvm3/book/pvm-book.html">PVM book</a>.
     </p></li><li><a name="d0e693"></a>PVMPOV seems to be slower than POV-Ray.
    <p>
     It is important to note that by varying the size of the grid
     sections, you can affect the performance of the rendering. If
     you have particular renderings that are very complex in a small
     portion of the display, then a finer grain may help.  In this
     way, more of the tasks are able to migrate towards the grid
     sections that are more complex. Conversely, if you have a
     shorter render or a slower network, it may be advantageous to
     have larger blocks to reduce network overhead, as well as ensure
     the slaves are not idle waiting for blocks to render.
    </p>
     Another thing to mention is that you should not use PVMPOV
     for short renderings (e.g. 10's of seconds) as this is slower
     than on one fast machine.
    
     You must also consider overhead if using Antialiasing.
     Antialiasing requires the line segment above and below the grid
     section to be traced so that super-sampling may occur. If the
     height of the grid is reduced in size, and Antialiasing is
     turned on, your percentage of overhead goes up. For example,
     setting a height of four
     (&#8220;<tt>+NH4</tt>&#8221;) using Antialiasing
     would have more than 25% overhead. If the image size is not an
     integer multiple of the grid size, the edge blocks are smaller
     (ie extra pixels aren't rendered), so it is not necessary to
     evenly divide the image into blocks.
    </li></ul></div>
 </p></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="cmd-line-options"></a>Chapter 5. Command line options</h2></div></div><p>
  Valid POV-Ray command-line options relating to PVM are:
 </p><p>
  <div class="itemizedlist"><ul><li><a name="d0e727"></a><tt>pvm=on</tt>, <tt>+N</tt><p>
      This is the default for
      starting PVMPOV: one slave will be started on each available
      host, regardless of architecture, and the blocks will be 32x32
      pixels in size. The slaves will be started with a nice value of
      5, which means they will run at a lower priority than other user
      jobs.
     </p></li><li><a name="d0e739"></a><tt>pvm=off</tt>, <tt>-N</tt><p>
      Turns of PVM support. PVMPOV
      now runs exactly as normal POV-Ray. You should do this when there
      are still errors in your input file. PVMPOV will not display
      error message otherwise.
     </p></li><li><a name="d0e757"></a><tt>pvm_tasks=n</tt>, <tt>+NTn</tt><p>
      Start <tt>n</tt> tasks on the available PVM
      hosts. This is usually only useful if debugging on a single
      machine, or for starting more than 1 task on multi-processor
      hosts. If, for example, you have 10 machines with 4 CPUs each,
      you could specify +nt40 to start 4 processes on each host (and
      the OS will hopefully run 1 on each CPU).
     </p>
     Note that PVM is stupid in the way it starts tasks, so if, in
     the previous example, one of the hosts has only one CPU, it will
     still have 4 slaves started on it. You can use the
     &#8220;<tt>pvm_hosts</tt>&#8221; option (see below) to
     control on which machines the tasks are started.
    
     Starting multiple tasks on a single processor will always be
     less efficient than a single task because of context switching
     and extra message passing.
    </li><li><a name="d0e777"></a><tt>pvm_arch=arch</tt>, <tt>+NAarch</tt><p>
      Start the tasks only on the PVM architecture
      &#8220;<tt>arch</tt>&#8221;. If
      &#8220;<tt>+NT</tt>&#8221; is not given, one task
      will be started on each of the hosts of the given
      architecture.
     </p></li><li><a name="d0e794"></a><tt>pvm_nice=n</tt>, <tt>+NNn</tt><p>
      Run the slaves at a
      scheduling priority of &#8220;<tt>n</tt>&#8221;. The
      default scheduling priority is 5.  In general, changing the
      priority value will not affect performance very much, but may
      get others upset with you. The nicest setting for PVMPOV is 20,
      while the least nice setting is 0.  Note that these values are
      always used even on systems that use scheduling priority values
      from 20-40. See the installation document and the info page for
      <tt>nice</tt> for more information.
     </p></li><li><a name="d0e813"></a><tt>pvm_width=n</tt>, <tt>+NWn</tt><p>
      Change the width of the
      blocks to &#8220;<tt>n</tt>&#8221; pixels. The
      default width is 32 pixels.
     </p></li><li><a name="d0e826"></a><tt>pvm_height=n</tt>, <tt>+NHn</tt><p>
      Change the height of the
      blocks to &#8220;<tt>n</tt>&#8221; pixels. The
      default height is 32 pixels.
     </p></li><li><a name="d0e839"></a><tt>pvm_slave=slave</tt>, <tt>+NSslave</tt><p>
      Uses &#8220;<tt>slave</tt>&#8221; as filename for the
      slave tasks. If you do not specify this option PVMPOV will use
      the current executable name also for the slaves.
     </p>
     Using this option you can for example run the X11 version
     (<tt>x-pvmpov</tt>) as master (to display the results)
     and a version without any display support
     (<tt>pvmpov</tt>) as slaves.
    </li><li><a name="d0e863"></a><tt>pvm_wd=dir</tt>, <tt>+NDdir</tt><p>
      Set the working
      directory for the slaves. By default PVMPOV tries to run the
      slaves in the same directory, as the master. But sometimes
      'getcwd' gives misleading output (when automounting is used), or
      you simply want to run the slaves in some other directory, then
      you can use this option.
     </p></li><li><a name="d0e875"></a><tt>pvm_hosts=name1,name2,...</tt><p>
      Set the names of the hosts to use for slaves. Note, that there are
      no spaces allowed between the names.
     </p>
     By default PVM distributes the processes in some order to the
     available machines. Sometimes the choice of PVM is not the best,
     so you can specify explicitly which machines to use.
    
     You can use more tasks, then you specify here. You can use the
     options in this way: &#8220;<tt>pvm_hosts=darkstar,darkstar,baby
     +NT6</tt>&#8221;. This will start six tasks
     (&#8220;<tt>+NT6</tt>&#8221; must come after the
     &#8220;<tt>pvm_hosts</tt>&#8221;), four on darkstar and
     two on baby. 
    </li></ul></div>
 </p></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="standard-info"></a>Chapter 6. Standard Information</h2></div></div><div class="sect2"><a name="authors"></a><div class="titlepage"><div><h3 class="title"><a name="authors"></a>6.1. Authors</h3></div></div><p>
   The following people are/were involved in PVMPOV:
  </p><p>
   <div class="itemizedlist"><ul><li>Brad Kline, Cray Research Inc., released the first version
     of PVMPOV.</li><li><a href="http://www-mddsp.enel.ucalgary.ca/People/adilger/povray/pvmpov.html">Andreas Dilger</a>
      changed large portions of PVMPOV to not only be more
     user-friendly about reporting errors, but also more robust and
     faster.
     </li><li><a href="http://www.geocities.com/CapeCanaveral/Lab/6386/pvmpov/">Harald Deischinger</a>
      enhanced the command line interface and error handling.
     </li><li><a href="http://www.luga.de/~flierl/pvmpov/">Jakob Flierl</a> - current maintainer.</li></ul></div>
  </p></div><div class="sect2"><a name="copyright"></a><div class="titlepage"><div><h3 class="title"><a name="copyright"></a>6.2. Copyright</h3></div></div><p>
   Copyright &copy; 1993-2001 A. Dilger, H. Deischinger and J. Flierl.
  </p><p>
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.1
   or any later version published by the Free Software Foundation.
  </p></div><div class="sect2"><a name="disclaimer"></a><div class="titlepage"><div><h3 class="title"><a name="disclaimer"></a>6.3. Disclaimer</h3></div></div><p>
   We will not accept any responsibility for any incorrect information
   within this document, nor for any damage it might cause when applied.
  </p></div></div></div></body></html>