Michael --

Sorry for the delay in replying.

Many thanks for your report! You are exactly right -- our types are wrong and will not match in the F90 bindings. I have committed a fix to the trunk for this (it involved changing some types in mpif.h and adding another interface function for MPI_COMM_SPAWN_MULTIPLE so that MPI_ARGVS_NULL could be unambiguously matched).

It was also just pointed out to us on this list the other day that we are missing all the places where MPI choice buffers could be of type CHARACTER (e.g., MPI_SEND). We're working on fixing that -- it's just a bunch of menial labor to fix.

I'm hesitant to put these fixes in the 1.0.x series simply because we're trying to finish that series and advance towards 1.1. Would you be amenable to using a 1.1.x snapshot? My commit should show up in any 1.1 snapshot >= r9198.


On Mar 1, 2006, at 12:30 PM, Michael Kluskens wrote:


On Mar 1, 2006, at 9:56 AM, George Bosilca wrote:

Now I look into this problem more and your right it's a missing
interface. Somehow, it didn't get compiled.

 From "openmpi-1.0.1/ompi/mpi/f90/mpi-f90-interfaces.h" the interface
says:

subroutine MPI_Comm_spawn(command, argv, maxprocs, info, root, &
         comm, intercomm, array_of_errcodes, ierr)
   use mpi_kinds
   character(len=*), intent(in) :: command
   character(len=*), dimension(*), intent(in) :: argv
   integer, intent(in) :: maxprocs
   integer, intent(in) :: info
   integer, intent(in) :: root
   integer, intent(in) :: comm
   integer, intent(out) :: intercomm
   integer, dimension(*), intent(out) :: array_of_errcodes
   integer, intent(out) :: ierr
end subroutine MPI_Comm_spawn

My call is (mostly from the Using MPI-2 book):
   call MPI_Comm_spawn('subprocess', MPI_ARGV_NULL, universe_size-1,
MPI_INFO_NULL, 0, &
     MPI_COMM_WORLD, slavecomm, MPI_ERRCODES_IGNORE, ierr )

looking at "mpif.h" included by mpi_kinds.f90:

double complex  MPI_ARGV_NULL
integer MPI_INFO_NULL
integer MPI_COMM_WORLD
double complex MPI_ERRCODES_IGNORE

What I don't understand how the "double complex" MPI_ARGV_NULL could
work with the "character(len=*), dimension(*), intent(in) :: argv"
interface or how the "double complex" MPI_ERRCODES_IGNORE could work
with the "integer, dimension(*), intent(out) :: array_of_errcodes"
interface.

I have the following for my variables:

   integer :: ierr,slavecomm
   integer  (kind=MPI_ADDRESS_KIND) :: universe_size

My usage of  MPI_ADDRESS_KIND and MPI_Comm_spawn is based on pages
236 and 244 of "Using MPI-2"

I'd to resolve the specific error involving the f90 interfaces so I
can continue to "USE MPI" in order to check my interface errors
quickly as I move forward on my project.

Michael


_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users


--
{+} Jeff Squyres
{+} The Open MPI Project
{+} http://www.open-mpi.org/


Reply via email to