瀏覽代碼

clean function to choose target for reclaiming

Corentin Salingue 12 年之前
父節點
當前提交
21c26a7564
共有 1 個文件被更改,包括 20 次插入21 次删除
  1. 20 21
      src/datawizard/memalloc.c

+ 20 - 21
src/datawizard/memalloc.c

@@ -365,28 +365,27 @@ static size_t try_to_free_mem_chunk(struct _starpu_mem_chunk *mc, unsigned node)
 			if (handle->home_node != -1)
 				target = handle->home_node;
 			else
-				/* NULL-registered data, push to RAM if it's not what we are flushing */
-				if (node != 0)
-					target = 0;
-
-			size_t size_handle = _starpu_data_get_size(handle);
-			/* no place for datas, we push on disk */
-			if (node == 0 && target == -1)
-			{
-				target = get_better_disk_can_accept_size(handle);
-			}
-			/* try to push data to RAM if we can before to push on disk*/
-			else if (starpu_node_get_kind(target) == STARPU_DISK_RAM  &&
-				     (handle->per_node[STARPU_MAIN_RAM].allocated || 
-				      _starpu_memory_manager_test_allocate_size_(size_handle, STARPU_MAIN_RAM) == 1))
 			{
-				target = STARPU_MAIN_RAM;
-			}
-			/* no place in RAM */
-			else if ((starpu_node_get_kind(target) == STARPU_DISK_RAM || target == STARPU_MAIN_RAM) &&
-				 _starpu_memory_manager_test_allocate_size_(size_handle, STARPU_MAIN_RAM) != 1)
-			{
-				target = get_better_disk_can_accept_size(handle);
+				/* handle->home_node == -1 */
+				size_t size_handle = _starpu_data_get_size(handle);
+				/* no place for datas in RAM, we push on disk */
+				if (node == 0)
+				{
+					target = get_better_disk_can_accept_size(handle);
+				}
+				/* node != 0 */
+				/* try to push data to RAM if we can before to push on disk*/
+				else if (handle->per_node[STARPU_MAIN_RAM].allocated || 
+					  _starpu_memory_manager_test_allocate_size_(size_handle, STARPU_MAIN_RAM) == 1)
+				{
+					target = STARPU_MAIN_RAM;
+				}
+				/* no place in RAM */
+				else
+				{
+					target = get_better_disk_can_accept_size(handle);
+				}
+
 			}
 
 			if (target != -1) {