Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'grid' mode does not seem to work with Open Grid Scheduler #105

Open
samnooij opened this issue Nov 6, 2019 · 5 comments
Open

'grid' mode does not seem to work with Open Grid Scheduler #105

samnooij opened this issue Nov 6, 2019 · 5 comments
Labels
clarification needed Clarify something in the code or the README

Comments

@samnooij
Copy link
Collaborator

samnooij commented Nov 6, 2019

I have been trying to get Jovian up and running on a cluster with Open Grid Scheduler, and now DRMAA is giving me this error when trying to submit the very first job:

drmaa.errors.DeniedByDrmException: code 17: ERROR! invalid option argument "-n"

It seems that it reads line drmaa: " -q bio -n {threads} -R \"span[hosts=1]\"" from profile/config.yaml and tries to submit jobs using that. However, this scheduler does not work with -n, but wants -pe [name of parallel environment] instead. (And I don't think it will work with -R\"span[hosts=1]\" either.) I tried updating the config file manually, but that did not work out.
Can I fix this to work with a different scheduling commands?

@DennisSchmitz
Copy link
Owner

Hmm, unfortunate that DRMAA doesn't interface with OGS. I do know there is a Snakemake grid config file (https://snakemake.readthedocs.io/en/stable/snakefiles/configuration.html#cluster-configuration) but I have never tried it myself. But I think that is the way to go. Please let me know if I can help. If you want I can ask Laros et al. if they have experience with such a configuration?

@samnooij
Copy link
Collaborator Author

samnooij commented Nov 7, 2019

Yes, I think such a file will be necessary. Especially because this cluster will kill jobs if they take more than the reserved amount of RAM, and will soon be using a similar regime for runtime. I can try and make a draft configuration file.
However, having this file by itself does not seem to solve the issue that different schedulers require slightly different commands/parameters. So I still think there needs to be a way to adjust those to different environments.
For now I will ask the in-house Snakemake community for advice. See how other people got their pipelines working on the cluster.

P.S. My problem right now seems to be in the jovian script, lines 781-791 (specifically this line). There the parameters are hard-coded and overwritten in the profile/config.yaml file. Running snakemake by hand and using the --cluster parameter does get the pipeline running and jobs are submitted. (So far they all return with errors, but at least they are submitted.)

@samnooij
Copy link
Collaborator Author

samnooij commented Nov 8, 2019

I managed to get the pipeline running with a 'manual' snakemake command:
snakemake --profile profile --cluster "qsub -q all.q -pe BWA {threads} -l h_vmem={cluster.vmem} -cwd -j Y -V" -p --cluster-config profile/cluster_config.yaml

The config file that I used has already been uploaded to the repository. (Also see DennisSchmitz/jovian@1e1098f.) With this, it should be possible to run the pipeline on any Snakemake-compatible cluster system. However, since it does not use the bash jovian command, it may lack a few features that Jovian provides by default.

@samnooij samnooij closed this as completed Nov 8, 2019
@DennisSchmitz
Copy link
Owner

DennisSchmitz commented Nov 12, 2019

Thanks for adding that Sam, I'm gonna reopen the issue for now as a reminder to add it to the documentation/FAQ.

Might also be worth updating the wrapper to function with a custom grid-configuration.

@DennisSchmitz DennisSchmitz reopened this Nov 12, 2019
@florianzwagemaker florianzwagemaker added the clarification needed Clarify something in the code or the README label Nov 12, 2019
@samnooij
Copy link
Collaborator Author

samnooij commented Jan 8, 2020

I came across this article that describes another interesting approach of addressing different schedulers, Xenon: https://peerj.com/articles/8214/#p-13
I think we had heard of this already, but never really considered it. Maybe this can be put on the feature wishlist to facilitate the use of different HPC systems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clarification needed Clarify something in the code or the README
Projects
None yet
Development

No branches or pull requests

3 participants