in submitit/local/local.py [0:0]
def _submit_command(self, command: str) -> LocalJob[R]:
# Override this, because the implementation is simpler than for clusters like Slurm
# Only one node is supported for local executor.
ntasks = self.parameters.get("tasks_per_node", 1)
n_gpus = self.parameters.get("gpus_per_node", 0)
visible_gpus = self.parameters.get("visible_gpus", ())
gpus = range(n_gpus) if visible_gpus == () else visible_gpus[:n_gpus]
process = start_controller(
folder=self.folder,
command=command,
tasks_per_node=ntasks,
cuda_devices=",".join(str(k) for k in gpus),
timeout_min=self.parameters.get("timeout_min", 2.0),
signal_delay_s=self.parameters.get("signal_delay_s", 30),
stderr_to_stdout=self.parameters.get("stderr_to_stdout", False),
)
job: LocalJob[R] = LocalJob(
folder=self.folder, job_id=str(process.pid), process=process, tasks=list(range(ntasks))
)
return job