[mpich-discuss] MPI_Bsend

Wei-keng Liao wkliao at ece.northwestern.edu
Thu Nov 10 13:30:35 CST 2011


My program using MPI_Bsend failed due to insufficient space,
even though it did allocate exact size required, but not one byte more.
I wonder if this is an mpich bug, or MPI requires more space than needed.
If it is later, how much more is needed?

Wei-keng

error message:
$ mpiexec -machinefile=machinefile -l -n 4 a.out
[2] Fatal error in MPI_Bsend: Invalid buffer pointer, error stack:
[2] MPI_Bsend(182).......: MPI_Bsend(buf=0x7fff81048a50, count=1024, MPI_BYTE, dest=0, tag=2, MPI_COMM_WORLD) failed
[2] MPIR_Bsend_isend(318): Insufficient space in Bsend buffer; requested 1024; total buffer size is 4096

---- bsend.c -----------------------------
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>

int main(int argc, char **argv)
{
    int  i, rank, nprocs, src, bufsize;
    char buf[1024];
    void *bsend_buf = NULL;
    MPI_Status status;

    MPI_Init(&argc,&argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &nprocs);

    bufsize = 1024*4;
    // bufsize += 512; // if uncommented, the program runs successfully
    MPI_Buffer_attach(malloc(bufsize), bufsize);

    for (i=0; i<4; i++) {
        if (rank > 0)
            MPI_Bsend(buf, 1024, MPI_BYTE, 0, rank, MPI_COMM_WORLD);
        else {
            for (src=1; src<nprocs; src++)
                MPI_Recv(buf, 1024, MPI_BYTE, src, src, MPI_COMM_WORLD, &status);
        }
    }

    MPI_Buffer_detach(&bsend_buf, &bufsize);
    free(bsend_buf);
    MPI_Finalize();
    return 0;
}





More information about the mpich-discuss mailing list