Table of Contents
Download and extract source code:
cd $INSTALL_DIR wget http://www.netlib.org/pvm3/pvm3.4.5.tgz tar -zxvf pvm3.4.5.tgz
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")]
cd $INSTALL_DIR/pvm3 export PVM_ROOT=$PWD make make install
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 **