{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/59580736","id":59580736,"diff_hunk":"@@ -0,0 +1,339 @@\n+<!-- BEGIN MUNGE: UNVERSIONED_WARNING -->\n+\n+<!-- BEGIN STRIP_FOR_RELEASE -->\n+\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+\n+<h2>PLEASE NOTE: This document applies to the HEAD of the source tree</h2>\n+\n+If you are using a released version of Kubernetes, you should\n+refer to the docs that go with that version.\n+\n+Documentation for other releases can be found at\n+[releases.k8s.io](http://releases.k8s.io).\n+</strong>\n+--\n+\n+<!-- END STRIP_FOR_RELEASE -->\n+\n+<!-- END MUNGE: UNVERSIONED_WARNING -->\n+\n+<!-- BEGIN MUNGE: GENERATED_TOC -->\n+\n+- [GPU support](#gpu-support)\n+  - [Objective](#objective)\n+  - [Background](#background)\n+  - [Detailed discussion](#detailed-discussion)\n+    - [Inventory](#inventory)\n+    - [Scheduling](#scheduling)\n+    - [The runtime](#the-runtime)\n+      - [NVIDIA support](#nvidia-support)\n+    - [Event flow](#event-flow)\n+  - [Implementation plan](#implementation-plan)\n+    - [V0](#v0)\n+      - [Scheduling](#scheduling)\n+      - [Runtime](#runtime)\n+      - [Other](#other)\n+  - [Future work](#future-work)\n+    - [V1](#v1)\n+    - [V2](#v2)\n+    - [V3](#v3)\n+    - [Undetermined](#undetermined)\n+  - [Security considerations](#security-considerations)\n+\n+<!-- END MUNGE: GENERATED_TOC -->\n+\n+# GPU support\n+\n+Author: @therc\n+\n+Date: Apr 2016\n+\n+Status: Design in progress, early implementation of requirements\n+\n+## Objective\n+\n+Users should be able to request GPU resources for their workloads, as easily as\n+for CPU or memory. Kubernetes should keep an inventory of machines with GPU\n+hardware, schedule containers on appropriate nodes and set up the container\n+environment with all that's necessary to access the GPU. All of this should\n+eventually be supported for clusters on either bare metal or cloud providers.\n+\n+## Background\n+\n+An increasing number of workloads, such as machine learning and seismic survey\n+processing, benefits from offloading computations to graphic hardware. While not\n+as tuned as traditional, dedicated high performance computing systems such as\n+MPI, a Kubernetes cluster can still be a great environment for organizations\n+that need a variety of additional, \"classic\" workloads, such as database, web\n+serving, etc.\n+\n+GPU support is hard to provide extensively and will thus take time to tame\n+completely, because\n+\n+- different vendors expose the hardware to users in different ways\n+- some vendors require fairly tight coupling between the kernel driver\n+controlling the GPU and the libraries/applications that access the hardware\n+- it adds more resource types (whole GPUs, GPU cores, GPU memory)","path":"docs/proposals/gpu-support.md","position":86,"original_position":86,"commit_id":"42d176275298a06e6433b25a1bdeb0efac23d4a9","original_commit_id":"42d176275298a06e6433b25a1bdeb0efac23d4a9","user":{"login":"hongchaodeng","id":920884,"avatar_url":"https://avatars.githubusercontent.com/u/920884?v=3","gravatar_id":"","url":"https://api.github.com/users/hongchaodeng","html_url":"https://github.com/hongchaodeng","followers_url":"https://api.github.com/users/hongchaodeng/followers","following_url":"https://api.github.com/users/hongchaodeng/following{/other_user}","gists_url":"https://api.github.com/users/hongchaodeng/gists{/gist_id}","starred_url":"https://api.github.com/users/hongchaodeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hongchaodeng/subscriptions","organizations_url":"https://api.github.com/users/hongchaodeng/orgs","repos_url":"https://api.github.com/users/hongchaodeng/repos","events_url":"https://api.github.com/users/hongchaodeng/events{/privacy}","received_events_url":"https://api.github.com/users/hongchaodeng/received_events","type":"User","site_admin":false},"body":"> Wouldn't pod affinity help here?\r\n\r\nI think let's not make it complicated at first step, i.e. coupling with unnecessary things.\r\n\r\nI agree that we could try giving user the capability to opt in to device sharing. This sounds like real use case, although conservation of resources sharing should be done.","created_at":"2016-04-13T16:33:21Z","updated_at":"2016-04-13T16:33:21Z","html_url":"https://github.com/kubernetes/kubernetes/pull/24071#discussion_r59580736","pull_request_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/59580736"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/24071#discussion_r59580736"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071","id":65857849,"html_url":"https://github.com/kubernetes/kubernetes/pull/24071","diff_url":"https://github.com/kubernetes/kubernetes/pull/24071.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/24071.patch","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/24071","number":24071,"state":"open","locked":false,"title":"Initial design doc for AWS GPU support","user":{"login":"therc","id":13481082,"avatar_url":"https://avatars.githubusercontent.com/u/13481082?v=3","gravatar_id":"","url":"https://api.github.com/users/therc","html_url":"https://github.com/therc","followers_url":"https://api.github.com/users/therc/followers","following_url":"https://api.github.com/users/therc/following{/other_user}","gists_url":"https://api.github.com/users/therc/gists{/gist_id}","starred_url":"https://api.github.com/users/therc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/therc/subscriptions","organizations_url":"https://api.github.com/users/therc/orgs","repos_url":"https://api.github.com/users/therc/repos","events_url":"https://api.github.com/users/therc/events{/privacy}","received_events_url":"https://api.github.com/users/therc/received_events","type":"User","site_admin":false},"body":"This is really v0\r\n\r\ncc @erictune @davidopp @ravigadde @Hui-Zhi @Random-Liu ","created_at":"2016-04-08T22:50:38Z","updated_at":"2016-04-13T16:33:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8051b9e3db858a170a92506888129f639267e1ce","assignee":{"login":"erictune","id":8105590,"avatar_url":"https://avatars.githubusercontent.com/u/8105590?v=3","gravatar_id":"","url":"https://api.github.com/users/erictune","html_url":"https://github.com/erictune","followers_url":"https://api.github.com/users/erictune/followers","following_url":"https://api.github.com/users/erictune/following{/other_user}","gists_url":"https://api.github.com/users/erictune/gists{/gist_id}","starred_url":"https://api.github.com/users/erictune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erictune/subscriptions","organizations_url":"https://api.github.com/users/erictune/orgs","repos_url":"https://api.github.com/users/erictune/repos","events_url":"https://api.github.com/users/erictune/events{/privacy}","received_events_url":"https://api.github.com/users/erictune/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/24071/comments","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/42d176275298a06e6433b25a1bdeb0efac23d4a9","head":{"label":"Clarifai:gpu","ref":"gpu","sha":"42d176275298a06e6433b25a1bdeb0efac23d4a9","user":{"login":"Clarifai","id":8550654,"avatar_url":"https://avatars.githubusercontent.com/u/8550654?v=3","gravatar_id":"","url":"https://api.github.com/users/Clarifai","html_url":"https://github.com/Clarifai","followers_url":"https://api.github.com/users/Clarifai/followers","following_url":"https://api.github.com/users/Clarifai/following{/other_user}","gists_url":"https://api.github.com/users/Clarifai/gists{/gist_id}","starred_url":"https://api.github.com/users/Clarifai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Clarifai/subscriptions","organizations_url":"https://api.github.com/users/Clarifai/orgs","repos_url":"https://api.github.com/users/Clarifai/repos","events_url":"https://api.github.com/users/Clarifai/events{/privacy}","received_events_url":"https://api.github.com/users/Clarifai/received_events","type":"Organization","site_admin":false},"repo":{"id":49165232,"name":"kubernetes","full_name":"Clarifai/kubernetes","owner":{"login":"Clarifai","id":8550654,"avatar_url":"https://avatars.githubusercontent.com/u/8550654?v=3","gravatar_id":"","url":"https://api.github.com/users/Clarifai","html_url":"https://github.com/Clarifai","followers_url":"https://api.github.com/users/Clarifai/followers","following_url":"https://api.github.com/users/Clarifai/following{/other_user}","gists_url":"https://api.github.com/users/Clarifai/gists{/gist_id}","starred_url":"https://api.github.com/users/Clarifai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Clarifai/subscriptions","organizations_url":"https://api.github.com/users/Clarifai/orgs","repos_url":"https://api.github.com/users/Clarifai/repos","events_url":"https://api.github.com/users/Clarifai/events{/privacy}","received_events_url":"https://api.github.com/users/Clarifai/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Clarifai/kubernetes","description":"Container Cluster Manager from Google","fork":true,"url":"https://api.github.com/repos/Clarifai/kubernetes","forks_url":"https://api.github.com/repos/Clarifai/kubernetes/forks","keys_url":"https://api.github.com/repos/Clarifai/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Clarifai/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Clarifai/kubernetes/teams","hooks_url":"https://api.github.com/repos/Clarifai/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/Clarifai/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/Clarifai/kubernetes/events","assignees_url":"https://api.github.com/repos/Clarifai/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/Clarifai/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/Clarifai/kubernetes/tags","blobs_url":"https://api.github.com/repos/Clarifai/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Clarifai/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Clarifai/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/Clarifai/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Clarifai/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/Clarifai/kubernetes/languages","stargazers_url":"https://api.github.com/repos/Clarifai/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/Clarifai/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/Clarifai/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/Clarifai/kubernetes/subscription","commits_url":"https://api.github.com/repos/Clarifai/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/Clarifai/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/Clarifai/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/Clarifai/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/Clarifai/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/Clarifai/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Clarifai/kubernetes/merges","archive_url":"https://api.github.com/repos/Clarifai/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Clarifai/kubernetes/downloads","issues_url":"https://api.github.com/repos/Clarifai/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/Clarifai/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/Clarifai/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/Clarifai/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Clarifai/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/Clarifai/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/Clarifai/kubernetes/deployments","created_at":"2016-01-06T22:19:11Z","updated_at":"2016-01-11T08:28:58Z","pushed_at":"2016-04-10T20:08:10Z","git_url":"git://github.com/Clarifai/kubernetes.git","ssh_url":"git@github.com:Clarifai/kubernetes.git","clone_url":"https://github.com/Clarifai/kubernetes.git","svn_url":"https://github.com/Clarifai/kubernetes","homepage":"http://kubernetes.io","size":187303,"stargazers_count":1,"watchers_count":1,"language":"Go","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":1,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"e31177219b1918cd159128aecac7ca1a27d460a5","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":20580498,"name":"kubernetes","full_name":"kubernetes/kubernetes","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/kubernetes","description":"Container Cluster Manager from Google","fork":false,"url":"https://api.github.com/repos/kubernetes/kubernetes","forks_url":"https://api.github.com/repos/kubernetes/kubernetes/forks","keys_url":"https://api.github.com/repos/kubernetes/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/kubernetes/teams","hooks_url":"https://api.github.com/repos/kubernetes/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/kubernetes/events","assignees_url":"https://api.github.com/repos/kubernetes/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/kubernetes/tags","blobs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/kubernetes/languages","stargazers_url":"https://api.github.com/repos/kubernetes/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/kubernetes/subscription","commits_url":"https://api.github.com/repos/kubernetes/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/kubernetes/merges","archive_url":"https://api.github.com/repos/kubernetes/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/kubernetes/downloads","issues_url":"https://api.github.com/repos/kubernetes/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/kubernetes/deployments","created_at":"2014-06-06T22:56:04Z","updated_at":"2016-04-13T15:04:44Z","pushed_at":"2016-04-13T16:24:21Z","git_url":"git://github.com/kubernetes/kubernetes.git","ssh_url":"git@github.com:kubernetes/kubernetes.git","clone_url":"https://github.com/kubernetes/kubernetes.git","svn_url":"https://github.com/kubernetes/kubernetes","homepage":"http://kubernetes.io","size":361851,"stargazers_count":13839,"watchers_count":13839,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":4088,"mirror_url":null,"open_issues_count":3399,"forks":4088,"open_issues":3399,"watchers":13839,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/24071"},"issue":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/24071"},"comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/24071/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/24071/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kubernetes/statuses/42d176275298a06e6433b25a1bdeb0efac23d4a9"}}}}