[mpich-discuss] building 32 bit shmem on 64 bit linux system

Daniel Fetchinson fetchinson at googlemail.com
Thu Jun 26 00:01:48 CDT 2008


Actually, I spoke a bit too soon. Configure, make, make install all
work but the code still doesn't run, saying:

0 - MPI_INIT : MPIRUN chose the wrong device ch_shmem; program needs
device ch_p4
/home/fetchinson/mpi32shmem/bin/mpirun.ch_shmem: line 91: 17761
Segmentation fault      /home/fetchinson/test "testinput"

The exact same code runs on another machine where someone else
installed a 32-bit shmem mpich1 library, I'm trying to do the same on
a different machine now. It's an intel quad core so I suppose the
shmem device should work. The configure options I used for compiling
are

export CC='gcc -m32'
export F77='g77 -m32'
./configure  --with-device=ch_shmem

Do I need to specify the --with-arch option? Going through the list of
available --with-arch options I'm not sure what I need for an Intel(R)
Core(TM)2 Quad CPU Q6600 @ 2.40GHz.

What am I doing wrong?

Cheers,
Daniel



> Thanks Anthony, that worked!
>
> Concerning MPICH2: I'm not in a position to change the communication
> routines in the code  I use so this would only be an option if MPICH2
> is fully backward compatible with MPICH1. Is this the case? Can I just
> start using MPICH2 without changing anything in the code if it works
> with MPICH1?
>
> Cheers,
> Daniel
>
>
>> Since you are using MPICH-1, you can try setting CC, F77 and F90
>>
>> CC="gcc -m32"
>> F77="g77 -m32"
>> ....
>>
>> BTW, can you use MPICH2 instead ?  We have shifted all our development
>> effort to MPICH2 which is more robust than MPICH-1.  If you are using
>> MPICH2, setting CFLAGS and FFLAGS should work, and you can use nemesis
>> which shared memory for intranode communication.
>>
>> A.Chan
>>
>> ----- "Daniel Fetchinson" <fetchinson at googlemail.com> wrote:
>>
>>> Hi folks,
>>>
>>> I'd like to build the 32-bit shmem mpi library because the code I'll
>>> use with mpi only works in 32-bit because of some 32-bit specific
>>> assembly code. The machine is a 64-bit machine with a 64-bit linux
>>> distribution (suse).
>>>
>>> I tried configuring mpich-1.2.7p1 in a number of ways:
>>>
>>> ./configure --with-device=ch_shmem
>>> ./configure --with-arch=LINUX --with-device=ch_shmem
>>> ./configure --with-arch=LINUX32 --with-device=ch_shmem
>>> ./configure --with-arch=i386 --with-device=ch_shmem
>>>
>>> with and without setting the following environment variables (in
>>> bash):
>>>
>>> export CFLAGS=-m32
>>> export FFLAGS=-m32
>>>
>>> Configuring went all right but none of the above combinations worked
>>> with 'make' unfortunately :(
>>> The error in 'make' is the following:
>>>
>>> /home/fetchinson/mpich-1.2.7p1/bin/mpicc  -o overtake overtake.o
>>> test.o
>>> /usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld:
>>> skipping incompatible /home/fetchinson/mpich-1.2.7p1/lib/libmpich.a
>>> when searching for -lmpich
>>> /usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld:
>>> cannot find -lmpich
>>> collect2: ld returned 1 exit status
>>> make[4]: *** [overtake] Error 1
>>> make[3]: [linktest1] Error 2 (ignored)
>>> Could not link a C program with MPI libraries
>>> make[3]: *** [linktest1] Error 1
>>> make[2]: *** [linktest] Error 2
>>> make[1]: *** [mpi-lib-test] Error 2
>>> make: *** [mpi] Error 2
>>>
>>> Which makes me believe that I was not able to convince the
>>> compiler/linker/etc that I really want everything in 32-bit.
>>>
>>> What would be the correct way of compiling the whole mpi library to
>>> 32-bit?
>>>
>>> Cheers,
>>> Daniel
>>
>>
>
>
> --
> Psss, psss, put it down! - http://www.cafepress.com/putitdown
>


-- 
Psss, psss, put it down! - http://www.cafepress.com/putitdown




More information about the mpich-discuss mailing list