+#ifdef USE_WIN_ALLOCATE
+ MPI_Win_allocate(nproc * sizeof(int), sizeof(int), MPI_INFO_NULL,
+ MPI_COMM_WORLD, &win_buf, &win);
+#else
+ MPI_Alloc_mem(nproc * sizeof(int), MPI_INFO_NULL, &win_buf);
+ MPI_Win_create(win_buf, nproc * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win);
+#endif
+ MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win);