{"action":"created","comment":{"url":"https://api.github.com/repos/flux-framework/rfc/pulls/comments/70685105","id":70685105,"diff_hunk":"@@ -102,7 +102,167 @@ FIXME: Fill in\n To implement basic resource manager functionality, the following use\n cases SHALL be supported by the jobspec:\n \n-FIXME: Fill in\n+'''\n+Use Case 1:: Request Single Resource with Count\n++\n+Specific Example:: Request 4 nodes\n++\n+Existing Equivalent:: `salloc -N4`\n++\n+[source,yaml]\n+resources:\n+    type: node\n+    count: 4\n+\n+'''\n+Use Case 2:: Run N tasks across M nodes\n++\n+Specific Example:: Run `hostname` 20 times on 4 nodoes, 5 per node\n++\n+Existing Equivalent::\n+`srun -N4 -n20 hostname` or `srun -N4 --ntasks-per-node=5 hostname`\n++\n+[source,yaml]\n+resources:\n+    type: node\n+    count: 4\n+    tasks:\n+        command: hostname\n+        count: 5\n+\n+'''\n+Use Case 3:: Run N tasks across M nodes, unequal distribution\n++\n+Specific Example:: Run 5 copies of `hostname` across 4 nodes,\n+default distribution\n++\n+Existing Equivalent:: `srun -n5 -N4 hostname`\n++\n+[source,yaml]\n+tasks:\n+    command: hostname\n+    count: 5\n+with:\n+    type: node\n+    count: 4\n+\n+\n+'''\n+Use Case 4:: Run N tasks, Require M cores per task\n++\n+Specific Example:: Run 10 copies of `myapp`, require 2 cores per copy,\n+for a total of 20 cores\n++\n+Existing Equivalent:: `srun -n10 -c 2 myapp`\n++\n+[source,yaml]\n+# FIXME: VALIDATE\n+type: group","path":"spec_14.adoc","position":60,"original_position":60,"commit_id":"f8f2ae246ad3be8dbfeda5394194a39ac1e7a9d7","original_commit_id":"f8f2ae246ad3be8dbfeda5394194a39ac1e7a9d7","user":{"login":"grondo","id":741970,"avatar_url":"https://avatars.githubusercontent.com/u/741970?v=3","gravatar_id":"","url":"https://api.github.com/users/grondo","html_url":"https://github.com/grondo","followers_url":"https://api.github.com/users/grondo/followers","following_url":"https://api.github.com/users/grondo/following{/other_user}","gists_url":"https://api.github.com/users/grondo/gists{/gist_id}","starred_url":"https://api.github.com/users/grondo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grondo/subscriptions","organizations_url":"https://api.github.com/users/grondo/orgs","repos_url":"https://api.github.com/users/grondo/repos","events_url":"https://api.github.com/users/grondo/events{/privacy}","received_events_url":"https://api.github.com/users/grondo/received_events","type":"User","site_admin":false},"body":"So:\r\n```yaml\r\ntype: group\r\ntasks:\r\n    command: myapp\r\nwith:\r\n    type: core\r\n    count: 2\r\ncount: 10\r\n```\r\n\r\nThat seems to make sense, though I'm getting confused about the `resources:` tag. When is it required? Only when the tasks are separated outside of the resources: block, otherwise it is implied?\r\n\r\nAlso, is `group:` strictly required here?","created_at":"2016-07-13T18:46:10Z","updated_at":"2016-07-13T18:46:10Z","html_url":"https://github.com/flux-framework/rfc/pull/52#discussion_r70685105","pull_request_url":"https://api.github.com/repos/flux-framework/rfc/pulls/52","_links":{"self":{"href":"https://api.github.com/repos/flux-framework/rfc/pulls/comments/70685105"},"html":{"href":"https://github.com/flux-framework/rfc/pull/52#discussion_r70685105"},"pull_request":{"href":"https://api.github.com/repos/flux-framework/rfc/pulls/52"}}},"pull_request":{"url":"https://api.github.com/repos/flux-framework/rfc/pulls/52","id":77338303,"html_url":"https://github.com/flux-framework/rfc/pull/52","diff_url":"https://github.com/flux-framework/rfc/pull/52.diff","patch_url":"https://github.com/flux-framework/rfc/pull/52.patch","issue_url":"https://api.github.com/repos/flux-framework/rfc/issues/52","number":52,"state":"open","locked":false,"title":"RFC 14: Begin adding jobspec use cases","user":{"login":"grondo","id":741970,"avatar_url":"https://avatars.githubusercontent.com/u/741970?v=3","gravatar_id":"","url":"https://api.github.com/users/grondo","html_url":"https://github.com/grondo","followers_url":"https://api.github.com/users/grondo/followers","following_url":"https://api.github.com/users/grondo/following{/other_user}","gists_url":"https://api.github.com/users/grondo/gists{/gist_id}","starred_url":"https://api.github.com/users/grondo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grondo/subscriptions","organizations_url":"https://api.github.com/users/grondo/orgs","repos_url":"https://api.github.com/users/grondo/repos","events_url":"https://api.github.com/users/grondo/events{/privacy}","received_events_url":"https://api.github.com/users/grondo/received_events","type":"User","site_admin":false},"body":"I've started adding to the *Use Cases* Section of RFC 14. So far only the most basic use cases are added, not yet including all the examples from @trws's original document.\r\n\r\nI'm still going to add more use cases from the more esoteric Slurm `-B` or `--ntasks-per-*` command lines. Then we have to explore the `--gres` (generic resources), `--multi-prog` examples, and finally at some point `--array` (job arrays)\r\n\r\nHowever, I wanted to get this PR up for discussion, and because I did run into a couple places where I wasn't sure how the jobspec should exactly be specified (See UC4 and UC6).","created_at":"2016-07-13T18:30:34Z","updated_at":"2016-07-13T18:46:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"db8ec1b70a723442d1b8c5d1ab1389aeded1de8d","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/flux-framework/rfc/pulls/52/commits","review_comments_url":"https://api.github.com/repos/flux-framework/rfc/pulls/52/comments","review_comment_url":"https://api.github.com/repos/flux-framework/rfc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flux-framework/rfc/issues/52/comments","statuses_url":"https://api.github.com/repos/flux-framework/rfc/statuses/f8f2ae246ad3be8dbfeda5394194a39ac1e7a9d7","head":{"label":"grondo:rfc14-use-cases","ref":"rfc14-use-cases","sha":"f8f2ae246ad3be8dbfeda5394194a39ac1e7a9d7","user":{"login":"grondo","id":741970,"avatar_url":"https://avatars.githubusercontent.com/u/741970?v=3","gravatar_id":"","url":"https://api.github.com/users/grondo","html_url":"https://github.com/grondo","followers_url":"https://api.github.com/users/grondo/followers","following_url":"https://api.github.com/users/grondo/following{/other_user}","gists_url":"https://api.github.com/users/grondo/gists{/gist_id}","starred_url":"https://api.github.com/users/grondo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grondo/subscriptions","organizations_url":"https://api.github.com/users/grondo/orgs","repos_url":"https://api.github.com/users/grondo/repos","events_url":"https://api.github.com/users/grondo/events{/privacy}","received_events_url":"https://api.github.com/users/grondo/received_events","type":"User","site_admin":false},"repo":{"id":23893747,"name":"flux-framework-rfc","full_name":"grondo/flux-framework-rfc","owner":{"login":"grondo","id":741970,"avatar_url":"https://avatars.githubusercontent.com/u/741970?v=3","gravatar_id":"","url":"https://api.github.com/users/grondo","html_url":"https://github.com/grondo","followers_url":"https://api.github.com/users/grondo/followers","following_url":"https://api.github.com/users/grondo/following{/other_user}","gists_url":"https://api.github.com/users/grondo/gists{/gist_id}","starred_url":"https://api.github.com/users/grondo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grondo/subscriptions","organizations_url":"https://api.github.com/users/grondo/orgs","repos_url":"https://api.github.com/users/grondo/repos","events_url":"https://api.github.com/users/grondo/events{/privacy}","received_events_url":"https://api.github.com/users/grondo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/grondo/flux-framework-rfc","description":"Flux RFC project","fork":true,"url":"https://api.github.com/repos/grondo/flux-framework-rfc","forks_url":"https://api.github.com/repos/grondo/flux-framework-rfc/forks","keys_url":"https://api.github.com/repos/grondo/flux-framework-rfc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/grondo/flux-framework-rfc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/grondo/flux-framework-rfc/teams","hooks_url":"https://api.github.com/repos/grondo/flux-framework-rfc/hooks","issue_events_url":"https://api.github.com/repos/grondo/flux-framework-rfc/issues/events{/number}","events_url":"https://api.github.com/repos/grondo/flux-framework-rfc/events","assignees_url":"https://api.github.com/repos/grondo/flux-framework-rfc/assignees{/user}","branches_url":"https://api.github.com/repos/grondo/flux-framework-rfc/branches{/branch}","tags_url":"https://api.github.com/repos/grondo/flux-framework-rfc/tags","blobs_url":"https://api.github.com/repos/grondo/flux-framework-rfc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/grondo/flux-framework-rfc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/grondo/flux-framework-rfc/git/refs{/sha}","trees_url":"https://api.github.com/repos/grondo/flux-framework-rfc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/grondo/flux-framework-rfc/statuses/{sha}","languages_url":"https://api.github.com/repos/grondo/flux-framework-rfc/languages","stargazers_url":"https://api.github.com/repos/grondo/flux-framework-rfc/stargazers","contributors_url":"https://api.github.com/repos/grondo/flux-framework-rfc/contributors","subscribers_url":"https://api.github.com/repos/grondo/flux-framework-rfc/subscribers","subscription_url":"https://api.github.com/repos/grondo/flux-framework-rfc/subscription","commits_url":"https://api.github.com/repos/grondo/flux-framework-rfc/commits{/sha}","git_commits_url":"https://api.github.com/repos/grondo/flux-framework-rfc/git/commits{/sha}","comments_url":"https://api.github.com/repos/grondo/flux-framework-rfc/comments{/number}","issue_comment_url":"https://api.github.com/repos/grondo/flux-framework-rfc/issues/comments{/number}","contents_url":"https://api.github.com/repos/grondo/flux-framework-rfc/contents/{+path}","compare_url":"https://api.github.com/repos/grondo/flux-framework-rfc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/grondo/flux-framework-rfc/merges","archive_url":"https://api.github.com/repos/grondo/flux-framework-rfc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/grondo/flux-framework-rfc/downloads","issues_url":"https://api.github.com/repos/grondo/flux-framework-rfc/issues{/number}","pulls_url":"https://api.github.com/repos/grondo/flux-framework-rfc/pulls{/number}","milestones_url":"https://api.github.com/repos/grondo/flux-framework-rfc/milestones{/number}","notifications_url":"https://api.github.com/repos/grondo/flux-framework-rfc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/grondo/flux-framework-rfc/labels{/name}","releases_url":"https://api.github.com/repos/grondo/flux-framework-rfc/releases{/id}","deployments_url":"https://api.github.com/repos/grondo/flux-framework-rfc/deployments","created_at":"2014-09-10T21:51:51Z","updated_at":"2014-09-10T22:01:29Z","pushed_at":"2016-07-13T18:25:48Z","git_url":"git://github.com/grondo/flux-framework-rfc.git","ssh_url":"git@github.com:grondo/flux-framework-rfc.git","clone_url":"https://github.com/grondo/flux-framework-rfc.git","svn_url":"https://github.com/grondo/flux-framework-rfc","homepage":null,"size":125,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flux-framework:master","ref":"master","sha":"c53a55a693e7a9183ac976e4bd9dc675f77ba70a","user":{"login":"flux-framework","id":7545483,"avatar_url":"https://avatars.githubusercontent.com/u/7545483?v=3","gravatar_id":"","url":"https://api.github.com/users/flux-framework","html_url":"https://github.com/flux-framework","followers_url":"https://api.github.com/users/flux-framework/followers","following_url":"https://api.github.com/users/flux-framework/following{/other_user}","gists_url":"https://api.github.com/users/flux-framework/gists{/gist_id}","starred_url":"https://api.github.com/users/flux-framework/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flux-framework/subscriptions","organizations_url":"https://api.github.com/users/flux-framework/orgs","repos_url":"https://api.github.com/users/flux-framework/repos","events_url":"https://api.github.com/users/flux-framework/events{/privacy}","received_events_url":"https://api.github.com/users/flux-framework/received_events","type":"Organization","site_admin":false},"repo":{"id":19826985,"name":"rfc","full_name":"flux-framework/rfc","owner":{"login":"flux-framework","id":7545483,"avatar_url":"https://avatars.githubusercontent.com/u/7545483?v=3","gravatar_id":"","url":"https://api.github.com/users/flux-framework","html_url":"https://github.com/flux-framework","followers_url":"https://api.github.com/users/flux-framework/followers","following_url":"https://api.github.com/users/flux-framework/following{/other_user}","gists_url":"https://api.github.com/users/flux-framework/gists{/gist_id}","starred_url":"https://api.github.com/users/flux-framework/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flux-framework/subscriptions","organizations_url":"https://api.github.com/users/flux-framework/orgs","repos_url":"https://api.github.com/users/flux-framework/repos","events_url":"https://api.github.com/users/flux-framework/events{/privacy}","received_events_url":"https://api.github.com/users/flux-framework/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/flux-framework/rfc","description":"Flux RFC project","fork":false,"url":"https://api.github.com/repos/flux-framework/rfc","forks_url":"https://api.github.com/repos/flux-framework/rfc/forks","keys_url":"https://api.github.com/repos/flux-framework/rfc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flux-framework/rfc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flux-framework/rfc/teams","hooks_url":"https://api.github.com/repos/flux-framework/rfc/hooks","issue_events_url":"https://api.github.com/repos/flux-framework/rfc/issues/events{/number}","events_url":"https://api.github.com/repos/flux-framework/rfc/events","assignees_url":"https://api.github.com/repos/flux-framework/rfc/assignees{/user}","branches_url":"https://api.github.com/repos/flux-framework/rfc/branches{/branch}","tags_url":"https://api.github.com/repos/flux-framework/rfc/tags","blobs_url":"https://api.github.com/repos/flux-framework/rfc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flux-framework/rfc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flux-framework/rfc/git/refs{/sha}","trees_url":"https://api.github.com/repos/flux-framework/rfc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flux-framework/rfc/statuses/{sha}","languages_url":"https://api.github.com/repos/flux-framework/rfc/languages","stargazers_url":"https://api.github.com/repos/flux-framework/rfc/stargazers","contributors_url":"https://api.github.com/repos/flux-framework/rfc/contributors","subscribers_url":"https://api.github.com/repos/flux-framework/rfc/subscribers","subscription_url":"https://api.github.com/repos/flux-framework/rfc/subscription","commits_url":"https://api.github.com/repos/flux-framework/rfc/commits{/sha}","git_commits_url":"https://api.github.com/repos/flux-framework/rfc/git/commits{/sha}","comments_url":"https://api.github.com/repos/flux-framework/rfc/comments{/number}","issue_comment_url":"https://api.github.com/repos/flux-framework/rfc/issues/comments{/number}","contents_url":"https://api.github.com/repos/flux-framework/rfc/contents/{+path}","compare_url":"https://api.github.com/repos/flux-framework/rfc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flux-framework/rfc/merges","archive_url":"https://api.github.com/repos/flux-framework/rfc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flux-framework/rfc/downloads","issues_url":"https://api.github.com/repos/flux-framework/rfc/issues{/number}","pulls_url":"https://api.github.com/repos/flux-framework/rfc/pulls{/number}","milestones_url":"https://api.github.com/repos/flux-framework/rfc/milestones{/number}","notifications_url":"https://api.github.com/repos/flux-framework/rfc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flux-framework/rfc/labels{/name}","releases_url":"https://api.github.com/repos/flux-framework/rfc/releases{/id}","deployments_url":"https://api.github.com/repos/flux-framework/rfc/deployments","created_at":"2014-05-15T16:33:20Z","updated_at":"2016-06-18T02:23:13Z","pushed_at":"2016-07-13T18:30:34Z","git_url":"git://github.com/flux-framework/rfc.git","ssh_url":"git@github.com:flux-framework/rfc.git","clone_url":"https://github.com/flux-framework/rfc.git","svn_url":"https://github.com/flux-framework/rfc","homepage":null,"size":135,"stargazers_count":0,"watchers_count":0,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":2,"forks":4,"open_issues":2,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flux-framework/rfc/pulls/52"},"html":{"href":"https://github.com/flux-framework/rfc/pull/52"},"issue":{"href":"https://api.github.com/repos/flux-framework/rfc/issues/52"},"comments":{"href":"https://api.github.com/repos/flux-framework/rfc/issues/52/comments"},"review_comments":{"href":"https://api.github.com/repos/flux-framework/rfc/pulls/52/comments"},"review_comment":{"href":"https://api.github.com/repos/flux-framework/rfc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flux-framework/rfc/pulls/52/commits"},"statuses":{"href":"https://api.github.com/repos/flux-framework/rfc/statuses/f8f2ae246ad3be8dbfeda5394194a39ac1e7a9d7"}}}}
{"actor":{"display_login":"grondo"}}