Sfoglia il codice sorgente

add NUMA when chosing the best disk

Corentin Salingue 8 anni fa
parent
commit
4ca8c278a5
1 ha cambiato i file con 13 aggiunte e 7 eliminazioni
  1. 13 7
      src/datawizard/memalloc.c

+ 13 - 7
src/datawizard/memalloc.c

@@ -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;
+						}
+					}
 				}
 			}
 		}