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);
MPI_Win_free(&data_win);
free(data);
MPI_Finalize();
return 0;
}
I receive the following error message:
[flowerpot.osl.iu.edu:13803] *** An error occurred in MPI_Accumlate
[flowerpot.osl.iu.edu:13803] *** on win 3
[flowerpot.osl.iu.edu:13803] *** MPI_ERR_INTERN: internal error
[flowerpot.osl.iu.edu:13803] *** 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