| 
					
				 | 
			
			
				@@ -1,6 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /* StarPU --- Runtime system for heterogeneous multicore architectures. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Copyright (C) 2012-2013, 2015  CNRS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Copyright (C) 2012-2013, 2015, 2016  CNRS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * StarPU is free software; you can redistribute it and/or modify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * it under the terms of the GNU Lesser General Public License as published by 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -133,6 +133,20 @@ starpu_ssize_t starpu_memory_get_total(unsigned node) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return global_size[node]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+starpu_ssize_t starpu_memory_get_total_all_nodes() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	unsigned memnodes, i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	memnodes = starpu_memory_nodes_get_count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	starpu_ssize_t total = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for(i=0 ; i<memnodes ; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		starpu_ssize_t node = starpu_memory_get_total(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (node != -1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			total += node; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return total; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 starpu_ssize_t starpu_memory_get_available(unsigned node) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	starpu_ssize_t ret; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -143,6 +157,20 @@ starpu_ssize_t starpu_memory_get_available(unsigned node) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+starpu_ssize_t starpu_memory_get_available_all_nodes() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	unsigned memnodes, i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	memnodes = starpu_memory_nodes_get_count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	starpu_ssize_t avail = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for(i=0 ; i<memnodes ; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		starpu_ssize_t node = starpu_memory_get_available(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (node != -1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			avail += node; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return avail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void starpu_memory_wait_available(unsigned node, size_t size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	STARPU_PTHREAD_MUTEX_LOCK(&lock_nodes[node]); 
			 |