Skip to content
Snippets Groups Projects
Commit b9eb0fc0 authored by Moe Jette's avatar Moe Jette
Browse files

initialize max_cores, max_sockets, and max_threads to 0xffff so that a all task

  affinity bits don't get cleared by default for direct use of the launch API
  (as used by poe). 
If a zero value is registerd for task launch, reset to 1 and avoid an empty bitmap
  and subsequent task binding error.
parent 47ac3915
No related branches found
No related tags found
No related merge requests found
...@@ -121,7 +121,10 @@ void slurm_step_launch_params_t_init (slurm_step_launch_params_t *ptr) ...@@ -121,7 +121,10 @@ void slurm_step_launch_params_t_init (slurm_step_launch_params_t *ptr)
ptr->buffered_stdio = true; ptr->buffered_stdio = true;
memcpy(&ptr->local_fds, &fds, sizeof(fds)); memcpy(&ptr->local_fds, &fds, sizeof(fds));
ptr->gid = getgid(); ptr->gid = getgid();
ptr->acctg_freq = (uint16_t) NO_VAL; ptr->acctg_freq = (uint16_t) NO_VAL;
ptr->max_cores = 0xffff;
ptr->max_sockets = 0xffff;
ptr->max_threads = 0xffff;
} }
/* /*
......
...@@ -228,7 +228,7 @@ void batch_bind(batch_job_launch_msg_t *req) ...@@ -228,7 +228,7 @@ void batch_bind(batch_job_launch_msg_t *req)
info("task/affinity: job %u CPU final mask for node: %s", info("task/affinity: job %u CPU final mask for node: %s",
req->job_id, req->cpu_bind); req->job_id, req->cpu_bind);
} else { } else {
error("task/affinity: job %u allocated not CPUs", error("task/affinity: job %u allocated no CPUs",
req->job_id); req->job_id);
} }
bit_free(hw_map); bit_free(hw_map);
...@@ -449,6 +449,7 @@ static void _enforce_limits(launch_tasks_request_msg_t *req, bitstr_t *mask, ...@@ -449,6 +449,7 @@ static void _enforce_limits(launch_tasks_request_msg_t *req, bitstr_t *mask,
count--; count--;
} }
} }
/* enforce max_cores */ /* enforce max_cores */
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
if (bit_test(mask, i) == 0) if (bit_test(mask, i) == 0)
...@@ -605,6 +606,21 @@ static bitstr_t *_get_avail_map(launch_tasks_request_msg_t *req, ...@@ -605,6 +606,21 @@ static bitstr_t *_get_avail_map(launch_tasks_request_msg_t *req,
req->job_id, req->job_step_id, str); req->job_id, req->job_step_id, str);
xfree(str); xfree(str);
if (req->max_threads == 0) {
error("task/affinity: job %u.%u has max_threads=0",
req->job_id, req->job_step_id);
req->max_threads = 1;
}
if (req->max_cores == 0) {
error("task/affinity: job %u.%u has max_coress=0",
req->job_id, req->job_step_id);
req->max_cores = 1;
}
if (req->max_sockets == 0) {
error("task/affinity: job %u.%u has max_sockets=0",
req->job_id, req->job_step_id);
req->max_sockets = 1;
}
num_threads = MIN(req->max_threads, (*hw_threads)); num_threads = MIN(req->max_threads, (*hw_threads));
for (p = 0; p < num_procs; p++) { for (p = 0; p < num_procs; p++) {
if (bit_test(req_map, p) == 0) if (bit_test(req_map, p) == 0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment