A guess is that the win_lock call by a process may be finishing the comms posted by the raccumulate call from the other process.
And this would mean having max(0,undefined) as a result if memory is not initialized before win_lock_all.
I didn't find anything saying lock_all should be blocking/collective, so I'm not modifying it for so little.
Other guess: something's rotten with locks, as I think we don't check properly for them before posting rma calls.
MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &winbuf);
MPI_Win_create(winbuf, MAX_SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL,
MPI_COMM_WORLD, &window);
MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &winbuf);
MPI_Win_create(winbuf, MAX_SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL,
MPI_COMM_WORLD, &window);
-
- MPI_Win_lock_all(0, window);
+ MPI_Win_lock_all(0, window);
/* Test Raccumulate local completion with small data.
* Small data is always copied to header packet as immediate data. */
if (rank == 1) {
/* Test Raccumulate local completion with small data.
* Small data is always copied to header packet as immediate data. */
if (rank == 1) {