[mpich-discuss] need to compile unix code as windows exe

Hiatt, Dave M dave.m.hiatt at citi.com
Tue Nov 18 08:59:48 CST 2008


I got things to work, but it's dependent apparently on some quirks in our network and relationships between machines.  Am looking more closely into the issue.

-----Original Message-----
From: mpich-discuss-bounces at mcs.anl.gov [mailto:mpich-discuss-bounces at mcs.anl.gov]On Behalf Of Jayesh Krishna
Sent: Tuesday, November 18, 2008 8:50 AM
To: 'Manal Helal'
Cc: mpich-discuss at mcs.anl.gov
Subject: Re: [mpich-discuss] need to compile unix code as windows exe



Hi,
        Please find my comments below,

>> ...the file "libmpi.a" and "libfmpich2g.a" in "C:\Program Files\MPICH2\lib" are 0kb files ...
 The gcc libs should not be 0kb in size. There is something wrong with your installation of MPICH2. I recommend that you uninstall your current version of MPICH2, reboot your machine (so that you don't have any MPI programs running in the bg), install the latest stable version (1.0.8) of MPICH2.

>> ...Credentials for Manal rejected connecting to mhelallpt-xp Aborting: Unable to connect to mhelallpt-xp ...
 You have not registered your username/password correctly with mpiexec. You should run "mpiexec -register" and register your username/password (Run "mpiexec -validate" to make sure that the registered username/password works)

Regards,
Jayesh
-----Original Message-----
From: Manal Helal [ mailto:manalorama at gmail.com]
Sent: Tuesday, November 18, 2008 5:00 AM
To: Jayesh Krishna
Cc: mpich-discuss at mcs.anl.gov; 'Dmitri Chubarov'
Subject: Re: [mpich-discuss] need to compile unix code as windows exe

Hello

Thank you for your help, but I still need help to get my program running on a windows cluster please. I followed both approaches as mentioned before,

The first is trying to configure mpich2-1.0.8 to use mpicc on cygwin, gives the following errors on cygwin on Windows XP 2002 with SP 3
*****************************************
$ ./configure
./configure: line 12: $'\r': command not found
./configure: line 23: syntax error near unexpected token `$'in\r''
'/configure: line 23: `  case `(set -o) 2>/dev/null` in
*****************************************

the second is using the cygwin gcc and linking with lmpich, and that's how it goes:

some information that might help:
the file "libmpi.a" and "libfmpich2g.a" in "C:\Program Files\MPICH2\lib"
are 0kb files, I have "libmpichd.a" as a 1061 Kb file in the same folder, and "libmpich.a" as 1058 KB, and 'libmpicxx.a" as 199 kb file, "mpi.lib" is a 126 kb file, and "fmpich2.lib" as 130 kb file.

the gcc version is
*****************************************
$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with:
/usr/build/package/orig/test.respin/gcc-3.4.4-3/configure --ver bose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libe xecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-langu ages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext -- enable-version-specific-runtime-libs --without-x --enable-libgcj
--disable-java-
awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-thre ads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptio ns --enable-hash-synchronization --enable-libstdcxx-debug Thread model: posix gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
*****************************************

compiling a simple program like :
*****************************************
#include <stdio.h>
#include <math.h>
#include <mpi.h>

int main(int argc, char **argv) {
    int myProcid, ClusterSize;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &myProcid);
    MPI_Comm_size(MPI_COMM_WORLD, &ClusterSize);
    printf ("Hello World Process %d / %d.\n", myProcid, ClusterSize);
    //printf ("the ceill(10.55) = %lld\n" , ceill(10.55));
    getc (stdin);
    MPI_Finalize();
    return 0;
}
*****************************************
It is compiled as:
*****************************************
$ gcc hello.c -I "/cygdrive/f/Program Files/MPICH2/include" -L "/cygdrive/f/Program Files/MPICH2/lib" -lmpich -lm -o hello.exe

creates the exe file with no errors, however, when I try to execute it using the mpich2 for windows "wmpiexec" Interface with 4 processes all on the current node and showing different windows, the windows don't come up, command shown is:
*****************************************
"C:\Program Files\MPICH2\bin\mpiexec.exe" -n 4  -noprompt "C:\cygwin\home\user\hello.exe"
*****************************************

