diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in index 2abdfd9481eba15bd3a1bbc91f79d12c6c50697c..da227143999f412d6419422589abd36914a44b55 100644 --- a/slurm/slurm.h.in +++ b/slurm/slurm.h.in @@ -208,7 +208,7 @@ enum select_print_mode { enum task_dist_states { SLURM_DIST_CYCLIC, /* distribute tasks 1 per node, round robin */ SLURM_DIST_BLOCK, /* distribute tasks filling node by node */ - SLURM_DIST_HOSTFILE, /* distribute tasks from what hostfile says */ + SLURM_DIST_ARBITRARY, /* arbitrary task distribution */ SLURM_DIST_UNKNOWN /* unknown dist */ }; diff --git a/src/api/allocate.c b/src/api/allocate.c index 60abc92e874a88c2d2e4e37a2549709a0fa38b17..2be38309e6e756e304abc52fb8a13572f1004c56 100644 --- a/src/api/allocate.c +++ b/src/api/allocate.c @@ -433,7 +433,7 @@ no_hostfile: xfree(req->node_list); req->node_list = nodelist; req->num_tasks = count; - req->task_dist = SLURM_DIST_HOSTFILE; + req->task_dist = SLURM_DIST_ARBITRARY; } return count; } diff --git a/src/common/dist_tasks.c b/src/common/dist_tasks.c index af258401d8eea3416c625538dbe7925538ca9b74..150fdbbcac28cfd3cac38477c955ac27f6067dbc 100644 --- a/src/common/dist_tasks.c +++ b/src/common/dist_tasks.c @@ -291,7 +291,7 @@ extern int task_layout(slurm_step_layout_t *step_layout) if (step_layout->task_dist == SLURM_DIST_CYCLIC) return _task_layout_cyclic(step_layout); - else if(step_layout->task_dist == SLURM_DIST_HOSTFILE) + else if(step_layout->task_dist == SLURM_DIST_ARBITRARY) return _task_layout_hostfile(step_layout); else return _task_layout_block(step_layout); diff --git a/src/common/env.c b/src/common/env.c index 0a82d47af080d5442c7c5b8e2da71e5143a5bd0a..ad30878b07073398e2a2dcb142b7d843227a17bd 100644 --- a/src/common/env.c +++ b/src/common/env.c @@ -32,8 +32,8 @@ #include <stdio.h> #include <stdarg.h> #include <string.h> -#include <slurm/slurm.h> +#include "slurm/slurm.h" #include "src/common/log.h" #include "src/common/macros.h" #include "src/common/env.h" @@ -253,9 +253,20 @@ int setup_env(env_t *env) } if (env->distribution - && env->distribution != SRUN_DIST_UNKNOWN) { - dist = (env->distribution == SRUN_DIST_BLOCK) ? - "block" : "cyclic"; + && env->distribution != SLURM_DIST_UNKNOWN) { + switch(env->distribution) { + case SLURM_DIST_CYCLIC: + dist = "cyclic"; + break; + case SLURM_DIST_BLOCK: + dist = "block"; + break; + case SLURM_DIST_ARBITRARY: + dist = "arbitrary"; + break; + default: + dist = "unknown"; + } if (setenvf(&env->env, "SLURM_DISTRIBUTION", "%s", dist)) { error("Can't set SLURM_DISTRIBUTION env variable"); diff --git a/src/common/env.h b/src/common/env.h index cbb0885de56197209d699a0ee72d4b0fbff64bab..f5b8591edc4d3d98dd65a03a3b9e498d1e9a1ea6 100644 --- a/src/common/env.h +++ b/src/common/env.h @@ -33,18 +33,12 @@ #include "src/common/macros.h" -enum distribution_t { - SRUN_DIST_BLOCK = 0, - SRUN_DIST_CYCLIC = 1, - SRUN_DIST_UNKNOWN = 2 -}; - typedef struct env_options { int nprocs; /* --nprocs=n, -n n */ char *task_count; bool nprocs_set; /* true if nprocs explicitly set */ bool cpus_set; /* true if cpus_per_task explicitly set */ - enum distribution_t + enum task_dist_states distribution; /* --distribution=, -m dist */ cpu_bind_type_t cpu_bind_type; /* --cpu_bind= */ diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c index e72d57fb47dff545f03e3d4a0c306a627d3df24f..a4fcc950370cedd02d63e427eb0a4450ce137a97 100644 --- a/src/slurmctld/step_mgr.c +++ b/src/slurmctld/step_mgr.c @@ -415,12 +415,12 @@ try_again: step_spec->node_list, job_ptr->job_id); goto cleanup; } - if(step_spec->task_dist == SLURM_DIST_HOSTFILE) { + if(step_spec->task_dist == SLURM_DIST_ARBITRARY) { if (!strcmp(slurmctld_conf.switch_type, "switch/elan")) { - error("Can't do a HOSTFILE with switch " - "type elan. Switching DIST type to " - "BLOCK"); + error("Can't do an ARBITRARY task layout with " + "switch type elan. Switching DIST type " + "to BLOCK"); xfree(step_spec->node_list); step_spec->task_dist == SLURM_DIST_BLOCK; FREE_NULL_BITMAP(nodes_picked); @@ -593,7 +593,7 @@ step_create ( job_step_create_request_msg_t *step_specs, if ((step_specs->task_dist != SLURM_DIST_CYCLIC) && (step_specs->task_dist != SLURM_DIST_BLOCK) && - (step_specs->task_dist != SLURM_DIST_HOSTFILE)) + (step_specs->task_dist != SLURM_DIST_ARBITRARY)) return ESLURM_BAD_DIST; if (job_ptr->kill_on_step_done) diff --git a/src/srun/allocate.c b/src/srun/allocate.c index 9d4d73daf884fe30e61f04c5432106037479ecc6..f9d40f5e2331301af72a48a2db5ed2e7c355fed5 100644 --- a/src/srun/allocate.c +++ b/src/srun/allocate.c @@ -476,6 +476,8 @@ _step_req_create(srun_job_t *j) r->name = xstrdup(opt.job_name); r->relative = false; /* XXX fix this oneday */ + /* CJM - why are "UNKNOWN" and "default" behaviours different? */ + /* why do we even HAVE the SLURM_DIST_UNKNOWN state?? */ switch (opt.distribution) { case SLURM_DIST_UNKNOWN: r->task_dist = (opt.nprocs <= j->nhosts) ? SLURM_DIST_CYCLIC @@ -484,10 +486,11 @@ _step_req_create(srun_job_t *j) case SLURM_DIST_CYCLIC: r->task_dist = SLURM_DIST_CYCLIC; break; - case SLURM_DIST_HOSTFILE: - r->task_dist = SLURM_DIST_HOSTFILE; + case SLURM_DIST_ARBITRARY: + r->task_dist = SLURM_DIST_ARBITRARY; break; - default: /* (opt.distribution == SLURM_DIST_BLOCK) */ + case SLURM_DIST_BLOCK: + default: r->task_dist = SLURM_DIST_BLOCK; break; } diff --git a/src/srun/opt.c b/src/srun/opt.c index d887eb4f93d1c13158f49ee3aa2792a9d7966a5a..ee22984cf5d780bec796d48c4e13b05047595acd 100644 --- a/src/srun/opt.c +++ b/src/srun/opt.c @@ -245,8 +245,8 @@ static enum task_dist_states _verify_dist_type(const char *arg) result = SLURM_DIST_CYCLIC; else if (strncasecmp(arg, "block", len) == 0) result = SLURM_DIST_BLOCK; - else if (strncasecmp(arg, "hostfile", len) == 0) - result = SLURM_DIST_HOSTFILE; + else if (strncasecmp(arg, "arbitrary", len) == 0) + result = SLURM_DIST_ARBITRARY; return result; } diff --git a/src/srun/opt.h b/src/srun/opt.h index a2739fc15c217283cea0e99d60720729a6607447..86cf0b867ac033e7dd3935951699e48828397fb0 100644 --- a/src/srun/opt.h +++ b/src/srun/opt.h @@ -64,7 +64,7 @@ enum modes mode; #define format_task_dist_states(t) (t == SLURM_DIST_BLOCK) ? "block" : \ (t == SLURM_DIST_CYCLIC) ? "cyclic" : \ - (t == SLURM_DIST_HOSTFILE) ? "hostfile" : \ + (t == SLURM_DIST_ARBITRARY) ? "arbitrary" : \ "unknown" enum io_t {