[mpich-discuss] mpich2-1.2.1 on Cygwin/Vista

gustav gustav at indiana.edu
Thu Dec 24 07:54:06 CST 2009


Well, it works. Finally. But with one little snag--see below.

    System: Windows Longhorn/Vista (not yet supported!) Ver 6.0 Build 6002 Service Pack 2
    uname:  CYGWIN_NT-6.0-WOW64 Crawley 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin
    CPU:    AMD Phenom X4 9550
    gcc:    gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
    MPI:    mpich2-1.2.1
    config: ./configure --prefix=/home/gustav/mpich2-1.2.1 --disable-sharedlibs --enable-timer-type=gettimeofday --with-device=ch3:ssm --with-thread-package=pthreads

An important step that must be emphasized for Cygwin users is that to
enable XSI IPCs (this activates shared memory too) Cygserver must be
run on the machine. See /usr/share/doc/Cygwin/cygserver.README for
more info. Also, the CYGWIN environmental variable must be set to
"server". This is described in the doc, as well.

With all this done and MPI compiled and installed, it works for a user
with admin privileges. Here's a brief demo:

    root at Crawley 515 # echo $CYGWIN
    server
    root at Crawley 516 # which mpdboot
    /home/gustav/mpich2-1.2.1/bin/mpdboot
    root at Crawley 517 # mpdboot --ncpus=4 --verbose
    running mpdallexit on Crawley
    LAUNCHED mpd on Crawley  via  
    RUNNING: mpd on Crawley
    root at Crawley 518 # mpirun -np 4 hostname
    Crawley
    Crawley
    Crawley
    Crawley
    root at Crawley 519 # mpirun -np 4 /home/gustav/src/MPI-tests/hellow2.exe 
    Crawley: hello world from process 0 of 4
    Crawley: hello world from process 1 of 4
    Crawley: hello world from process 2 of 4
    Crawley: hello world from process 3 of 4
    root at Crawley 520 # mpdallexit
    root at Crawley 521 # 

Alas, there is a little snag. User "root" has admin privileges. User
"gustav" does not. And here is what happens when this hapless
individual attempts the same:

    gustav at Crawley 556 $ echo $CYGWIN
    server
    gustav at Crawley 557 $ mpdboot --ncpus=4 --verbose
    running mpdallexit on Crawley
    LAUNCHED mpd on Crawley  via  
    RUNNING: mpd on Crawley
    gustav at Crawley 558 $ mpirun -np 4 hostname
    Crawley
    Crawley
    Crawley
    Crawley
    gustav at Crawley 559 $ mpirun -np 4 /home/gustav/src/MPI-tests/hellow2.exe 
    Assertion failed in file mpidi_pg.c at line 277: ((pg)->ref_count) == 0
    internal ABORT - process 0
    [cli_0]: aborting job:
    internal ABORT - process 0
    rank 0 in job 2  Crawley_50796   caused collective abort of all ranks
      exit status of rank 0: killed by signal 9 
    gustav at Crawley 560 $ mpdallexit
    gustav at Crawley 561 $ 

On the other hand, this little non-MPI program that tests shared memory
stuff still works for the non-admin user:

    gustav at Crawley 563 $ cat shm.c
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/shm.h>

    int main(int argc, char *argv[])
    {
	int shmid;

	if((shmid = shmget(IPC_PRIVATE, 1, IPC_CREAT)) == -1){
	    perror("shmget");
	}
	shmctl(shmid, IPC_RMID, NULL);
    }

    gustav at Crawley 564 $ cc -o shm shm.c
    gustav at Crawley 565 $ ./shm
    gustav at Crawley 566 $ echo $?
    0
    gustav at Crawley 567 $ 

Question: Why can't the non-admin user execute the MPI program?

Greetings to all,

-- 
Zdzislaw (Gustav) Meglicki, Office of the Vice President for Information
Technology, Indiana University, 601 E. Kirkwood Ave., Room 116, 
Bloomington, IN 47405-1223, USA, http://perth.ovpit.indiana.edu/gustav,
Ph: 812-856-5597 (o), 812-345-3284 (m), Fax: 812-855-3310/812-856-3147,



More information about the mpich-discuss mailing list