Some MPI implementations don't provide for Slurm integration or are not compiled with Slurm support, so the fallback is ssh. Some code doesn't even use MPI and instead directly calls ssh. The ideal solution is always to utilize properly-compiled MPI that supports Slurm, but realistically that's not going to happen all the time. That's where pam_slurm_adopt comes in.
As I see it, this PAM module solves three main problems. ssh-launched processes now:
- Have proper limit enforcement
- Will be accounted for in the accounting database
- Will be cleaned up when the job exits