Переглянути джерело

openmp: make sure environment is valid before launching OpenMP, i.e
- there is at least 1 CPU worker
- the scheduler is not graph_test

Nathalie Furmento 6 роки тому
батько
коміт
d9cad80100
38 змінених файлів з 72 додано та 52 видалено
  1. 7 11
      src/util/openmp_runtime_support.c
  2. 7 5
      src/util/openmp_runtime_support.h
  3. 23 1
      src/util/openmp_runtime_support_environment.c
  4. 1 1
      tests/openmp/api_01.c
  5. 1 1
      tests/openmp/array_slice_01.c
  6. 1 1
      tests/openmp/cuda_task_01.c
  7. 1 1
      tests/openmp/environment.c
  8. 1 1
      tests/openmp/init_exit_01.c
  9. 1 1
      tests/openmp/init_exit_02.c
  10. 1 1
      tests/openmp/parallel_01.c
  11. 1 1
      tests/openmp/parallel_02.c
  12. 1 1
      tests/openmp/parallel_03.c
  13. 1 1
      tests/openmp/parallel_barrier_01.c
  14. 1 1
      tests/openmp/parallel_critical_01.c
  15. 1 1
      tests/openmp/parallel_critical_inline_01.c
  16. 1 1
      tests/openmp/parallel_critical_named_01.c
  17. 1 1
      tests/openmp/parallel_critical_named_inline_01.c
  18. 1 1
      tests/openmp/parallel_for_01.c
  19. 1 1
      tests/openmp/parallel_for_02.c
  20. 1 1
      tests/openmp/parallel_for_ordered_01.c
  21. 1 1
      tests/openmp/parallel_master_01.c
  22. 1 1
      tests/openmp/parallel_master_inline_01.c
  23. 1 1
      tests/openmp/parallel_nested_lock_01.c
  24. 1 1
      tests/openmp/parallel_sections_01.c
  25. 1 1
      tests/openmp/parallel_sections_combined_01.c
  26. 1 1
      tests/openmp/parallel_simple_lock_01.c
  27. 1 1
      tests/openmp/parallel_single_copyprivate_01.c
  28. 1 1
      tests/openmp/parallel_single_copyprivate_inline_01.c
  29. 1 1
      tests/openmp/parallel_single_inline_01.c
  30. 1 1
      tests/openmp/parallel_single_nowait_01.c
  31. 1 1
      tests/openmp/parallel_single_wait_01.c
  32. 1 1
      tests/openmp/task_01.c
  33. 1 1
      tests/openmp/task_02.c
  34. 1 1
      tests/openmp/task_03.c
  35. 1 1
      tests/openmp/taskgroup_01.c
  36. 1 1
      tests/openmp/taskgroup_02.c
  37. 1 1
      tests/openmp/taskloop.c
  38. 1 1
      tests/openmp/taskwait_01.c

+ 7 - 11
src/util/openmp_runtime_support.c

@@ -766,9 +766,8 @@ static int omp_initial_thread_setup(void)
 	omp_starpu_conf.n_not_launched_drivers = 1;
 	/* we are now ready to start StarPU */
 	ret = starpu_init(&omp_starpu_conf);
-	if (starpu_cpu_worker_get_count() == 0)
-		return -ENODEV;
-	else
+	int check = _starpu_omp_environment_check();
+	if (check == 0)
 	{
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
 		ret = starpu_driver_init(&initial_thread->starpu_driver);
@@ -786,8 +785,8 @@ static int omp_initial_thread_setup(void)
 		STARPU_ASSERT(initial_thread->worker->arch == STARPU_CPU_WORKER);
 		_starpu_omp_set_thread(initial_thread);
 		register_thread_worker(initial_thread);
-		return 0;
 	}
+	return check;
 }
 
 static void omp_initial_thread_exit()
@@ -811,8 +810,7 @@ static void omp_initial_thread_exit()
 static int omp_initial_region_setup(void)
 {
 	int ret = omp_initial_thread_setup();
-	if (ret == -ENODEV)
-		return ret;
+	if (ret != 0) return ret;
 
 	const int max_active_levels = _starpu_omp_initial_icv_values->max_active_levels_var;
 	const int max_threads = (int)starpu_cpu_worker_get_count();
@@ -965,19 +963,17 @@ int starpu_omp_init(void)
 
 	_starpu_omp_environment_init();
 	_global_state.icvs.cancel_var = _starpu_omp_initial_icv_values->cancel_var;
-	int ret = omp_initial_region_setup();
-	if (ret == -ENODEV)
-		return ret;
+	_global_state.environment_valid = omp_initial_region_setup();
 
 	/* init clock reference for starpu_omp_get_wtick */
 	_starpu_omp_clock_ref = starpu_timing_now();
 
-	return 0;
+	return _global_state.environment_valid;
 }
 
 void starpu_omp_shutdown(void)
 {
-	if (starpu_cpu_worker_get_count() == 0) return;
+	if (_global_state.environment_valid != 0) return;
 
 	omp_initial_region_exit();
 	/* TODO: free ICV variables */

+ 7 - 5
src/util/openmp_runtime_support.h

@@ -28,7 +28,7 @@
 
 /* ucontexts have been deprecated as of POSIX 1-2004
  * _XOPEN_SOURCE required at least on OS/X
- * 
+ *
  * TODO: add detection in configure.ac
  */
 #ifndef _XOPEN_SOURCE
@@ -77,7 +77,7 @@ struct starpu_omp_place
 	int nb_numeric_places;
 };
 
