diff --git a/src/api/step_launch.c b/src/api/step_launch.c index f4543927762892ebcea1d7b280bab6296fb721cc..2e3b7d280fdd2620a2dc82cade3d7daf91a9cfac 100644 --- a/src/api/step_launch.c +++ b/src/api/step_launch.c @@ -121,7 +121,10 @@ void slurm_step_launch_params_t_init (slurm_step_launch_params_t *ptr) ptr->buffered_stdio = true; memcpy(&ptr->local_fds, &fds, sizeof(fds)); 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; } /* diff --git a/src/plugins/task/affinity/dist_tasks.c b/src/plugins/task/affinity/dist_tasks.c index d0f700f776a7daeb63dc77e1b5fa780b8b115d1e..c99b2e7f1774d56016aaa650aa86acdee8c4ff91 100644 --- a/src/plugins/task/affinity/dist_tasks.c +++ b/src/plugins/task/affinity/dist_tasks.c @@ -228,7 +228,7 @@ void batch_bind(batch_job_launch_msg_t *req) info("task/affinity: job %u CPU final mask for node: %s", req->job_id, req->cpu_bind); } else { - error("task/affinity: job %u allocated not CPUs", + error("task/affinity: job %u allocated no CPUs", req->job_id); } bit_free(hw_map); @@ -449,6 +449,7 @@ static void _enforce_limits(launch_tasks_request_msg_t *req, bitstr_t *mask, count--; } } + /* enforce max_cores */ for (i = 0; i < size; i++) { if (bit_test(mask, i) == 0) @@ -605,6 +606,21 @@ static bitstr_t *_get_avail_map(launch_tasks_request_msg_t *req, req->job_id, req->job_step_id, 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)); for (p = 0; p < num_procs; p++) { if (bit_test(req_map, p) == 0)