Browse Source

first lines of documentation
updated comment

Simon Archipoff 12 years ago
parent
commit
3d50031385

+ 72 - 0
doc/doxygen/chapters/api/modularized_scheduler.doxy

@@ -0,0 +1,72 @@
+!\defgroup API_Modularized_Scheduler
+
+\struct _starpu_sched_node
+\ingroup API_Modularized_Scheduler
+This structure represent a scheduler module.
+
+\var _starpu_sched_node::push_task
+	this function push a task in the scheduler module.
+\var _starpu_sched_node::pop_task
+	this function pop a task from the scheduler module, the task returned by this function is executable by the caller if its a worker
+\var _starpu_sched_node::available
+	this function notify workers downstairs that a task is waiting for a pop
+\var _starpu_sched_node::estimated_load
+	this function is an heuristic to compute load of scheduler module
+\var _starpu_sched_node::estimated_execute_preds
+	this function compute executions prediction for a task
+\var _starpu_sched_node::nchilds
+	the number of modules downstairs
+\var _starpu_sched_node::childs
+	modules downstairs
+\var _starpu_sched_node::workers
+	this member contain the set of underlaying workers
+\var _starpu_sched_node::is_homogeneous
+	this is set to true iff all underlaying workers are the same
+\var _starpu_sched_node::data
+	data used by the scheduler module
+\var _starpu_sched_node::fathers
+	the array of scheduler module above indexed by scheduling context index
+\var _starpu_sched_node::init_data
+	this function is called after all the scheduler is created and should init data member
+\var _starpu_sched_node::deinit_data
+	this function is called just before _starpu_sched_node_destroy
+\var _starpu_sched_node::obj
+	the hwloc object associed to scheduler module
+
+\struct _starpu_task_execute_preds
+\ingroup API_Modularized_Scheduler
+this structure containt predictions for a task and is filled by _starpu_sched_node::estimated_execute_preds
+\var _starpu_task_execute_preds::state
+	indicate status of prediction
+\var _starpu_task_execute_preds::archtype
+\var _starpu_task_execute_preds::impl
+	those members are revelant is state is PERF_MODEL or CALIBRATING and is set to best or uncalibrated archtype and implementation, respectively, or suitable values if state is NO_PERF_MODEL
+\var _starpu_task_execute_preds::expected_finish_time
+	expected finish time of worker without task
+\var _starpu_task_execute_preds::expected_length
+	expected compute time of task
+\var _starpu_task_execute_preds::expected_transfer_length
+	expected time for transfering data to worker's memory node
+\var _starpu_task_execute_preds::expected_power
+	expected power consumption for task
+
+\struct _starpu_sched_tree
+\ingroup API_Modularized_Scheduler
+\var _starpu_sched_tree::root
+	this is the entry module of the scheduler
+\var _starpu_sched_tree::workers
+	this is the set of workers available in this context, this value is used to mask workers in modules
+\var lock
+	this lock protect the worker member
+
+\fn struct _starpu_sched_node * _starpu_sched_node_create(void)
+    	   this function return an initialised scheduler module with default values
+\fn void _starpu_sched_node_destroy(struct _starpu_sched_node * node)
+    	 this function free data allocated by _starpu_sched_node_create, but dont call node->deinit_data(node)
+\fn void _starpu_sched_node_set_father(struct _starpu_sched_node * node, struct _starpu_sched_node * father_node, unsigned sched_ctx_id)
+    	 this function set node->fathers[sched_ctx_id] to father_node
+\fn void _starpu_sched_node_add_child(struct _starpu_sched_node* node, struct _starpu_sched_node * child)
+    	 this function add child to node->childs and increment nchilds as well
+	 and dont modify child->fathers
+\fn void _starpu_sched_node_remove_child(struct _starpu_sched_node * node, struct _starpu_sched_node * child)
+    	 this function remove child from node->childs and decrement nchilds

+ 2 - 4
src/sched_policies/node_sched.h

@@ -14,8 +14,7 @@ struct _starpu_sched_node
 			 struct starpu_task *);
 	struct starpu_task * (*pop_task)(struct _starpu_sched_node *,
 					 unsigned sched_ctx_id);
-//					 int (*predicate)(void * arg_pred, struct starpu_task * task),
-//					 void * arg_pred);
+
 	void (*available)(struct _starpu_sched_node *);
 	
 	/* this function is an heuristic that compute load of subtree */
@@ -90,10 +89,9 @@ struct _starpu_sched_tree
  */
 struct _starpu_sched_node * _starpu_sched_node_create(void);
 
-/* free memory allocated by _starpu_sched_node_create, it does not call node->destroy_node(node)*/
 void _starpu_sched_node_destroy(struct _starpu_sched_node * node);
 void _starpu_sched_node_set_father(struct _starpu_sched_node *node, struct _starpu_sched_node *father_node, unsigned sched_ctx_id);
-void _starpu_sched_node_add_child(struct _starpu_sched_node* node, struct _starpu_sched_node * child);
+void _starpu_sched_node_add_child(struct _starpu_sched_node * node, struct _starpu_sched_node * child);
 void _starpu_sched_node_remove_child(struct _starpu_sched_node * node, struct _starpu_sched_node * child);
 
 struct _starpu_task_execute_preds _starpu_sched_node_average_estimated_execute_preds(struct _starpu_sched_node * node, struct starpu_task * task);