Selaa lähdekoodia

Reorganize fields of struct starpu_task to reduce memory footprint

Samuel Thibault 11 vuotta sitten
vanhempi
commit
1ec62596e8
2 muutettua tiedostoa jossa 31 lisäystä ja 27 poistoa
  1. 29 27
      include/starpu_task.h
  2. 2 0
      src/core/workers.c

+ 29 - 27
include/starpu_task.h

@@ -119,6 +119,8 @@ struct starpu_codelet
 
 struct starpu_task
 {
+	const char *name;
+
 	struct starpu_codelet *cl;
 
 	/* TODO: remove someday, this is costly */
@@ -132,61 +134,61 @@ struct starpu_task
 
 	void *cl_arg;
 	size_t cl_arg_size;
-	unsigned cl_arg_free;
 
 	void (*callback_func)(void *);
 	void *callback_arg;
 	/* must StarPU release callback_arg ? - 0 by default */
-	unsigned callback_arg_free;
 
 	void (*prologue_callback_func)(void *);
 	void *prologue_callback_arg;
-	/* must StarPU release prologue_callback_arg ? - 0 by default */
-	unsigned prologue_callback_arg_free;
 
 	void (*prologue_callback_pop_func)(void *);
 	void *prologue_callback_pop_arg;
-	/* must StarPU release prologue_callback_pop_arg ? - 0 by default */
-	unsigned prologue_callback_pop_arg_free;
 
-	unsigned use_tag;
 	starpu_tag_t tag_id;
 
-	unsigned sequential_consistency;
+	unsigned cl_arg_free:1;
+	unsigned callback_arg_free:1;
+	/* must StarPU release prologue_callback_arg ? - 0 by default */
+	unsigned prologue_callback_arg_free:1;
+	/* must StarPU release prologue_callback_pop_arg ? - 0 by default */
+	unsigned prologue_callback_pop_arg_free:1;
 
-	unsigned synchronous;
-	int priority;
+	unsigned use_tag:1;
+	unsigned sequential_consistency:1;
+	unsigned synchronous:1;
+	unsigned execute_on_a_specific_worker:1;
 
-	unsigned execute_on_a_specific_worker;
-	unsigned workerid;
+	unsigned detach:1;
+	unsigned destroy:1;
+	unsigned regenerate:1;
 
-	starpu_task_bundle_t bundle;
+	unsigned scheduled:1;
+
+	unsigned int mf_skip:1;
 
-	int detach;
-	int destroy;
-	int regenerate;
+	unsigned workerid;
+
+	int priority;
 
 	enum starpu_task_status status;
 
+	int magic;
+
+	unsigned sched_ctx;
+	int hypervisor_tag;
+
+	starpu_task_bundle_t bundle;
+
 	struct starpu_profiling_task_info *profiling_info;
 
+	double flops;
 	double predicted;
 	double predicted_transfer;
 
-	unsigned int mf_skip;
-
 	struct starpu_task *prev;
 	struct starpu_task *next;
 	void *starpu_private;
-	int magic;
-
-	const char *name;
-
-	unsigned sched_ctx;
-	int hypervisor_tag;
-	double flops;
-
-	unsigned scheduled;
 };
 
 #define STARPU_TASK_INITIALIZER 			\

+ 2 - 0
src/core/workers.c

@@ -967,6 +967,8 @@ int starpu_initialize(struct starpu_conf *user_conf, int *argc, char ***argv)
 
 	int ret;
 
+	printf("%u %u\n", sizeof(struct starpu_task), sizeof(struct _starpu_job));
+
 #ifdef STARPU_SIMGRID
 	_starpu_simgrid_init();
 #else