| 
					
				 | 
			
			
				@@ -719,7 +719,7 @@ void _starpu_simgrid_wait_tasks(int workerid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /* Task execution submitted by StarPU */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void _starpu_simgrid_submit_job(int workerid, int sched_ctx_id, struct _starpu_job *j, struct starpu_perfmodel_arch* perf_arch, double length, double energy, unsigned *finished) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void _starpu_simgrid_submit_job(int workerid, int sched_ctx_id, struct _starpu_job *j, struct starpu_perfmodel_arch* perf_arch STARPU_ATTRIBUTE_UNUSED, double length, double energy, unsigned *finished) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	struct starpu_task *starpu_task = j->task; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	double flops; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1286,12 +1286,8 @@ void _starpu_simgrid_count_ngpus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			int busid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			starpu_sg_host_t srchost, dsthost; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined(HAVE_SG_HOST_GET_ROUTE) || defined(HAVE_SG_HOST_ROUTE) || defined(sg_host_route) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			xbt_dynar_t route_dynar = xbt_dynar_new(sizeof(SD_link_t), NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			SD_link_t *route; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const SD_link_t *route; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SD_link_t link; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			int i, routesize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			int through; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			unsigned src2; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1313,23 +1309,28 @@ void _starpu_simgrid_count_ngpus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			sg_host_route(srchost, dsthost, route_dynar); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			routesize = xbt_dynar_length(route_dynar); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			route = xbt_dynar_to_array(route_dynar); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const SD_link_t *route = SD_route_get_list(srchost, dsthost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			routesize = SD_route_get_size(srchost, dsthost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			route = SD_route_get_list(srchost, dsthost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (i = 0; i < routesize; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				xbt_dynar_push(route_dynar, &route[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			free(route); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			/* If it goes through "Host", do not care, there is no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			 * direct transfer support */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			for (i = 0; i < routesize; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				xbt_dynar_get_cpy(route_dynar, i, &link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef HAVE_SG_LINK_GET_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					!strcmp(sg_link_get_name(route[i]), "Host") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					!strcmp(sg_link_get_name(link), "Host") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					!strcmp(sg_link_name(route[i]), "Host") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					!strcmp(sg_link_name(link), "Host") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (i < routesize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1337,10 +1338,11 @@ void _starpu_simgrid_count_ngpus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			through = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			for (i = 0; i < routesize; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				xbt_dynar_get_cpy(route_dynar, i, &link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef HAVE_SG_LINK_GET_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				name = sg_link_get_name(route[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				name = sg_link_get_name(link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				name = sg_link_name(route[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				name = sg_link_name(link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				size_t len = strlen(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if (!strcmp(" through", name+len-8)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1354,10 +1356,12 @@ void _starpu_simgrid_count_ngpus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				_STARPU_DEBUG("Didn't find through-link for %d->%d\n", src, dst); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			xbt_dynar_get_cpy(route_dynar, through, &link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef HAVE_SG_LINK_GET_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			name = sg_link_get_name(route[through]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			name = sg_link_get_name(link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			name = sg_link_name(route[through]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			name = sg_link_name(link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			/* 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1382,27 +1386,30 @@ void _starpu_simgrid_count_ngpus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				starpu_sg_host_t srchost2 = _starpu_simgrid_get_memnode_host(src2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				int routesize2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined(HAVE_SG_HOST_GET_ROUTE) || defined(HAVE_SG_HOST_ROUTE) || defined(sg_host_route) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				xbt_dynar_t route_dynar2 = xbt_dynar_new(sizeof(SD_link_t), NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				SD_link_t *route2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined(HAVE_SG_HOST_GET_ROUTE) || defined(HAVE_SG_HOST_ROUTE) || defined(sg_host_route) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef HAVE_SG_HOST_GET_ROUTE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				sg_host_get_route(srchost2, ramhost, route_dynar2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				sg_host_route(srchost2, ramhost, route_dynar2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				routesize2 = xbt_dynar_length(route_dynar2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				route2 = xbt_dynar_to_array(route_dynar2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				const SD_link_t *route2 = SD_route_get_list(srchost2, ramhost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				routesize2 = SD_route_get_size(srchost2, ramhost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (i = 0; i < routesize2; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					xbt_dynar_push(route_dynar2, &route2[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				free(route2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				for (i = 0; i < routesize2; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					xbt_dynar_get_cpy(route_dynar, i, &link); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifdef HAVE_SG_LINK_GET_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						!strcmp(name, sg_link_get_name(route2[i])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						!strcmp(name, sg_link_get_name(link)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						!strcmp(name, sg_link_name(route2[i])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						!strcmp(name, sg_link_name(link)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					{ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1410,15 +1417,10 @@ void _starpu_simgrid_count_ngpus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						ngpus++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined(HAVE_SG_HOST_GET_ROUTE) || defined(HAVE_SG_HOST_ROUTE) || defined(sg_host_route) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				free(route2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			_STARPU_DEBUG("%d->%d through %s, %u GPUs\n", src, dst, name, ngpus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			starpu_bus_set_ngpus(busid, ngpus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined(HAVE_SG_HOST_GET_ROUTE) || defined(HAVE_SG_HOST_ROUTE) || defined(sg_host_route) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			free(route); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |