ソースを参照

Fix setting modes in STARPU_DATA_MODE_ARRAY case with more than STARPU_NMAXBUFS buffers

Samuel Thibault 10 年 前
コミット
5756a5b4bf
共有2 個のファイルを変更した4 個の追加4 個の削除を含む
  1. 2 2
      include/starpu_task.h
  2. 2 2
      src/util/starpu_task_insert_utils.c

+ 2 - 2
include/starpu_task.h

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010-2014  Université de Bordeaux
+ * Copyright (C) 2010-2015  Université de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2014  Centre National de la Recherche Scientifique
  * Copyright (C) 2011  Télécom-SudParis
  * Copyright (C) 2011, 2014  INRIA
@@ -249,7 +249,7 @@ struct starpu_task
 						(((task)->dyn_modes) ? (task)->dyn_modes[i] : (task)->modes[i]) : \
 						STARPU_CODELET_GET_MODE((task)->cl, i) )
 #define STARPU_TASK_SET_MODE(task, mode, i) do { \
-					if ((task)->cl->nbuffers == STARPU_VARIABLE_NBUFFERS) \
+					if ((task)->cl->nbuffers == STARPU_VARIABLE_NBUFFERS || (task)->cl->nbuffers > STARPU_NMAXBUFS) \
 						if ((task)->dyn_modes) (task)->dyn_modes[i] = mode; else (task)->modes[i] = mode; \
 					else \
 						STARPU_CODELET_SET_MODE((task)->cl, mode, i); \

+ 2 - 2
src/util/starpu_task_insert_utils.c

@@ -254,7 +254,7 @@ void _starpu_task_insert_create(struct starpu_codelet *cl, struct starpu_task **
 			_starpu_task_insert_check_nb_buffers(cl, task, &allocated_buffers, current_buffer);
 
 			STARPU_TASK_SET_HANDLE((*task), handle, current_buffer);
-			if (cl->nbuffers == STARPU_VARIABLE_NBUFFERS)
+			if (cl->nbuffers == STARPU_VARIABLE_NBUFFERS || (cl->nbuffers > STARPU_NMAXBUFS && !cl->dyn_modes))
 				STARPU_TASK_SET_MODE(*task, mode, current_buffer);
 			else if (STARPU_CODELET_GET_MODE(cl, current_buffer))
 			{
@@ -308,7 +308,7 @@ void _starpu_task_insert_create(struct starpu_codelet *cl, struct starpu_task **
 				{
 					(*task)->dyn_modes[i] = descrs[i].mode;
 				}
-				else if (cl->nbuffers == STARPU_VARIABLE_NBUFFERS)
+				else if (cl->nbuffers == STARPU_VARIABLE_NBUFFERS || (cl->nbuffers > STARPU_NMAXBUFS && !cl->dyn_modes))
 					STARPU_TASK_SET_MODE(*task, descrs[i].mode, current_buffer);
 				else if (STARPU_CODELET_GET_MODE(cl, current_buffer))
 				{