|
@@ -791,6 +791,21 @@ unsigned starpu_sched_ctx_create(int *workerids, int nworkers, const char *sched
|
|
|
}
|
|
|
va_end(varg_list);
|
|
|
|
|
|
+ if (workerids && nworkers != -1)
|
|
|
+ {
|
|
|
+
|
|
|
+ unsigned num_workers = starpu_worker_get_count();
|
|
|
+ for (int i = 0; i < nworkers; i++)
|
|
|
+ {
|
|
|
+ if (workerids[i] < 0 || workerids[i] >= num_workers)
|
|
|
+ {
|
|
|
+ _STARPU_ERROR("Invalid worker ID (%d) specified!\n",
|
|
|
+ workerids[i]);
|
|
|
+ return STARPU_NMAX_SCHED_CTXS;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
struct _starpu_sched_ctx *sched_ctx = NULL;
|
|
|
sched_ctx = _starpu_create_sched_ctx(sched_policy, workerids, nworkers, 0, sched_ctx_name, min_prio_set, min_prio, max_prio_set, max_prio, awake_workers, init_sched);
|
|
|
sched_ctx->hierarchy_level = hierarchy_level;
|