Explorar o código

port r11308 from 1.1: record allocation size in trace

Samuel Thibault %!s(int64=12) %!d(string=hai) anos
pai
achega
e1501b5592
Modificáronse 3 ficheiros con 10 adicións e 9 borrados
  1. 6 6
      src/common/fxt.h
  2. 3 3
      src/datawizard/memalloc.c
  3. 1 0
      src/sched_policies/work_stealing_policy.c

+ 6 - 6
src/common/fxt.h

@@ -379,14 +379,14 @@ do {										\
 #define _STARPU_TRACE_USER_DEFINED_END		\
 	FUT_DO_PROBE1(_STARPU_FUT_USER_DEFINED_END, _starpu_gettid());
 
-#define _STARPU_TRACE_START_ALLOC(memnode)		\
-	FUT_DO_PROBE2(_STARPU_FUT_START_ALLOC, memnode, _starpu_gettid());
+#define _STARPU_TRACE_START_ALLOC(memnode, size)		\
+	FUT_DO_PROBE3(_STARPU_FUT_START_ALLOC, memnode, _starpu_gettid(), size);
 	
 #define _STARPU_TRACE_END_ALLOC(memnode)		\
 	FUT_DO_PROBE2(_STARPU_FUT_END_ALLOC, memnode, _starpu_gettid());
 
-#define _STARPU_TRACE_START_ALLOC_REUSE(memnode)		\
-	FUT_DO_PROBE2(_STARPU_FUT_START_ALLOC_REUSE, memnode, _starpu_gettid());
+#define _STARPU_TRACE_START_ALLOC_REUSE(memnode, size)		\
+	FUT_DO_PROBE3(_STARPU_FUT_START_ALLOC_REUSE, memnode, _starpu_gettid(), size);
 	
 #define _STARPU_TRACE_END_ALLOC_REUSE(memnode)		\
 	FUT_DO_PROBE2(_STARPU_FUT_END_ALLOC_REUSE, memnode, _starpu_gettid());
@@ -599,9 +599,9 @@ do {										\
 #define _STARPU_TRACE_WORKER_SLEEP_END		do {} while(0)
 #define _STARPU_TRACE_USER_DEFINED_START		do {} while(0)
 #define _STARPU_TRACE_USER_DEFINED_END		do {} while(0)
-#define _STARPU_TRACE_START_ALLOC(memnode)	do {} while(0)
+#define _STARPU_TRACE_START_ALLOC(memnode, size)	do {} while(0)
 #define _STARPU_TRACE_END_ALLOC(memnode)		do {} while(0)
-#define _STARPU_TRACE_START_ALLOC_REUSE(a)	do {} while(0)
+#define _STARPU_TRACE_START_ALLOC_REUSE(a, size)	do {} while(0)
 #define _STARPU_TRACE_END_ALLOC_REUSE(a)		do {} while(0)
 #define _STARPU_TRACE_START_MEMRECLAIM(memnode,is_prefetch)	do {} while(0)
 #define _STARPU_TRACE_END_MEMRECLAIM(memnode,is_prefetch)	do {} while(0)

+ 3 - 3
src/datawizard/memalloc.c

@@ -827,6 +827,7 @@ static starpu_ssize_t _starpu_allocate_interface(starpu_data_handle_t handle, st
 	unsigned attempts = 0;
 	starpu_ssize_t allocated_memory;
 	int ret;
+	starpu_ssize_t data_size = _starpu_data_get_size(handle);
 
 	_starpu_spin_checklocked(&handle->header_lock);
 
@@ -836,14 +837,13 @@ static starpu_ssize_t _starpu_allocate_interface(starpu_data_handle_t handle, st
 	/* perhaps we can directly reuse a buffer in the free-list */
 	uint32_t footprint = _starpu_compute_data_footprint(handle);
 
-	_STARPU_TRACE_START_ALLOC_REUSE(dst_node);
+	_STARPU_TRACE_START_ALLOC_REUSE(dst_node, data_size);
 	STARPU_PTHREAD_RWLOCK_WRLOCK(&mc_rwlock[dst_node]);
 
 	if (try_to_find_reusable_mem_chunk(dst_node, handle, replicate, footprint))
 	{
 		STARPU_PTHREAD_RWLOCK_UNLOCK(&mc_rwlock[dst_node]);
 		_starpu_allocation_cache_hit(dst_node);
-		starpu_ssize_t data_size = _starpu_data_get_size(handle);
 		return data_size;
 	}
 
@@ -856,7 +856,7 @@ static starpu_ssize_t _starpu_allocate_interface(starpu_data_handle_t handle, st
 		STARPU_ASSERT(handle->ops);
 		STARPU_ASSERT(handle->ops->allocate_data_on_node);
 
-		_STARPU_TRACE_START_ALLOC(dst_node);
+		_STARPU_TRACE_START_ALLOC(dst_node, data_size);
 		STARPU_ASSERT(replicate->data_interface);
 
 #if defined(STARPU_USE_CUDA) && defined(HAVE_CUDA_MEMCPY_PEER) && !defined(STARPU_SIMGRID)

+ 1 - 0
src/sched_policies/work_stealing_policy.c

@@ -347,6 +347,7 @@ int ws_push_task(struct starpu_task *task)
 	if(workers->init_iterator)
 		workers->init_iterator(workers, &it);
 	
+	/* !! C'est ballot de tout locker! */
 	while(workers->has_next(workers, &it))
 	{
 		worker = workers->get_next(workers, &it);