{"action":"created","comment":{"url":"https://api.github.com/repos/pytorch/pytorch/pulls/comments/147566519","pull_request_review_id":72683547,"id":147566519,"diff_hunk":"@@ -408,38 +414,26 @@ void Node::lint() const {\n \n }\n \n+// TODO: When lint fails, give better indication about which\n+// instruction triggered the failure.","path":"torch/csrc/jit/ir.cpp","position":61,"original_position":61,"commit_id":"dcb4a12576ffc1c85f540057c6b755d5d486f49b","original_commit_id":"dcb4a12576ffc1c85f540057c6b755d5d486f49b","user":{"login":"ezyang","id":13564,"avatar_url":"https://avatars0.githubusercontent.com/u/13564?v=4","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"body":"I like avoiding having to drop into gdb to debug issues like this; more user friendly ;)","created_at":"2017-10-28T22:59:38Z","updated_at":"2017-10-28T22:59:38Z","html_url":"https://github.com/pytorch/pytorch/pull/3325#discussion_r147566519","pull_request_url":"https://api.github.com/repos/pytorch/pytorch/pulls/3325","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/comments/147566519"},"html":{"href":"https://github.com/pytorch/pytorch/pull/3325#discussion_r147566519"},"pull_request":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/3325"}},"in_reply_to_id":147556169},"pull_request":{"url":"https://api.github.com/repos/pytorch/pytorch/pulls/3325","id":149233758,"html_url":"https://github.com/pytorch/pytorch/pull/3325","diff_url":"https://github.com/pytorch/pytorch/pull/3325.diff","patch_url":"https://github.com/pytorch/pytorch/pull/3325.patch","issue_url":"https://api.github.com/repos/pytorch/pytorch/issues/3325","number":3325,"state":"open","locked":false,"title":"Big batch of JIT and ONNX fixes","user":{"login":"ezyang","id":13564,"avatar_url":"https://avatars0.githubusercontent.com/u/13564?v=4","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"body":"The pieces:\r\n\r\n- I improved the lint / asserts to catch some bugs which I\r\n  committed while working on my export.  There are two new\r\n  properties which the linter checks now:\r\n\r\n    (1) \"Anticipated uses\".  If a node says that is used by\r\n    M, M better appear later in the topsort.  Previously,\r\n    we only checked if it was in all_nodes.\r\n\r\n    (2) If you are a select node, you better be a multi-type node;\r\n    if you're not a select node, you better not be!  And you\r\n    should never have an input that is multi-type.\r\n\r\n- There is a new peephole optimization pass, for simple, local\r\n  transformations to graphs.  Right now, it implements a simple\r\n  optimization: remove 'expand' invocations that are no-ops\r\n  (the size before matches the size after), but we can add other\r\n  things to it later.  I needed this for ONNX because no-op expands\r\n  show up in the left-hand argument, which we don't support.\r\n\r\n- There is now a broadcast fuser, which fuses ATen expand ops\r\n  into broadcastable ONNX ops (Add, Div, Mul, Pow, Sub, Gemm.)\r\n  It only fuses when the original size is a suffix of the new\r\n  size, as per the ONNX spec.\r\n\r\nThen, in the next commit:\r\n\r\n- Deleted Addmm/Concat Function class, as this is now native ATen operator\r\n\r\n- Resurrected ONNX operator for Concat (now called 'cat')\r\n\r\n- Add a \"fake\" Expand ONNX operator, which we now do the optimization on;\r\n  this helps prevent us from emitting a warning that 'expand' is not supported.\r\n  We still fail if any of these Expand operators make it to the final model,\r\n  until we actually formalize Expand in ONNX.  This also simplifies the\r\n  fuseBroadcast code, because single-return ONNX nodes don't get select nodes.\r\n\r\n- New error reporting strategy.  If we fail to export an operator because of\r\n  something, we emit a warning, but otherwise keep going.  At the very end,\r\n  in export.cpp, we now check if there are any ATen operators left over.  If\r\n  there are, we bug out.  This assumes that ATen is lower case and ONNX is upper\r\n  case.  You're now supposed to 'return _unimplemented(msg)' in these cases.\r\n\r\n- New toString() method on Graph, for getting the string graph (useful for\r\n  slapping it into error messages.)\r\n\r\n- Some of the legacy symbolics (still in Python symbolic method of Function\r\n  subclass) have been cleaned up for clarity.)\r\n\r\nCC @dzhulgakov @jamesr66a ","created_at":"2017-10-27T16:33:30Z","updated_at":"2017-10-28T22:59:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f554f6e6a495e326ffc0024c11b2090810051b36","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/pytorch/pytorch/pulls/3325/commits","review_comments_url":"https://api.github.com/repos/pytorch/pytorch/pulls/3325/comments","review_comment_url":"https://api.github.com/repos/pytorch/pytorch/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pytorch/pytorch/issues/3325/comments","statuses_url":"https://api.github.com/repos/pytorch/pytorch/statuses/dcb4a12576ffc1c85f540057c6b755d5d486f49b","head":{"label":"ezyang:pr/expand-opt","ref":"pr/expand-opt","sha":"dcb4a12576ffc1c85f540057c6b755d5d486f49b","user":{"login":"ezyang","id":13564,"avatar_url":"https://avatars0.githubusercontent.com/u/13564?v=4","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"repo":{"id":101798885,"name":"pytorch-1","full_name":"ezyang/pytorch-1","owner":{"login":"ezyang","id":13564,"avatar_url":"https://avatars0.githubusercontent.com/u/13564?v=4","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ezyang/pytorch-1","description":"Tensors and Dynamic neural networks in Python  with strong GPU acceleration","fork":true,"url":"https://api.github.com/repos/ezyang/pytorch-1","forks_url":"https://api.github.com/repos/ezyang/pytorch-1/forks","keys_url":"https://api.github.com/repos/ezyang/pytorch-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ezyang/pytorch-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ezyang/pytorch-1/teams","hooks_url":"https://api.github.com/repos/ezyang/pytorch-1/hooks","issue_events_url":"https://api.github.com/repos/ezyang/pytorch-1/issues/events{/number}","events_url":"https://api.github.com/repos/ezyang/pytorch-1/events","assignees_url":"https://api.github.com/repos/ezyang/pytorch-1/assignees{/user}","branches_url":"https://api.github.com/repos/ezyang/pytorch-1/branches{/branch}","tags_url":"https://api.github.com/repos/ezyang/pytorch-1/tags","blobs_url":"https://api.github.com/repos/ezyang/pytorch-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ezyang/pytorch-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ezyang/pytorch-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/ezyang/pytorch-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ezyang/pytorch-1/statuses/{sha}","languages_url":"https://api.github.com/repos/ezyang/pytorch-1/languages","stargazers_url":"https://api.github.com/repos/ezyang/pytorch-1/stargazers","contributors_url":"https://api.github.com/repos/ezyang/pytorch-1/contributors","subscribers_url":"https://api.github.com/repos/ezyang/pytorch-1/subscribers","subscription_url":"https://api.github.com/repos/ezyang/pytorch-1/subscription","commits_url":"https://api.github.com/repos/ezyang/pytorch-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/ezyang/pytorch-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/ezyang/pytorch-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/ezyang/pytorch-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/ezyang/pytorch-1/contents/{+path}","compare_url":"https://api.github.com/repos/ezyang/pytorch-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ezyang/pytorch-1/merges","archive_url":"https://api.github.com/repos/ezyang/pytorch-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ezyang/pytorch-1/downloads","issues_url":"https://api.github.com/repos/ezyang/pytorch-1/issues{/number}","pulls_url":"https://api.github.com/repos/ezyang/pytorch-1/pulls{/number}","milestones_url":"https://api.github.com/repos/ezyang/pytorch-1/milestones{/number}","notifications_url":"https://api.github.com/repos/ezyang/pytorch-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ezyang/pytorch-1/labels{/name}","releases_url":"https://api.github.com/repos/ezyang/pytorch-1/releases{/id}","deployments_url":"https://api.github.com/repos/ezyang/pytorch-1/deployments","created_at":"2017-08-29T19:28:39Z","updated_at":"2017-08-29T19:28:45Z","pushed_at":"2017-10-27T20:46:14Z","git_url":"git://github.com/ezyang/pytorch-1.git","ssh_url":"git@github.com:ezyang/pytorch-1.git","clone_url":"https://github.com/ezyang/pytorch-1.git","svn_url":"https://github.com/ezyang/pytorch-1","homepage":"http://pytorch.org","size":16880,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pytorch:master","ref":"master","sha":"de1f4e69ddb328aa34d1f8736fd7694664537805","user":{"login":"pytorch","id":21003710,"avatar_url":"https://avatars3.githubusercontent.com/u/21003710?v=4","gravatar_id":"","url":"https://api.github.com/users/pytorch","html_url":"https://github.com/pytorch","followers_url":"https://api.github.com/users/pytorch/followers","following_url":"https://api.github.com/users/pytorch/following{/other_user}","gists_url":"https://api.github.com/users/pytorch/gists{/gist_id}","starred_url":"https://api.github.com/users/pytorch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pytorch/subscriptions","organizations_url":"https://api.github.com/users/pytorch/orgs","repos_url":"https://api.github.com/users/pytorch/repos","events_url":"https://api.github.com/users/pytorch/events{/privacy}","received_events_url":"https://api.github.com/users/pytorch/received_events","type":"Organization","site_admin":false},"repo":{"id":65600975,"name":"pytorch","full_name":"pytorch/pytorch","owner":{"login":"pytorch","id":21003710,"avatar_url":"https://avatars3.githubusercontent.com/u/21003710?v=4","gravatar_id":"","url":"https://api.github.com/users/pytorch","html_url":"https://github.com/pytorch","followers_url":"https://api.github.com/users/pytorch/followers","following_url":"https://api.github.com/users/pytorch/following{/other_user}","gists_url":"https://api.github.com/users/pytorch/gists{/gist_id}","starred_url":"https://api.github.com/users/pytorch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pytorch/subscriptions","organizations_url":"https://api.github.com/users/pytorch/orgs","repos_url":"https://api.github.com/users/pytorch/repos","events_url":"https://api.github.com/users/pytorch/events{/privacy}","received_events_url":"https://api.github.com/users/pytorch/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pytorch/pytorch","description":"Tensors and Dynamic neural networks in Python  with strong GPU acceleration","fork":false,"url":"https://api.github.com/repos/pytorch/pytorch","forks_url":"https://api.github.com/repos/pytorch/pytorch/forks","keys_url":"https://api.github.com/repos/pytorch/pytorch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pytorch/pytorch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pytorch/pytorch/teams","hooks_url":"https://api.github.com/repos/pytorch/pytorch/hooks","issue_events_url":"https://api.github.com/repos/pytorch/pytorch/issues/events{/number}","events_url":"https://api.github.com/repos/pytorch/pytorch/events","assignees_url":"https://api.github.com/repos/pytorch/pytorch/assignees{/user}","branches_url":"https://api.github.com/repos/pytorch/pytorch/branches{/branch}","tags_url":"https://api.github.com/repos/pytorch/pytorch/tags","blobs_url":"https://api.github.com/repos/pytorch/pytorch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pytorch/pytorch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pytorch/pytorch/git/refs{/sha}","trees_url":"https://api.github.com/repos/pytorch/pytorch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pytorch/pytorch/statuses/{sha}","languages_url":"https://api.github.com/repos/pytorch/pytorch/languages","stargazers_url":"https://api.github.com/repos/pytorch/pytorch/stargazers","contributors_url":"https://api.github.com/repos/pytorch/pytorch/contributors","subscribers_url":"https://api.github.com/repos/pytorch/pytorch/subscribers","subscription_url":"https://api.github.com/repos/pytorch/pytorch/subscription","commits_url":"https://api.github.com/repos/pytorch/pytorch/commits{/sha}","git_commits_url":"https://api.github.com/repos/pytorch/pytorch/git/commits{/sha}","comments_url":"https://api.github.com/repos/pytorch/pytorch/comments{/number}","issue_comment_url":"https://api.github.com/repos/pytorch/pytorch/issues/comments{/number}","contents_url":"https://api.github.com/repos/pytorch/pytorch/contents/{+path}","compare_url":"https://api.github.com/repos/pytorch/pytorch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pytorch/pytorch/merges","archive_url":"https://api.github.com/repos/pytorch/pytorch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pytorch/pytorch/downloads","issues_url":"https://api.github.com/repos/pytorch/pytorch/issues{/number}","pulls_url":"https://api.github.com/repos/pytorch/pytorch/pulls{/number}","milestones_url":"https://api.github.com/repos/pytorch/pytorch/milestones{/number}","notifications_url":"https://api.github.com/repos/pytorch/pytorch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pytorch/pytorch/labels{/name}","releases_url":"https://api.github.com/repos/pytorch/pytorch/releases{/id}","deployments_url":"https://api.github.com/repos/pytorch/pytorch/deployments","created_at":"2016-08-13T05:26:41Z","updated_at":"2017-10-28T16:52:23Z","pushed_at":"2017-10-28T22:52:36Z","git_url":"git://github.com/pytorch/pytorch.git","ssh_url":"git@github.com:pytorch/pytorch.git","clone_url":"https://github.com/pytorch/pytorch.git","svn_url":"https://github.com/pytorch/pytorch","homepage":"http://pytorch.org","size":16832,"stargazers_count":8549,"watchers_count":8549,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1794,"mirror_url":null,"archived":false,"open_issues_count":457,"forks":1794,"open_issues":457,"watchers":8549,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/3325"},"html":{"href":"https://github.com/pytorch/pytorch/pull/3325"},"issue":{"href":"https://api.github.com/repos/pytorch/pytorch/issues/3325"},"comments":{"href":"https://api.github.com/repos/pytorch/pytorch/issues/3325/comments"},"review_comments":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/3325/comments"},"review_comment":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pytorch/pytorch/pulls/3325/commits"},"statuses":{"href":"https://api.github.com/repos/pytorch/pytorch/statuses/dcb4a12576ffc1c85f540057c6b755d5d486f49b"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"ezyang"}}