|
@@ -1619,14 +1619,20 @@ get_better_disk_can_accept_size(starpu_data_handle_t handle, unsigned node)
|
|
|
/* if we can write on the disk */
|
|
|
if (_starpu_get_disk_flag(i) != STARPU_DISK_NO_RECLAIM)
|
|
|
{
|
|
|
- /* only time can change between disk <-> main_ram
|
|
|
- * and not between main_ram <-> worker if we compare diks*/
|
|
|
- /* TODO: NUMA nodes */
|
|
|
- double time_tmp = starpu_transfer_predict(i, STARPU_MAIN_RAM, _starpu_data_get_size(handle));
|
|
|
- if (target == -1 || time_disk > time_tmp)
|
|
|
+ unsigned numa;
|
|
|
+ unsigned nnumas = _starpu_get_nb_numa_nodes();
|
|
|
+ for (numa = 0; numa < nnumas; numa++)
|
|
|
{
|
|
|
- target = i;
|
|
|
- time_disk = time_tmp;
|
|
|
+ if (numa != i && numa != node)
|
|
|
+ {
|
|
|
+ /* TODO : check if starpu_transfer_predict(node, i,...) is the same */
|
|
|
+ double time_tmp = starpu_transfer_predict(node, numa, _starpu_data_get_size(handle)) + starpu_transfer_predict(i, numa, _starpu_data_get_size(handle));
|
|
|
+ if (target == -1 || time_disk > time_tmp)
|
|
|
+ {
|
|
|
+ target = i;
|
|
|
+ time_disk = time_tmp;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|