diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in index 1fcf6329776f9629f243e049d624b63bd719ed47..f230ab60f851af6586f5bb66da95bab690c41a04 100644 --- a/slurm/slurm.h.in +++ b/slurm/slurm.h.in @@ -564,6 +564,10 @@ typedef struct { bool parallel_debug; char *task_prolog; char *task_epilog; + cpu_bind_type_t cpu_bind_type; + char *cpu_bind; + mem_bind_type_t mem_bind_type; + char *mem_bind; } slurm_job_step_launch_t; typedef struct { diff --git a/src/api/step_launch.c b/src/api/step_launch.c index 9a0420d9051e648839de24711076f38ed440fc40..00c6501abd80105d8846446f6049400e22e079b7 100644 --- a/src/api/step_launch.c +++ b/src/api/step_launch.c @@ -188,10 +188,10 @@ int slurm_step_launch (slurm_step_ctx ctx, launch.switch_job = ctx->step_resp->switch_job; launch.task_prolog = params->task_prolog; launch.task_epilog = params->task_epilog; - launch.cpu_bind_type = 0; /* FIXME opt.cpu_bind_type; */ - launch.cpu_bind = NULL; /* FIXME opt.cpu_bind; */ - launch.mem_bind_type = 0; /* FIXME opt.mem_bind_type; */ - launch.mem_bind = NULL; /* FIXME opt.mem_bind; */ + launch.cpu_bind_type = params->cpu_bind_type; + launch.cpu_bind = params->cpu_bind; + launch.mem_bind_type = params->mem_bind_type; + launch.mem_bind = params->mem_bind; launch.multi_prog = params->multi_prog ? 1 : 0; launch.options = job_options_create(); diff --git a/src/slaunch/slaunch.c b/src/slaunch/slaunch.c index a282585aca15f7557e350065c3174800f19c632b..e505ad39d10bd5c6aed255c03f6b04c0e8396255 100644 --- a/src/slaunch/slaunch.c +++ b/src/slaunch/slaunch.c @@ -240,6 +240,10 @@ int slaunch(int argc, char **argv) params.remote_error_filename = opt.remote_efname; params.task_prolog = opt.task_prolog; params.task_epilog = opt.task_epilog; + params.cpu_bind = opt.cpu_bind; + params.cpu_bind_type = opt.cpu_bind_type; + params.mem_bind = opt.mem_bind; + params.mem_bind_type = opt.mem_bind_type; _setup_local_fds(¶ms.local_fds, step_ctx); params.parallel_debug = opt.parallel_debug ? true : false;