浏览代码

Verify assumptions about the ordering of `starpu_perf_archtype' values.

Ludovic Courtès 13 年之前
父节点
当前提交
c0d0f8c2f2
共有 2 个文件被更改,包括 14 次插入1 次删除
  1. 13 0
      include/starpu_perfmodel.h
  2. 1 1
      src/core/perfmodel/perfmodel.c

+ 13 - 0
include/starpu_perfmodel.h

@@ -55,6 +55,19 @@ enum starpu_perf_archtype
 	STARPU_GORDON_DEFAULT = STARPU_OPENCL_DEFAULT + STARPU_MAXOPENCLDEVS
 };
 
+#if __STDC_VERSION__ > 199901L || defined __GNUC__
+
+/* Make sure the following assertions hold, since StarPU relies on it.  */
+
+_Static_assert(STARPU_CPU_DEFAULT == 0,
+	       "invalid STARPU_CPU_DEFAULT value");
+_Static_assert(STARPU_CUDA_DEFAULT > STARPU_CPU_DEFAULT,
+	       "invalid STARPU_CPU_DEFAULT value");
+_Static_assert(STARPU_CUDA_DEFAULT < STARPU_OPENCL_DEFAULT,
+	       "invalid STARPU_{CUDA,OPENCL}_DEFAULT values");
+
+#endif
+
 #define STARPU_NARCH_VARIATIONS	(STARPU_GORDON_DEFAULT+1)
 
 struct starpu_history_entry

+ 1 - 1
src/core/perfmodel/perfmodel.c

@@ -267,7 +267,7 @@ double starpu_task_expected_conversion_time(struct starpu_task *task,
 		if (!starpu_data_is_multiformat_handle(handle))
 			continue;
 
-		if (arch >= STARPU_CPU_DEFAULT && arch < STARPU_CUDA_DEFAULT)
+		if (arch < STARPU_CUDA_DEFAULT)
 			node = cpu_node;
 #ifdef STARPU_USE_CUDA
 		else if (arch >= STARPU_CUDA_DEFAULT && arch < STARPU_OPENCL_DEFAULT)