Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: [OMPI users] MPI_ERR_INTERN with MPI_Accumulate using MPI_REPLACE
From: Jeremiah Willcock (jewillco_at_[hidden])
Date: 2011-01-06 15:58:32

When I run the following program on one rank using Open MPI 1.5:

#include <mpi.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char** argv) {
   int size = 128;
   unsigned char one = 1;
   MPI_Init(&argc, &argv);
   unsigned char* data = (unsigned char*)malloc(size * sizeof(unsigned char));
   memset(data, 0, size * sizeof(unsigned char));
   MPI_Win data_win;
   MPI_Win_create((void*)data, size * sizeof(unsigned char), sizeof(unsigned char), MPI_INFO_NULL, MPI_COMM_WORLD, &data_win);
   MPI_Win_fence(0, data_win);
   MPI_Accumulate((void*)&one, 1, MPI_UNSIGNED_CHAR, 0, 0, 1, MPI_UNSIGNED_CHAR, MPI_REPLACE, data_win);
   MPI_Win_fence(0, data_win);
   return 0;

I receive the following error message:

[] *** An error occurred in MPI_Accumlate
[] *** on win 3
[] *** MPI_ERR_INTERN: internal error
[] *** MPI_ERRORS_ARE_FATAL (your MPI job will
now abort)

I am running on 64-bit x86 Linux. The code is sensitive to the value of
"size" (smaller values such as 64 do not cause errors). Is this an issue
that is fixed in OMPI 1.5.1? Is it known otherwise?

-- Jeremiah Willcock