Commit 24fae6c4 by Marcus Winter

mtapi_c: reuse of main thread configurable via node attributes

parent 6328800f
......@@ -552,8 +552,9 @@ enum mtapi_node_attributes_enum {
the node */
MTAPI_NODE_MAX_ACTIONS_PER_JOB, /**< maximum number of actions in a job
allowed by the node */
MTAPI_NODE_MAX_PRIORITIES /**< maximum number of priorities
MTAPI_NODE_MAX_PRIORITIES, /**< maximum number of priorities
allowed by the node */
MTAPI_NODE_REUSE_MAIN_THREAD /**< reuse main thread as worker */
};
/** size of the \a MTAPI_NODE_CORE_AFFINITY attribute */
#define MTAPI_NODE_CORE_AFFINITY_SIZE sizeof(embb_core_set_t)
......@@ -577,6 +578,8 @@ enum mtapi_node_attributes_enum {
#define MTAPI_NODE_MAX_ACTIONS_PER_JOB_SIZE sizeof(mtapi_uint_t)
/** size of the \a MTAPI_NODE_MAX_PRIORITIES attribute */
#define MTAPI_NODE_MAX_PRIORITIES_SIZE sizeof(mtapi_uint_t)
/** size of the \a MTAPI_NODE_REUSE_MAIN_THREAD attribute */
#define MTAPI_NODE_REUSE_MAIN_THREAD_SIZE sizeof(mtapi_boolean_t)
/* example attribute value */
#define MTAPI_NODE_TYPE_SMP 1
......@@ -688,6 +691,8 @@ struct mtapi_node_attributes_struct {
mtapi_uint_t max_actions_per_job; /**< stores
MTAPI_NODE_MAX_ACTIONS_PER_JOB */
mtapi_uint_t max_priorities; /**< stores MTAPI_NODE_MAX_PRIORITIES */
mtapi_boolean_t reuse_main_thread; /**< stores
MTAPI_NODE_REUSE_MAIN_THREAD */
};
/**
......
......@@ -54,7 +54,7 @@ mtapi_boolean_t embb_mtapi_thread_context_initialize_with_node_worker_and_core(
that->core_num = core_num;
that->priorities = node->attributes.max_priorities;
that->is_initialized = MTAPI_FALSE;
that->is_main_thread = (worker_index == 0) ? MTAPI_TRUE : MTAPI_FALSE;
that->is_main_thread = (worker_index == 0) ? node->attributes.reuse_main_thread : MTAPI_FALSE;
embb_atomic_store_int(&that->run, 0);
that->queue = (embb_mtapi_task_queue_t**)embb_mtapi_alloc_allocate(
......
......@@ -52,6 +52,7 @@ void mtapi_nodeattr_init(
attributes->max_jobs = MTAPI_NODE_MAX_JOBS_DEFAULT;
attributes->max_actions_per_job = MTAPI_NODE_MAX_ACTIONS_PER_JOB_DEFAULT;
attributes->max_priorities = MTAPI_NODE_MAX_PRIORITIES_DEFAULT;
attributes->reuse_main_thread = MTAPI_FALSE;
embb_core_set_init(&attributes->core_affinity, 1);
attributes->num_cores = embb_core_set_count(&attributes->core_affinity);
......@@ -143,6 +144,11 @@ void mtapi_nodeattr_set(
&attributes->max_priorities, attribute, attribute_size);
break;
case MTAPI_NODE_REUSE_MAIN_THREAD:
local_status = embb_mtapi_attr_set_mtapi_boolean_t(
&attributes->reuse_main_thread, attribute, attribute_size);
break;
default:
/* attribute unknown */
local_status = MTAPI_ERR_ATTR_NUM;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment