|
@@ -163,7 +163,12 @@ struct _starpu_data_request *_starpu_create_data_request(starpu_data_handle_t ha
|
|
|
if (handling_node == -1)
|
|
|
handling_node = STARPU_MAIN_RAM;
|
|
|
r->handling_node = handling_node;
|
|
|
- if (dst_replicate && handling_node == dst_replicate->memory_node)
|
|
|
+ if (is_write_invalidation)
|
|
|
+ {
|
|
|
+ r->peer_node = 0;
|
|
|
+ r->inout = _STARPU_DATA_REQUEST_IN;
|
|
|
+ }
|
|
|
+ else if (dst_replicate->memory_node == handling_node)
|
|
|
{
|
|
|
if (src_replicate)
|
|
|
r->peer_node = src_replicate->memory_node;
|
|
@@ -171,14 +176,9 @@ struct _starpu_data_request *_starpu_create_data_request(starpu_data_handle_t ha
|
|
|
r->peer_node = 0;
|
|
|
r->inout = _STARPU_DATA_REQUEST_IN;
|
|
|
}
|
|
|
- else if (src_replicate)
|
|
|
- {
|
|
|
- r->peer_node = dst_replicate->memory_node;
|
|
|
- r->inout = _STARPU_DATA_REQUEST_OUT;
|
|
|
- }
|
|
|
else
|
|
|
{
|
|
|
- r->peer_node = 0;
|
|
|
+ r->peer_node = dst_replicate->memory_node;
|
|
|
r->inout = _STARPU_DATA_REQUEST_OUT;
|
|
|
}
|
|
|
STARPU_ASSERT(starpu_node_get_kind(handling_node) == STARPU_CPU_RAM || _starpu_memory_node_get_nworkers(handling_node));
|