Table of Contents

PVM

  1. Download and extract source code:

    cd $INSTALL_DIR
    wget http://www.netlib.org/pvm3/pvm3.4.5.tgz
    tar -zxvf pvm3.4.5.tgz
    
  2. Set your c and c++ compiler information as specified on the prerequisites page.

    export CC=[your C compiler (i.e. "gcc", "xlc", "icc", "pgcc")|your C compiler (i.e. "gcc", "xlc", "icc", "pgcc")]
    export CXX=[your C compiler (i.e. "gCC", "xlC", "icc", "pgCC")|your C compiler (i.e. "gCC", "xlC", "icc", "pgCC")]
    export F77=[your Fortran 77 compiler (i.e. "g77", "xlf", "ifort", "pgf77")|your Fortran 77 compiler (i.e. "g77", "xlf", "ifort", "pgf77")]
    
  3. cd $INSTALL_DIR/pvm3
     export PVM_ROOT=$PWD
     make
     make install
    
  4. You are now ready to install the next prerequisite, InterComm-1.6.

Developer Website

http://www.csm.ornl.gov/pvm

Troubleshooting

  • While building with gcc-4.1, you may get the following error:

    gcc -O -DCLUMP_ALLOC -DSTATISTICS -DTIMESTAMPLOG -DSANITY -I../../include -DARCHCLASS=\"LINUX\" -DIMA_LINUX -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\"/usr/bin/rsh\" -DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS -DCTIMEISTIMET -DSYSERRISCONST -DNOTMPNAM -DUSESTRERROR -c ../../src/host.c
    In file included from ../../src/host.c:227:
    ../../src/global.h:321: error: array type has incomplete element type
    ../../src/global.h:323: error: array type has incomplete element type
    

    We have found two solutions that appear to work:

    • Solution #1: include a missing "#include <pvmtev.h>" in global.h, as described here.

      FILE: pvm3/src/global.h MISSING: #include <pvmtev.h> 
      ...
      
      Changed end of file $PVM_ROOT/pvm3/src/global.h to read:
      /* General Trace Globals Declarations */
      #include <pvmtev.h>
      
      extern  struct Pvmtevdid pvmtevdidlist[];
      
      extern  struct Pvmtevinfo pvmtevinfo[];
      
      (Original reads:
      /* General Trace Globals Declarations */
      
      extern  struct Pvmtevdid pvmtevdidlist[];
      
      extern  struct Pvmtevinfo pvmtevinfo[];
      
      )
      
    • Solution #2: Apply the following patch:

      Only in pvm3/pvmgs: LINUX
      diff -urp pvm3-original/src/global.h pvm3/src/global.h
      --- pvm3-original/src/global.h  2008-02-22 11:10:16.000000000 -0700
      +++ pvm3/src/global.h   2008-02-22 11:11:08.000000000 -0700
      @@ -318,7 +318,3 @@ extern      struct pvmmclass *pvmmboxclasses;
      
       /* General Trace Globals Declarations */
      
      -extern struct Pvmtevdid pvmtevdidlist[];
      -
      -extern struct Pvmtevinfo pvmtevinfo[];
      -
      Only in pvm3/src/LINUX: waitc.o
      diff -urp pvm3-original/src/pmsg.c pvm3/src/pmsg.c
      --- pvm3-original/src/pmsg.c    2008-02-22 11:10:16.000000000 -0700
      +++ pvm3/src/pmsg.c     2008-02-22 11:11:41.000000000 -0700
      @@ -170,7 +170,7 @@ static char rcsid[] =
        **  Globals  **
        **           **
        ***************/
      -
      +extern struct Pvmtevinfo pvmtevinfo[];
      
       /***************
        **  Private  **
      Only in pvm3/src: pmsg.c~
      diff -urp pvm3-original/src/pvmdtev.c pvm3/src/pvmdtev.c
      --- pvm3-original/src/pvmdtev.c 2008-02-22 11:10:16.000000000 -0700
      +++ pvm3/src/pvmdtev.c  2008-02-22 11:12:02.000000000 -0700
      @@ -75,6 +75,9 @@ static int init_checklist[CHECKLISTSIZE]
       static int init_start = 0;
       static int init_end = 0;
      
      +extern struct Pvmtevdid pvmtevdidlist[];
      +extern struct Pvmtevinfo pvmtevinfo[];
      +
      
       void
       tev_init_pvmd( dst, ctx, tag )
      Only in pvm3/src: pvmdtev.c~
      diff -urp pvm3-original/src/tev.c pvm3/src/tev.c
      --- pvm3-original/src/tev.c     2008-02-22 11:10:16.000000000 -0700
      +++ pvm3/src/tev.c      2008-02-22 11:12:18.000000000 -0700
      @@ -71,6 +71,7 @@ static char rcsid[] =
      
       struct pmsg *midtobuf();
      
      +extern struct Pvmtevinfo pvmtevinfo[]
      
       /***************
        **  Private  **
      
  • No labels