Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Trouble with MPI_Recv not filling buffer
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2013-07-08 10:45:20


On Jul 6, 2013, at 2:33 PM, Patrick Brückner <patrick.brueckner_at_[hidden]> wrote:

> data p;
> p.collection = malloc(sizeof(int)*N);
>
> printf("[%d] before receiving, data id %d at %d with direction %d\n",me,p.id,p.position,p.direction);
>
> MPI_Status data_status;
> MPI_Recv(&p,1,MPI_data,MPI_ANY_SOURCE,99,MPI_COMM_WORLD,&data_status);
> if(data_status.MPI_ERROR != MPI_SUCCESS) {
> printf("[%d] ERROR %d",me,data_status.MPI_ERROR);
> return -1;
> }
> printf("[%d] received status %d\n",data_status.MPI_ERROR);

I think you need "me" as the first printable argument in there.

> received++;
> printf("[%0d] received data %d (%d/%d) at position %d with direction %d\n",me,p.id,received,expected,p.position,p.direction);
> --- snip ---
>
> I get this output:
>
> [1] before receiving, data id -1665002272 at 0 with direction 0
> [0] received status 0
> [1] received data -1665002272 (1/2) at position 0 with direction 0
>
> I am wondering if you had any hint for me, why data is still not having the correct data but just the old, uninitialized values, and why I don't get any error.

My first guess would be that you created the MPI_data datatype incorrectly; that's what you should probably check into.

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/