copying the same command to cygwin, I get the errors shown:
*****************************************
$ "/cygdrive/f/Program Files/MPICH2/bin/mpiexec.exe" -n 4  -noprompt hello.exe Credentials for Manal rejected connecting to mhelallpt-xp
Aborting: Unable to connect to mhelallpt-xp
*****************************************


However, compiling my mpi program using the following command in a make
file:
*****************************************
$gcc "/cygdrive/f/Program Files/MPICH2/include" -L "/cygdrive/f/Program Files/MPICH2/lib" -lmpich -lm  main.c

where the main.o is:
main.o :  main.c main.h utils.h globals.h
    gcc -g -I "/cygdrive/f/Program Files/MPICH2/include" -L "/cygdrive/f/Program Files/MPICH2/lib" main.c -lmpich -o main.o
*****************************************


I get the following errors:
*****************************************
/home/user/proj/main.c:112: undefined reference to `_MPI_Barrier'
/home/user/proj/main.c:174: undefined reference to `_MPI_Wtime'
/home/user/proj/main.c:242: undefined reference to `_MPI_Send'
/home/user/proj/main.c:251: undefined reference to `_MPI_Recv'
/home/user/proj/main.c:314: undefined reference to `_MPI_Init'
/home/user/proj/main.c:316: undefined reference to `_MPI_Comm_rank'
/home/user/proj/main.c:318: undefined reference to `_MPI_Comm_size'
/home/user/proj/main.c:320: undefined reference to `_MPI_Comm_group'
/home/user/proj/main.c:321: undefined reference to `_MPI_Comm_create'
/home/user/proj/main.c:366: undefined reference to `_MPI_Finalize'
/home/user/proj/main.c:3254: undefined reference to `_MPI_Waitall'
/home/user/proj/main.c:3379: undefined reference to `_MPI_Isend'
/home/user/proj/main.c:3514: undefined reference to `_MPI_Iprobe'
/home/user/proj/main.c:3520: undefined reference to `_MPI_Recv'
*****************************************

It is basically all MPI calls I make, and what I couldn't understand, why the "MPI_Init" "MPI_Comm_rank", "MPI_Comm_size" and "MPI_Finalize"
was found on the test program, and not found in the main program.

when I compile using the above command without the make file, I get more errors like:

*****************************************
main.c:165: error: `MPI_Status' undeclared (first use in this function)
main.c:242: error: `MPI_INT' undeclared (first use in this function)
main.c:302: error: `MPI_Group' undeclared (first use in this function)
main.c:316: error: `MPI_COMM_WORLD' undeclared (first use in this function)
main.c:3432: error: `MPI_LONG' undeclared (first use in this function)
main.c:3435: error: `MPI_LONG_LONG' undeclared (first use in this function)
main.c:3485: error: `MPI_Status' undeclared (first use in this function)
main.c:3514: error: `MPI_ANY_SOURCE' undeclared (first use in this function)
main.c:3514: error: `MPI_ANY_TAG' undeclared (first use in this function)
main.c:3520: error: `MPI_LONG' undeclared (first use in this function)
main.c:3533: error: `MPI_LONG_LONG' undeclared (first use in this function)
main.c:3205: error: `MPI_SUCCESS' undeclared (first use in this function)
main.c:3209: error: `MPI_ERR_COMM' undeclared (first use in this function)
main.c:3213: error: `MPI_ERR_TYPE' undeclared (first use in this function)
main.c:3217: error: `MPI_ERR_COUNT' undeclared (first use in this function)
main.c:3221: error: `MPI_ERR_TAG' undeclared (first use in this function)
main.c:3225: error: `MPI_ERR_RANK' undeclared (first use in this function)
*****************************************

I also  get simillar errors to all long long functions which are not found on cygwin when I searched or used the "man" command like the
following:

*****************************************
/home/user/proj/main.c:907: undefined reference to `_sqrtl'
/home/user/proj/main.c:1743: undefined reference to `_powl'
/home/user/proj/main.c:2006: undefined reference to `_ceill'
/home/user/proj/main.c:2035: undefined reference to `_floorl'
*****************************************
I appreciate your help a lot,

Kind Regards,

Manal


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20081118/4ab30bde/attachment.htm>


More information about the mpich-discuss mailing list