Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] testsome returns negative indices
From: Ross Boylan (ross_at_[hidden])
Date: 2014-03-21 12:01:55


On Fri, 2014-03-21 at 14:11 +0000, Jeff Squyres (jsquyres) wrote:
> Is that C or R code?
C.
>
> If it's R, I think the next step would be to check the R wrapper for MPI_Testsome and see what is actually being returned by OMPI in C before it gets converted to R. I'm afraid I don't know R, so I can't really comment on the syntax / correctness of your code snipit.
>
> If it's C -- which I don't think it is, but it *could* be...? -- I would need to understand your syntax in calling MPI_Testsome better; e.g., what's &INTEGER(foo)[x]?
allocVector(INTSXP, countn+1) allocates an R vector of integers.
INTEGER(indices) returns the data portion of that structure, where the
actual integers go. The &...[0] get the address of the first location.
PROTECT keeps things from being garbage-collected by R.

The allocation of indices is a cheat: the first location is used for the
outcount, and the following locations get the actual indices.

status is a pointer to an array of MPI status objects,

The indices should be small integers, shouldn't they? I'm also getting
some large values back.

Ross
>
> On Mar 20, 2014, at 8:39 PM, Ross Boylan <ross_at_[hidden]> wrote:
>
> > MPI_Testsome seems to have returned successfully, with a positive outcount, and yet given me a negative index, -4432. Can anyone help me understand what's going on?
> >
> > The call is from R, and so there might be a translation issue. My first thought was that it might be 32 vs 64 bit integers, but both OMPI and R seem to be using the C int type for the integers.
> >
> > Here's the inner call:
> >
> > SEXP mpi_testsome(SEXP sexp_count){
> > int countn=INTEGER(sexp_count)[0];
> > SEXP indices;
> > PROTECT (indices = allocVector(INTSXP, countn+1));
> > mpi_errhandler(MPI_Testsome(countn, request, &INTEGER(indices)[0],
> > &INTEGER(indices)[1], status));
> > UNPROTECT(1);
> > return indices;
> > }
> >
> > SEXP is an R structure.
> >
> > OMPI 1.7.4.
> >
> > Ross Boylan
> >
> > _______________________________________________
> > users mailing list
> > users_at_[hidden]
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>