Compilation problem.

Lars Bj|rnfot bjornfot at erix.ericsson.se
Mon Nov 19 00:49:18 PST 2001


Hi,

I posted an answer for this some months ago, patch added below. 
Hope it works though the versions is slightly newer. 

Regards,
Lars

> "Zhifeng F. Chen" wrote:
> 
> Hi,
> 
>     When compiling mvich-1.0a6.1 under mpich-1.2.2.3,
> 
>   ./configure --with-device=via --with-arch=LINUX --without-romio  -cflags="-DUSE_STDARG -O2 -DCPU_X86 -DNIC_GIGANET -DVIPL095" -lib="-lgnivipl -lpthread"
>   is fine.
> 
>    When I came to make, it reports:
> cc1: warnings being treated as errors
> queue.c: In function `MPID_Search_unexpected_for_request':
> queue.c:296: warning: implicit declaration of function `MPID_AINT_CMP'
> make[3]: *** [queue.o] Error 1
> Exit status from make was 2
> make[2]: *** [mpilib] Error 1
> make[1]: *** [mpi-modules] Error 2
> make: *** [mpi] Error 2
>    Can anyone help me out?
> 
> ZF



The reason seems to be mpid.h that exists in two versions, 
and the mpid/via/mpid.h  seems outdated. I send a patch that 
works for me (mpich-1.2.1 and mvich-1.0a6.1). It's rough, just 
to get it to compile.

make mpilib
# fails 
# queue.c:296: warning: implicit declaration of function `MPID_AINT_CMP'
# see  diff ./mpid/ch2/mpid.h ./mpid/via/mpid.h

patch -p1 < patch-mpid.h
# make mpilib succeeds w/o errors. 

Regards,
Lars


> Jeffrey Tilson wrote:
> 
> Hi,
> This is my first attempt with mvich (1.0a6.1). I'm using mpich 1.2.2. I have a small
Emulex (cLAN 1000) connected cluster running RH 6.2/2.2.19.  I've pretty much followed
the mvich installation instructions. The problem is the function MPID_AINT_CMP. It
doesn't appear to be defined anywhere not used by any code other than queue.c. Can
someone suggest a solution to this?
> Thanks,
> --jeff
>




*** mpich-1.2.1/mpid/via/mpid.h.orig    Tue Jul  4 01:58:12 2000
--- mpich-1.2.1/mpid/via/mpid.h Wed Jun 20 23:57:51 2001
***************
*** 99,108 ****
--- 99,110 ----
  typedef int MPID_Aint;
  #define MPID_AINT_SET(a,b) a = b
  #define MPID_AINT_GET(a,b) a = b
+ #define MPID_AINT_CMP(a,b) (a) == (b)
  #elif  defined(MPID_LONG8)
  typedef long MPID_Aint;
  #define MPID_AINT_SET(a,b) a = b
  #define MPID_AINT_GET(a,b) a = b
+ #define MPID_AINT_CMP(a,b) (a) == (b)
  #else
  #define MPID_AINT_IS_STRUCT
  /* This is complicated by the need to set only the significant bits when
***************
*** 115,123 ****
--- 117,127 ----
  #ifndef POINTER_64_BITS
  #define MPID_AINT_SET(a,b) (a).low = (unsigned)(b)
  #define MPID_AINT_GET(a,b) (a) = (void *)(b).low
+ #define MPID_AINT_CMP(a,b) ((a).low == (b).low)
  #else
  #define MPID_AINT_SET(a,b) (a) = *(MPID_Aint *)&(b)
  #define MPID_AINT_GET(a,b) *(MPID_Aint *)&(a) = *&(b)
+ #define MPID_AINT_CMP(a,b) ((a).low == (b).low) && ((a).high == (b).high)
  #endif
  #endif
  #else /* Not MPID_HAS_HETERO */
***************
*** 131,136 ****
--- 135,141 ----
  a = b;\
  DEBUG_H_INT(fprintf( stderr, "[%d] Aint get %x <- %x\n", MPID_MyWorldRank, a, b ));\
          }
+ #define MPID_AINT_CMP(a,b) (a) == (b)
  #endif
  
  typedef int MPID_RNDV_T;



More information about the Beowulf mailing list