|
@@ -112,25 +112,33 @@ int main(int argc, char **argv)
|
|
|
int *xx;
|
|
|
|
|
|
starpu_mpi_recv(data[0], 0, 12, newcomm, NULL);
|
|
|
+ starpu_data_acquire(data[0], STARPU_RW);
|
|
|
xx = (int *)starpu_variable_get_local_ptr(data[0]);
|
|
|
+ starpu_data_release(data[0]);
|
|
|
FPRINTF(stderr, "[%d][%d] received %d\n", rank, newrank, *xx);
|
|
|
STARPU_ASSERT_MSG(x==*xx, "Received value %d is incorrect (should be %d)\n", *xx, x);
|
|
|
|
|
|
starpu_variable_data_register(&data[1], -1, (uintptr_t)NULL, sizeof(unsigned));
|
|
|
starpu_mpi_data_register_comm(data[1], 22, 0, newcomm);
|
|
|
starpu_mpi_recv(data[0], 0, 22, newcomm, NULL);
|
|
|
+ starpu_data_acquire(data[0], STARPU_RW);
|
|
|
xx = (int *)starpu_variable_get_local_ptr(data[0]);
|
|
|
+ starpu_data_release(data[0]);
|
|
|
FPRINTF(stderr, "[%d][%d] received %d\n", rank, newrank, *xx);
|
|
|
STARPU_ASSERT_MSG(x==*xx, "Received value %d is incorrect (should be %d)\n", *xx, x);
|
|
|
}
|
|
|
|
|
|
if (rank == 0)
|
|
|
{
|
|
|
+ starpu_data_acquire(data[2], STARPU_RW);
|
|
|
int value = *((int *)starpu_variable_get_local_ptr(data[2]));
|
|
|
+ starpu_data_release(data[2]);
|
|
|
FPRINTF_MPI(stderr, "sending value %d to %d and receiving from %d\n", value, 1, size-1);
|
|
|
starpu_mpi_send(data[2], 1, 44, MPI_COMM_WORLD);
|
|
|
starpu_mpi_recv(data[2], size-1, 44, MPI_COMM_WORLD, NULL);
|
|
|
+ starpu_data_acquire(data[2], STARPU_RW);
|
|
|
int *xx = (int *)starpu_variable_get_local_ptr(data[2]);
|
|
|
+ starpu_data_release(data[2]);
|
|
|
FPRINTF_MPI(stderr, "Value back is %d\n", *xx);
|
|
|
STARPU_ASSERT_MSG(*xx == value + (2*(size-1)), "Received value %d is incorrect (should be %d)\n", *xx, value + (2*(size-1)));
|
|
|
}
|
|
@@ -139,7 +147,9 @@ int main(int argc, char **argv)
|
|
|
int next = (rank == size-1) ? 0 : rank+1;
|
|
|
FPRINTF_MPI(stderr, "receiving from %d and sending to %d\n", rank-1, next);
|
|
|
starpu_mpi_recv(data[2], rank-1, 44, MPI_COMM_WORLD, NULL);
|
|
|
+ starpu_data_acquire(data[2], STARPU_RW);
|
|
|
int *xx = (int *)starpu_variable_get_local_ptr(data[2]);
|
|
|
+ starpu_data_release(data[2]);
|
|
|
*xx = *xx + 2;
|
|
|
starpu_mpi_send(data[2], next, 44, MPI_COMM_WORLD);
|
|
|
}
|