LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Stephen Scott (stephen.scott_at_[hidden])
Date: 2004-12-31 12:57:50


Dear all,

I am new to MPI so will give you some background to the problem
first....

(1) I want to test and debug an MPI program on a single CPU machine.
 From what I have read this should be possible.

(2) I am using the Intel Fortran compiler under Linux (RedHat WS). I
initially installed both the Intel Fortran and and Intel C++ compilers
and then reinstalled the latest version of LAM. This appears to have
worked and simple MPI hello world programs run without problem. I
invoke using the following command:

        $ mpirun -np 4 hello_world

Now onto the problem....

I am using the MPI_CART_CREATE routine to create my Cartesian (3D)
co-ordinate system. However, this fails at run time if I specify a
co-ordinate system that requires more than 1 process. The manner of
failure varies:

(a) If for example my co-ordinate system requires 8 (2*2*2) processes
and I invoke with less than 8 processes (mpirun -np 7 my_prog) the
program exits with the following error:

        MPI_Cart_create: invalid dimension argument: Invalid argument (rank 0,
MPI_COMM_WORLD)
        Rank (0, MPI_COMM_WORLD): Call stack within LAM:
        Rank (0, MPI_COMM_WORLD): - MPI_Cart_create()
        Rank (0, MPI_COMM_WORLD): - main()
         
------------------------------------------------------------------------
-----
        One of the processes started by mpirun has exited with a nonzero exit
        code. This typically indicates that the process finished in error.
        If your process did not finish in error, be sure to include a "return
        0" or "exit(0)" in your C code before exiting the application.

        PID 5039 failed on node n0 (127.0.0.1) with exit status 22.
         
------------------------------------------------------------------------
-----

(b) If I take the same example and invoke with the correct number of
processes (mpirun -np 8 my_prog) then the program 'hangs' at the point
where it attempts to create the Cartesian co-ordinate system.

(c) If I specify the co-ordinate system requires only a single process
and run with a single process there appears to be no problem (although
it defeats the point)

I don't believe that this is a problem with my use of MPI_CART_CREAT
but more likely something to do with my use of MPI on the single
processor. I would be more grateful if somebody could give me a few
pointers!

Thanks in advance!

Steve