Index: README =================================================================== --- README (revision 321) +++ README (working copy) @@ -145,6 +145,18 @@ force make to treat them properly. See the manual for details. +SLURM +----- + +This patch will use SLURM to launch tasks across a job's current resource +allocation. Depending upon the size of modules to be compiled, this may +or may not improve performance. If most modules are thousands of lines +long, the use of additional resources should more than compensate for the +overhead of SLURM's task launch. Use with make's "-j" option within an +existing SLURM allocation. Outside of a SLURM allocation, make's behavior +will be unchanged. Designed for GNU make-3.81. + + Ports ----- Index: job.c =================================================================== --- job.c (revision 321) +++ job.c (working copy) @@ -1959,6 +1959,22 @@ void child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp) { +/* PARALLEL JOB LAUNCH VIA SLURM */ + if (getenv("SLURM_JOB_ID")) { + int i; + static char *argx[128]; + argx[0] = "srun"; + argx[1] = "-N1"; + argx[2] = "-n1"; + for (i=0; ((i<124)&&(argv[i])); i++) { + argx[i+3] = argv[i]; + } + if (i<124) { + argx[i+3] = NULL; + argv = argx; + } + } +/* END OF SLURM PATCH */ if (stdin_fd != 0) (void) dup2 (stdin_fd, 0); if (stdout_fd != 1)