-/* 
+/*
  * Internal Control Variables (ICVs) declared following
  * OpenMP 4.0.0 spec section 2.3.1
  */
@@ -251,7 +251,7 @@ LIST_TYPE(starpu_omp_task,
 	enum starpu_omp_task_state state;
 	enum starpu_omp_task_flags flags;
 
-	/* 
+	/*
 	 * context to store the processing state of the task
 	 * in case of blocking/recursive task operation
 	 */
@@ -393,20 +393,22 @@ struct starpu_omp_global
 	struct starpu_arbiter *default_arbiter;
 	unsigned nb_starpu_cpu_workers;
 	int *starpu_cpu_worker_ids;
+	int environment_valid;
 };
 
-/* 
+/*
  * internal global variables
  */
 extern struct starpu_omp_initial_icv_values *_starpu_omp_initial_icv_values;
 extern struct starpu_omp_global *_starpu_omp_global_state;
 extern double _starpu_omp_clock_ref;
 
-/* 
+/*
  * internal API
  */
 void _starpu_omp_environment_init(void);
 void _starpu_omp_environment_exit(void);
+int _starpu_omp_environment_check(void);
 struct starpu_omp_thread *_starpu_omp_get_thread(void);
 struct starpu_omp_region *_starpu_omp_get_region_at_level(int level);
 struct starpu_omp_task *_starpu_omp_get_task(void);

+ 23 - 1
src/util/openmp_runtime_support_environment.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2014-2017                                CNRS
+ * Copyright (C) 2014-2017, 2019                          CNRS
  * Copyright (C) 2014,2016                                Inria
  * Copyright (C) 2015-2017                                Université de Bordeaux
  *
@@ -23,6 +23,7 @@
 #include <ctype.h>
 #include <strings.h>
 #include <limits.h>
+#include <core/sched_policy.h>
 
 #define _STARPU_INITIAL_PLACES_LIST_SIZE      4
 #define _STARPU_INITIAL_PLACE_ITEMS_LIST_SIZE 4
@@ -876,6 +877,27 @@ void _starpu_omp_environment_init(void)
 	}
 }
 
+int _starpu_omp_environment_check(void)
+{
+	if (starpu_cpu_worker_get_count() == 0)
+	{
+		_STARPU_DISP("OpenMP support needs at least 1 CPU worker\n");
+		return -EINVAL;
+	}
+
+	int i;
+	for(i = 0; i < STARPU_NMAX_SCHED_CTXS; i++)
+	{
+		struct starpu_sched_policy *sched_policy = starpu_sched_ctx_get_sched_policy(i);
+		if (sched_policy && (strcmp(sched_policy->policy_name, _starpu_sched_graph_test_policy.policy_name) == 0))
+		{
+			_STARPU_DISP("OpenMP support is not compatible with scheduler '%s' ('%s')\n", _starpu_sched_graph_test_policy.policy_name, _starpu_sched_graph_test_policy.policy_description);
+			return -EINVAL;
+		}
+	}
+	return 0;
+}
+
 void _starpu_omp_environment_exit(void)
 {
 	free_omp_environment();

+ 1 - 1
tests/openmp/api_01.c

@@ -51,7 +51,7 @@ static void omp_constructor(void)
 	unsetenv("OMP_PLACES");
 	unsetenv("OMP_DISPLAY_ENV");
 	ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/array_slice_01.c

@@ -38,7 +38,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/cuda_task_01.c

@@ -39,7 +39,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/environment.c

@@ -48,7 +48,7 @@ main (void)
 	setenv("OMP_PLACES","{1,2,3,4},{5,6,7,8}", 1);
 	setenv("OMP_DISPLAY_ENV","verbose", 1);
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) return STARPU_TEST_SKIPPED;
+	if (ret == -EINVAL) return STARPU_TEST_SKIPPED;
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 	starpu_omp_shutdown();
 	return 0;

+ 1 - 1
tests/openmp/init_exit_01.c

@@ -33,7 +33,7 @@ int
 main (void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) return STARPU_TEST_SKIPPED;
+	if (ret == -EINVAL) return STARPU_TEST_SKIPPED;
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 	starpu_omp_shutdown();
 	return 0;

+ 1 - 1
tests/openmp/init_exit_02.c

@@ -33,7 +33,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_02.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_03.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_barrier_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_critical_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_critical_inline_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_critical_named_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_critical_named_inline_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_for_01.c

@@ -39,7 +39,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_for_02.c

@@ -37,7 +37,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_for_ordered_01.c

@@ -39,7 +39,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_master_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_master_inline_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_nested_lock_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_sections_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_sections_combined_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_simple_lock_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_single_copyprivate_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_single_copyprivate_inline_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_single_inline_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_single_nowait_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/parallel_single_wait_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/task_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/task_02.c

@@ -38,7 +38,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/task_03.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/taskgroup_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/taskgroup_02.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/taskloop.c

@@ -33,7 +33,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }
 

+ 1 - 1
tests/openmp/taskwait_01.c

@@ -35,7 +35,7 @@ __attribute__((constructor))
 static void omp_constructor(void)
 {
 	int ret = starpu_omp_init();
-	if (ret == -ENODEV) exit(STARPU_TEST_SKIPPED);
+	if (ret == -EINVAL) exit(STARPU_TEST_SKIPPED);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_omp_init");
 }