瀏覽代碼

resize the insert_task args parameters (pass to long int)

Andra Hugo 11 年之前
父節點
當前提交
eddb5d1be9
共有 3 個文件被更改,包括 24 次插入27 次删除
  1. 4 4
      examples/callback/prologue.c
  2. 14 14
      include/starpu_task_util.h
  3. 6 9
      src/util/starpu_insert_task_utils.c

+ 4 - 4
examples/callback/prologue.c

@@ -51,8 +51,8 @@ void callback_func(void *callback_arg)
 
 void prologue_callback_func(void *callback_arg)
 {
-	int *x = (int*)callback_arg;
-	printf("x = %d\n", *x);
+	double *x = (double*)callback_arg;
+	printf("x = %lf\n", *x);
 }
 
 
@@ -78,8 +78,8 @@ int main(int argc, char **argv)
 	if (ret == -ENODEV) goto enodev;
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
-	int *x = (int*)malloc(sizeof(int));
-	*x = -999;
+	double *x = (double*)malloc(sizeof(double));
+	*x = -999.0;
 	int ret2 = starpu_insert_task(&cl,
 				      STARPU_RW, handle,
 				      STARPU_PROLOGUE_CALLBACK, prologue_callback_func,

+ 14 - 14
include/starpu_task_util.h

@@ -31,20 +31,20 @@ extern "C"
 
 void starpu_create_sync_task(starpu_tag_t sync_tag, unsigned ndeps, starpu_tag_t *deps, void (*callback)(void *), void *callback_arg);
 
-#define STARPU_VALUE		 (1<<19)
-#define STARPU_CALLBACK		 (1<<20)
-#define STARPU_CALLBACK_WITH_ARG (1<<21)
-#define STARPU_CALLBACK_ARG	 (1<<22)
-#define STARPU_PRIORITY		 (1<<23)
-#define STARPU_EXECUTE_ON_NODE	 (1<<24)
-#define STARPU_EXECUTE_ON_DATA	 (1<<25)
-#define STARPU_DATA_ARRAY        (1<<26)
-#define STARPU_TAG               (1<<27)
-#define STARPU_HYPERVISOR_TAG	 (1<<28)
-#define STARPU_FLOPS	         (1<<29)
-#define STARPU_SCHED_CTX	 (1<<30)
-#define STARPU_PROLOGUE_CALLBACK   (1<<31)
-#define STARPU_PROLOGUE_CALLBACK_ARG (1ULL<<32)
+#define STARPU_VALUE		 (1L<<19)
+#define STARPU_CALLBACK		 (1L<<20)
+#define STARPU_CALLBACK_WITH_ARG (1L<<21)
+#define STARPU_CALLBACK_ARG	 (1L<<22)
+#define STARPU_PRIORITY		 (1L<<23)
+#define STARPU_EXECUTE_ON_NODE	 (1L<<24)
+#define STARPU_EXECUTE_ON_DATA	 (1L<<25)
+#define STARPU_DATA_ARRAY        (1L<<26)
+#define STARPU_TAG               (1L<<27)
+#define STARPU_HYPERVISOR_TAG	 (1L<<28)
+#define STARPU_FLOPS	         (1L<<29)
+#define STARPU_SCHED_CTX	 (1L<<30)
+#define STARPU_PROLOGUE_CALLBACK   (1L<<31)
+#define STARPU_PROLOGUE_CALLBACK_ARG (1L<<32)
 
 int starpu_insert_task(struct starpu_codelet *cl, ...);
 

+ 6 - 9
src/util/starpu_insert_task_utils.c

@@ -45,14 +45,14 @@ void starpu_task_insert_callback_wrapper(void *_cl_arg_wrapper)
 
 size_t _starpu_insert_task_get_arg_size(va_list varg_list)
 {
-	int arg_type;
+	long int arg_type;
 	size_t arg_buffer_size;
 
 	arg_buffer_size = 0;
 
 	arg_buffer_size += sizeof(char);
 
-	while ((arg_type = va_arg(varg_list, int)) != 0)
+	while ((arg_type = va_arg(varg_list, long int)) != 0)
 	{
 		if (arg_type & STARPU_R || arg_type & STARPU_W || arg_type & STARPU_SCRATCH || arg_type & STARPU_REDUX)
 		{
@@ -130,7 +130,7 @@ size_t _starpu_insert_task_get_arg_size(va_list varg_list)
 
 int _starpu_codelet_pack_args(void **arg_buffer, size_t arg_buffer_size, va_list varg_list)
 {
-	int arg_type;
+	long int arg_type;
 	unsigned current_arg_offset = 0;
 	unsigned char nargs = 0;
 	char *_arg_buffer;
@@ -142,7 +142,7 @@ int _starpu_codelet_pack_args(void **arg_buffer, size_t arg_buffer_size, va_list
 	/* We will begin the buffer with the number of args (which is stored as a char) */
 	current_arg_offset += sizeof(char);
 
-	while((arg_type = va_arg(varg_list, int)) != 0)
+	while((arg_type = va_arg(varg_list, long int)) != 0)
 	{
 		if (arg_type & STARPU_R || arg_type & STARPU_W || arg_type & STARPU_SCRATCH || arg_type & STARPU_REDUX)
 		{
@@ -238,7 +238,7 @@ int _starpu_codelet_pack_args(void **arg_buffer, size_t arg_buffer_size, va_list
 
 int _starpu_insert_task_create_and_submit(void *arg_buffer, size_t arg_buffer_size, struct starpu_codelet *cl, struct starpu_task **task, va_list varg_list)
 {
-	int arg_type;
+	long int arg_type;
 	unsigned current_buffer = 0;
 
 	struct insert_task_cb_wrapper *cl_arg_wrapper = (struct insert_task_cb_wrapper *) malloc(sizeof(struct insert_task_cb_wrapper));
@@ -251,7 +251,7 @@ int _starpu_insert_task_create_and_submit(void *arg_buffer, size_t arg_buffer_si
 
 	prologue_cl_arg_wrapper->callback_func = NULL;
 
-	while((arg_type = va_arg(varg_list, int)) != 0)
+	while((arg_type = va_arg(varg_list, long int)) != 0)
 	{
 		if (arg_type & STARPU_R || arg_type & STARPU_W || arg_type & STARPU_SCRATCH || arg_type & STARPU_REDUX)
 		{
@@ -322,11 +322,8 @@ int _starpu_insert_task_create_and_submit(void *arg_buffer, size_t arg_buffer_si
 		else if (arg_type==STARPU_PROLOGUE_CALLBACK)
 		{
 			void (*callback_func)(void *);
-			void *callback_arg;
 			callback_func = va_arg(varg_list, _starpu_callback_func_t);
-			callback_arg = va_arg(varg_list, void *);
 			prologue_cl_arg_wrapper->callback_func = callback_func;
-			prologue_cl_arg_wrapper->callback_arg = callback_arg;
 		}
 		else if (arg_type==STARPU_PROLOGUE_CALLBACK_ARG)
 		{