{"id":23449961,"url":"https://github.com/natefoo/slurm-drmaa-old","last_synced_at":"2025-04-10T05:55:00.703Z","repository":{"id":21631279,"uuid":"24951844","full_name":"natefoo/slurm-drmaa-old","owner":"natefoo","description":"Old working repository for my slurm-drmaa fork, the new one can be found at:","archived":false,"fork":false,"pushed_at":"2017-07-12T14:04:20.000Z","size":517,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-15T19:21:28.511Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/natefoo/slurm-drmaa/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/natefoo.png","metadata":{"files":{"readme":"README-old.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-10-08T17:23:06.000Z","updated_at":"2017-07-11T23:30:06.000Z","dependencies_parsed_at":"2022-08-21T07:10:15.952Z","dependency_job_id":null,"html_url":"https://github.com/natefoo/slurm-drmaa-old","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natefoo%2Fslurm-drmaa-old","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natefoo%2Fslurm-drmaa-old/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natefoo%2Fslurm-drmaa-old/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natefoo%2Fslurm-drmaa-old/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/natefoo","download_url":"https://codeload.github.com/natefoo/slurm-drmaa-old/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248166929,"owners_count":21058480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-23T23:31:13.538Z","updated_at":"2025-04-10T05:55:00.665Z","avatar_url":"https://github.com/natefoo.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Documentation\n=============\n\nThe manual for the DRMAA for Simple Linux Utility for Resource Management\n(SLURM) is available at project wiki:\nhttp://apps.man.poznan.pl/trac/slurm-drmaa/wiki\n\nBranches\n========\n\n- [master](../../tree/master) - slurm-drmaa 1.0.7 (from source tarball, not\n  SVN) with mostly-complete Slurm multicluster `-M`/`--clusters` support (it is\n  possible to specify 1 cluster with this option, but not multiple, see\n  **Limitations** below).\n- [slurm-drmaa-1.2.0](../../tree/slurm-drmaa-1.2.0) - slurm-drmaa 1.2.0 from\n  SVN, no modifications\n- [slurm-drmaa-1.2.0-clusters](../../tree/slurm-drmaa-1.2.0-clusters) -\n  slurm-drmaa 1.2.0 with the same cluster modifications as in the master\n  branch.\n- [slurm-drmaa-1.2.0-multisubmit](../../tree/slurm-drmaa-1.2.0-multisubmit) -\n  slurm-drmaa 1.2.0 with full multicluster submission (i.e. `sbatch\n  --clusters=cluster1,cluster2`) functionality (See **Limitations** below)\n- [slurm-drmaa-1.2.0-multisubmit-15.08](../../tree/slurm-drmaa-1.2.0-multisubmit-15.08) -\n  slurm-drmaa 1.2.0 with full multicluster submission (i.e. `sbatch\n  --clusters=cluster1,cluster2`) functionality, requires Slurm 15.08 or later.\n\nTODO\n====\n\n- Get the features in the various branches enabled by libslurm version (at runtime?) and merged back to a single branch.\n- Reimport the upstream repository from PSNC with full attributed SVN history\n\nRPM\n===\n\nI added a `slurm-drmaa.spec` file in the master branch (but it can be used with any branch) for use with `rpmbuild` to create an RPM. My process (on CentOS 6) is:\n\n```console\n% ./autogen.sh\n% make distclean\n% find . -type d -name autom4te.cache -print0 | xargs -0 rm -rf\n% ragel -o drmaa_utils/drmaa_utils/timedelta.c drmaa_utils/drmaa_utils/timedelta.rl\n% cp slurm-drmaa.spec ~/rpmbuild/SPECS\n% cd ..\n% tar zcf slurm-drmaa-1.2.0.tar.gz --exclude=.git\\* slurm-drmaa-1.2.0\n% cp slurm-drmaa-1.2.0.tar.gz ~/rpmbuild/SOURCES\n% rpmbuild -bb ~/rpmbuild/SPECS/slurm-drmaa.spec\n```\n\nLimitations\n===========\n\nlibslurmdb incompatibility\n--------------------------\n\nMulticluster support will not work on a standard Slurm installation prior to\nSlurm 14.11.  slurm-drmaa needs access to Slurm's `working_cluster_rec` global\nin `libslurmdb`, which was not extern/public in older versions. However, older\nversions can be used if you compile a new `libslurmdb.so`. To do so, apply the\nfollowing patch to the Slurm source, reconfigure, and recompile:\n\n```diff\n--- src/db_api/Makefile.am.orig\t2014-05-06 11:24:19.000000000 -0500\n+++ src/db_api/Makefile.am\t2014-10-10 11:48:12.730845279 -0500\n@@ -95,6 +95,7 @@\n \t(echo \"{ global:\";   \\\n \t echo \"   slurm_*;\"; \\\n \t echo \"   slurmdb_*;\"; \\\n+\t echo \"   working_cluster_rec;\"; \\\n \t echo \"  local: *;\"; \\\n \t echo \"};\") \u003e $(VERSION_SCRIPT)\n \n--- src/db_api/Makefile.in.orig\t2014-05-06 11:24:19.000000000 -0500\n+++ src/db_api/Makefile.in\t2014-10-10 11:48:22.765938016 -0500\n@@ -915,6 +915,7 @@\n \t(echo \"{ global:\";   \\\n \t echo \"   slurm_*;\"; \\\n \t echo \"   slurmdb_*;\"; \\\n+\t echo \"   working_cluster_rec;\"; \\\n \t echo \"  local: *;\"; \\\n \t echo \"};\") \u003e $(VERSION_SCRIPT)\n```\n \nIn my instance I then copied the resulting `.libs/libslurdb*.so*` to\nslurm-drmaa's lib directory and configured slurm-drmaa with\n`LDFLAGS='-Wl,-rpath=/path/to/slurm-drmaa/lib' ./configure`, but putting\n`libslurmdb` elsewhere and/or simply setting `$LD_LIBRARY_PATH` at application\nruntime also work.\n\nNote that root privileges are not required for this to work. The canonical copy\nof libslurmdbd.so does not need to be modified, only the one that libdrmaa\nlinks to at runtime.\n\nUnimplemented features\n----------------------\n\nMultiple clusters specified in a single `-M`/`--clusters` option (e.g. `-M\ncluster1,cluster2`) are not supported in the `master` and\n`slurm-drmaa-1.2.0-clusters` branches.\n\nHowever, support for it has been hacked in to the\n`slurm-drmaa-1.2.0-multisubmit` branch. From the commit message:\n\nThis is fairly hacky because the functionality to do this properly is not\navailable via Slurm's public API. And:\n\n1. I wasn't going to take the time to figure out the mess of private headers I\n   had to extract from the slurm source and include here, so a copy of the\n   Slurm source is required at compile time.\n2. I have about 1 hours' worth of experience with autoconf/automake at this\n   point, so the changes I made there are crude.\n3. I'm not going to put a lot of effort into making this nicer since the Slurm\n   development team has put implementing the features necessary for doing this\n   properly on their roadmap for Slurm 15.08:\n   http://bugs.schedmd.com/show_bug.cgi?id=1234\n\nThat said, once compiled, it will work with a standard Slurm 14.11 (or earlier\nversions with the `working_cluster_rec` patch).\n\nProper support for multiple cluster submission with Slurm 15.08 and later is\navailable in the `slurm-drmaa-1.2.0-multicluster-15.08` branch.\n\n\nPotential Job ID incompatibilites\n---------------------------------\n\nBecause DRMAA does not provide a means for reporting back which cluster is\nselected, I've chosen to modify the format of the Job ID returned by the submit\nfunction. If the native specification does not contain `-M`/`--clusters`, Job\nIDs are numeric as before. If `-M/--clusters` is passed, the Job ID is appended\nwith a `'.'`, followed by the cluster name to which the job was submitted (e.g.\n`42.cluster1`). The functions which check job state and perform job controls\nwill also accept Job IDs in this format.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatefoo%2Fslurm-drmaa-old","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnatefoo%2Fslurm-drmaa-old","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatefoo%2Fslurm-drmaa-old/lists"}