Quellcode durchsuchen

Add STARPU_TAG parameter to starpu_insert_task.

Sylvain Henry vor 13 Jahren
Ursprung
Commit
4e64983f9f
2 geänderte Dateien mit 15 neuen und 0 gelöschten Zeilen
  1. 1 0
      include/starpu_task_util.h
  2. 14 0
      src/util/starpu_insert_task_utils.c

+ 1 - 0
include/starpu_task_util.h

@@ -43,6 +43,7 @@ void starpu_create_sync_task(starpu_tag_t sync_tag, unsigned ndeps, starpu_tag_t
 #define STARPU_EXECUTE_ON_NODE	(1<<9)	/* Used by MPI to define which task is going to execute the codelet */
 #define STARPU_EXECUTE_ON_DATA	(1<<10)	/* Used by MPI to define which task is going to execute the codelet */
 #define STARPU_DATA_ARRAY       (1<<11) /* Array of data handles */
+#define STARPU_TAG       (1<<12) /* Tag */
 
 /* Wrapper to create a task. */
 int starpu_insert_task(struct starpu_codelet *cl, ...);

+ 14 - 0
src/util/starpu_insert_task_utils.c

@@ -95,6 +95,10 @@ size_t _starpu_insert_task_get_arg_size(va_list varg_list)
 		{
 			(void)va_arg(varg_list, starpu_data_handle_t);
 		}
+		else if (arg_type==STARPU_TAG)
+		{
+			(void)va_arg(varg_list, starpu_tag_t);
+		}
 	}
 
 	va_end(varg_list);
@@ -165,6 +169,10 @@ int _starpu_codelet_pack_args(size_t arg_buffer_size, char **arg_buffer, va_list
 		{
 			(void)va_arg(varg_list, starpu_data_handle_t);
 		}
+		else if (arg_type==STARPU_TAG)
+		{
+			(void)va_arg(varg_list, starpu_tag_t);
+		}
 	}
 
 	if (nargs)
@@ -265,6 +273,12 @@ int _starpu_insert_task_create_and_submit(char *arg_buffer, size_t arg_buffer_si
 		{
 			(void)va_arg(varg_list, starpu_data_handle_t);
 		}
+		else if (arg_type==STARPU_TAG)
+		{
+			starpu_tag_t tag = va_arg(varg_list, starpu_tag_t);
+			(*task)->tag_id = tag;
+			(*task)->use_tag = 1;
+		}
 	}
 
 	va_end(varg_list);