{"action":"created","comment":{"url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments/140906563","pull_request_review_id":65045318,"id":140906563,"diff_hunk":"@@ -0,0 +1,150 @@\n+## 整体思路\n+\n+### 执行流程：\n+\n+- 用户通过Symbol来描述网络拓扑结构\n+\n+- Symbol书写完毕后，会bind到一个Executor上\n+\n+- Executor里面会完成Graph的构建，包括插入backward operator/copy operator等；同时完成InferShape/InferType等，并分配内存(这里需要注意的是，当输入数据的大小发生变化时，需要重新bind得到一个新的Executor)\n+\n+- Executor有一个RunOps方法，在这里依次把operator的操作push到Engine中","path":"doc/design/mxnet_executor_survey.md","position":11,"original_position":11,"commit_id":"66477b55a253741795eb260f1700ec24b1fddae7","original_commit_id":"66477b55a253741795eb260f1700ec24b1fddae7","user":{"login":"QiJune","id":22017000,"avatar_url":"https://avatars0.githubusercontent.com/u/22017000?v=4","gravatar_id":"","url":"https://api.github.com/users/QiJune","html_url":"https://github.com/QiJune","followers_url":"https://api.github.com/users/QiJune/followers","following_url":"https://api.github.com/users/QiJune/following{/other_user}","gists_url":"https://api.github.com/users/QiJune/gists{/gist_id}","starred_url":"https://api.github.com/users/QiJune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QiJune/subscriptions","organizations_url":"https://api.github.com/users/QiJune/orgs","repos_url":"https://api.github.com/users/QiJune/repos","events_url":"https://api.github.com/users/QiJune/events{/privacy}","received_events_url":"https://api.github.com/users/QiJune/received_events","type":"User","site_admin":false},"body":"不是的。\r\nMxnet暴露给用户端的接口是`Symbol`，`Executor`的作用是对`Symbol`进行解析，得到`Graph`，并且会对`Graph`做若干pass的优化。同时`Executor`也拥有一个RunOps的接口，用来执行`Graph`中的每一个Op。\r\n而`Engine`是比较通用的分析数据依赖的引擎，主要作用是对Op的data dependency进行分析，可以做一定的并行优化。Mxnet的`Engine`设计的比较通用而独立，可以应用在别的需要分析data dependency的场景下。\r\n\r\n","created_at":"2017-09-25T21:41:08Z","updated_at":"2017-09-25T21:41:08Z","html_url":"https://github.com/PaddlePaddle/Paddle/pull/4298#discussion_r140906563","pull_request_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments/140906563"},"html":{"href":"https://github.com/PaddlePaddle/Paddle/pull/4298#discussion_r140906563"},"pull_request":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298"}},"in_reply_to_id":140892271},"pull_request":{"url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298","id":142287895,"html_url":"https://github.com/PaddlePaddle/Paddle/pull/4298","diff_url":"https://github.com/PaddlePaddle/Paddle/pull/4298.diff","patch_url":"https://github.com/PaddlePaddle/Paddle/pull/4298.patch","issue_url":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/4298","number":4298,"state":"open","locked":false,"title":"Mxnet executor survey","user":{"login":"QiJune","id":22017000,"avatar_url":"https://avatars0.githubusercontent.com/u/22017000?v=4","gravatar_id":"","url":"https://api.github.com/users/QiJune","html_url":"https://github.com/QiJune","followers_url":"https://api.github.com/users/QiJune/followers","following_url":"https://api.github.com/users/QiJune/following{/other_user}","gists_url":"https://api.github.com/users/QiJune/gists{/gist_id}","starred_url":"https://api.github.com/users/QiJune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QiJune/subscriptions","organizations_url":"https://api.github.com/users/QiJune/orgs","repos_url":"https://api.github.com/users/QiJune/repos","events_url":"https://api.github.com/users/QiJune/events{/privacy}","received_events_url":"https://api.github.com/users/QiJune/received_events","type":"User","site_admin":false},"body":"[Here](https://github.com/QiJune/Paddle/blob/66477b55a253741795eb260f1700ec24b1fddae7/doc/design/mxnet_executor_survey.md) is better for review.\r\nWe have a lot of discussions in  https://github.com/PaddlePaddle/Paddle/issues/4031. The design of TensorFlow and Mxnet are both helpful. I make a Mxnet executor survey for reference and further discussion.","created_at":"2017-09-21T08:50:06Z","updated_at":"2017-09-25T21:41:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5e0ce31e1baf499b7da7ab746da2985bd881b609","assignee":null,"assignees":[],"requested_reviewers":[{"login":"Superjom","id":328693,"avatar_url":"https://avatars1.githubusercontent.com/u/328693?v=4","gravatar_id":"","url":"https://api.github.com/users/Superjom","html_url":"https://github.com/Superjom","followers_url":"https://api.github.com/users/Superjom/followers","following_url":"https://api.github.com/users/Superjom/following{/other_user}","gists_url":"https://api.github.com/users/Superjom/gists{/gist_id}","starred_url":"https://api.github.com/users/Superjom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Superjom/subscriptions","organizations_url":"https://api.github.com/users/Superjom/orgs","repos_url":"https://api.github.com/users/Superjom/repos","events_url":"https://api.github.com/users/Superjom/events{/privacy}","received_events_url":"https://api.github.com/users/Superjom/received_events","type":"User","site_admin":false},{"login":"reyoung","id":728699,"avatar_url":"https://avatars2.githubusercontent.com/u/728699?v=4","gravatar_id":"","url":"https://api.github.com/users/reyoung","html_url":"https://github.com/reyoung","followers_url":"https://api.github.com/users/reyoung/followers","following_url":"https://api.github.com/users/reyoung/following{/other_user}","gists_url":"https://api.github.com/users/reyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/reyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reyoung/subscriptions","organizations_url":"https://api.github.com/users/reyoung/orgs","repos_url":"https://api.github.com/users/reyoung/repos","events_url":"https://api.github.com/users/reyoung/events{/privacy}","received_events_url":"https://api.github.com/users/reyoung/received_events","type":"User","site_admin":false},{"login":"wangkuiyi","id":1548775,"avatar_url":"https://avatars0.githubusercontent.com/u/1548775?v=4","gravatar_id":"","url":"https://api.github.com/users/wangkuiyi","html_url":"https://github.com/wangkuiyi","followers_url":"https://api.github.com/users/wangkuiyi/followers","following_url":"https://api.github.com/users/wangkuiyi/following{/other_user}","gists_url":"https://api.github.com/users/wangkuiyi/gists{/gist_id}","starred_url":"https://api.github.com/users/wangkuiyi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wangkuiyi/subscriptions","organizations_url":"https://api.github.com/users/wangkuiyi/orgs","repos_url":"https://api.github.com/users/wangkuiyi/repos","events_url":"https://api.github.com/users/wangkuiyi/events{/privacy}","received_events_url":"https://api.github.com/users/wangkuiyi/received_events","type":"User","site_admin":false},{"login":"dzhwinter","id":6687176,"avatar_url":"https://avatars2.githubusercontent.com/u/6687176?v=4","gravatar_id":"","url":"https://api.github.com/users/dzhwinter","html_url":"https://github.com/dzhwinter","followers_url":"https://api.github.com/users/dzhwinter/followers","following_url":"https://api.github.com/users/dzhwinter/following{/other_user}","gists_url":"https://api.github.com/users/dzhwinter/gists{/gist_id}","starred_url":"https://api.github.com/users/dzhwinter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dzhwinter/subscriptions","organizations_url":"https://api.github.com/users/dzhwinter/orgs","repos_url":"https://api.github.com/users/dzhwinter/repos","events_url":"https://api.github.com/users/dzhwinter/events{/privacy}","received_events_url":"https://api.github.com/users/dzhwinter/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298/commits","review_comments_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298/comments","review_comment_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments{/number}","comments_url":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/4298/comments","statuses_url":"https://api.github.com/repos/PaddlePaddle/Paddle/statuses/66477b55a253741795eb260f1700ec24b1fddae7","head":{"label":"QiJune:mxnet_executor_survey","ref":"mxnet_executor_survey","sha":"66477b55a253741795eb260f1700ec24b1fddae7","user":{"login":"QiJune","id":22017000,"avatar_url":"https://avatars0.githubusercontent.com/u/22017000?v=4","gravatar_id":"","url":"https://api.github.com/users/QiJune","html_url":"https://github.com/QiJune","followers_url":"https://api.github.com/users/QiJune/followers","following_url":"https://api.github.com/users/QiJune/following{/other_user}","gists_url":"https://api.github.com/users/QiJune/gists{/gist_id}","starred_url":"https://api.github.com/users/QiJune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QiJune/subscriptions","organizations_url":"https://api.github.com/users/QiJune/orgs","repos_url":"https://api.github.com/users/QiJune/repos","events_url":"https://api.github.com/users/QiJune/events{/privacy}","received_events_url":"https://api.github.com/users/QiJune/received_events","type":"User","site_admin":false},"repo":{"id":68076834,"name":"Paddle","full_name":"QiJune/Paddle","owner":{"login":"QiJune","id":22017000,"avatar_url":"https://avatars0.githubusercontent.com/u/22017000?v=4","gravatar_id":"","url":"https://api.github.com/users/QiJune","html_url":"https://github.com/QiJune","followers_url":"https://api.github.com/users/QiJune/followers","following_url":"https://api.github.com/users/QiJune/following{/other_user}","gists_url":"https://api.github.com/users/QiJune/gists{/gist_id}","starred_url":"https://api.github.com/users/QiJune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QiJune/subscriptions","organizations_url":"https://api.github.com/users/QiJune/orgs","repos_url":"https://api.github.com/users/QiJune/repos","events_url":"https://api.github.com/users/QiJune/events{/privacy}","received_events_url":"https://api.github.com/users/QiJune/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/QiJune/Paddle","description":"PArallel Distributed Deep LEarning","fork":true,"url":"https://api.github.com/repos/QiJune/Paddle","forks_url":"https://api.github.com/repos/QiJune/Paddle/forks","keys_url":"https://api.github.com/repos/QiJune/Paddle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/QiJune/Paddle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/QiJune/Paddle/teams","hooks_url":"https://api.github.com/repos/QiJune/Paddle/hooks","issue_events_url":"https://api.github.com/repos/QiJune/Paddle/issues/events{/number}","events_url":"https://api.github.com/repos/QiJune/Paddle/events","assignees_url":"https://api.github.com/repos/QiJune/Paddle/assignees{/user}","branches_url":"https://api.github.com/repos/QiJune/Paddle/branches{/branch}","tags_url":"https://api.github.com/repos/QiJune/Paddle/tags","blobs_url":"https://api.github.com/repos/QiJune/Paddle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/QiJune/Paddle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/QiJune/Paddle/git/refs{/sha}","trees_url":"https://api.github.com/repos/QiJune/Paddle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/QiJune/Paddle/statuses/{sha}","languages_url":"https://api.github.com/repos/QiJune/Paddle/languages","stargazers_url":"https://api.github.com/repos/QiJune/Paddle/stargazers","contributors_url":"https://api.github.com/repos/QiJune/Paddle/contributors","subscribers_url":"https://api.github.com/repos/QiJune/Paddle/subscribers","subscription_url":"https://api.github.com/repos/QiJune/Paddle/subscription","commits_url":"https://api.github.com/repos/QiJune/Paddle/commits{/sha}","git_commits_url":"https://api.github.com/repos/QiJune/Paddle/git/commits{/sha}","comments_url":"https://api.github.com/repos/QiJune/Paddle/comments{/number}","issue_comment_url":"https://api.github.com/repos/QiJune/Paddle/issues/comments{/number}","contents_url":"https://api.github.com/repos/QiJune/Paddle/contents/{+path}","compare_url":"https://api.github.com/repos/QiJune/Paddle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/QiJune/Paddle/merges","archive_url":"https://api.github.com/repos/QiJune/Paddle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/QiJune/Paddle/downloads","issues_url":"https://api.github.com/repos/QiJune/Paddle/issues{/number}","pulls_url":"https://api.github.com/repos/QiJune/Paddle/pulls{/number}","milestones_url":"https://api.github.com/repos/QiJune/Paddle/milestones{/number}","notifications_url":"https://api.github.com/repos/QiJune/Paddle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/QiJune/Paddle/labels{/name}","releases_url":"https://api.github.com/repos/QiJune/Paddle/releases{/id}","deployments_url":"https://api.github.com/repos/QiJune/Paddle/deployments","created_at":"2016-09-13T05:21:28Z","updated_at":"2016-09-13T05:21:31Z","pushed_at":"2017-09-21T08:56:58Z","git_url":"git://github.com/QiJune/Paddle.git","ssh_url":"git@github.com:QiJune/Paddle.git","clone_url":"https://github.com/QiJune/Paddle.git","svn_url":"https://github.com/QiJune/Paddle","homepage":"http://www.paddlepaddle.org/","size":30336,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"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":"PaddlePaddle:develop","ref":"develop","sha":"0ee967b51330c7020ec85bb054a07f05acc6e043","user":{"login":"PaddlePaddle","id":23534030,"avatar_url":"https://avatars3.githubusercontent.com/u/23534030?v=4","gravatar_id":"","url":"https://api.github.com/users/PaddlePaddle","html_url":"https://github.com/PaddlePaddle","followers_url":"https://api.github.com/users/PaddlePaddle/followers","following_url":"https://api.github.com/users/PaddlePaddle/following{/other_user}","gists_url":"https://api.github.com/users/PaddlePaddle/gists{/gist_id}","starred_url":"https://api.github.com/users/PaddlePaddle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaddlePaddle/subscriptions","organizations_url":"https://api.github.com/users/PaddlePaddle/orgs","repos_url":"https://api.github.com/users/PaddlePaddle/repos","events_url":"https://api.github.com/users/PaddlePaddle/events{/privacy}","received_events_url":"https://api.github.com/users/PaddlePaddle/received_events","type":"Organization","site_admin":false},"repo":{"id":65711522,"name":"Paddle","full_name":"PaddlePaddle/Paddle","owner":{"login":"PaddlePaddle","id":23534030,"avatar_url":"https://avatars3.githubusercontent.com/u/23534030?v=4","gravatar_id":"","url":"https://api.github.com/users/PaddlePaddle","html_url":"https://github.com/PaddlePaddle","followers_url":"https://api.github.com/users/PaddlePaddle/followers","following_url":"https://api.github.com/users/PaddlePaddle/following{/other_user}","gists_url":"https://api.github.com/users/PaddlePaddle/gists{/gist_id}","starred_url":"https://api.github.com/users/PaddlePaddle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaddlePaddle/subscriptions","organizations_url":"https://api.github.com/users/PaddlePaddle/orgs","repos_url":"https://api.github.com/users/PaddlePaddle/repos","events_url":"https://api.github.com/users/PaddlePaddle/events{/privacy}","received_events_url":"https://api.github.com/users/PaddlePaddle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/PaddlePaddle/Paddle","description":"PArallel Distributed Deep LEarning","fork":false,"url":"https://api.github.com/repos/PaddlePaddle/Paddle","forks_url":"https://api.github.com/repos/PaddlePaddle/Paddle/forks","keys_url":"https://api.github.com/repos/PaddlePaddle/Paddle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PaddlePaddle/Paddle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PaddlePaddle/Paddle/teams","hooks_url":"https://api.github.com/repos/PaddlePaddle/Paddle/hooks","issue_events_url":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/events{/number}","events_url":"https://api.github.com/repos/PaddlePaddle/Paddle/events","assignees_url":"https://api.github.com/repos/PaddlePaddle/Paddle/assignees{/user}","branches_url":"https://api.github.com/repos/PaddlePaddle/Paddle/branches{/branch}","tags_url":"https://api.github.com/repos/PaddlePaddle/Paddle/tags","blobs_url":"https://api.github.com/repos/PaddlePaddle/Paddle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PaddlePaddle/Paddle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PaddlePaddle/Paddle/git/refs{/sha}","trees_url":"https://api.github.com/repos/PaddlePaddle/Paddle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PaddlePaddle/Paddle/statuses/{sha}","languages_url":"https://api.github.com/repos/PaddlePaddle/Paddle/languages","stargazers_url":"https://api.github.com/repos/PaddlePaddle/Paddle/stargazers","contributors_url":"https://api.github.com/repos/PaddlePaddle/Paddle/contributors","subscribers_url":"https://api.github.com/repos/PaddlePaddle/Paddle/subscribers","subscription_url":"https://api.github.com/repos/PaddlePaddle/Paddle/subscription","commits_url":"https://api.github.com/repos/PaddlePaddle/Paddle/commits{/sha}","git_commits_url":"https://api.github.com/repos/PaddlePaddle/Paddle/git/commits{/sha}","comments_url":"https://api.github.com/repos/PaddlePaddle/Paddle/comments{/number}","issue_comment_url":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/comments{/number}","contents_url":"https://api.github.com/repos/PaddlePaddle/Paddle/contents/{+path}","compare_url":"https://api.github.com/repos/PaddlePaddle/Paddle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PaddlePaddle/Paddle/merges","archive_url":"https://api.github.com/repos/PaddlePaddle/Paddle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PaddlePaddle/Paddle/downloads","issues_url":"https://api.github.com/repos/PaddlePaddle/Paddle/issues{/number}","pulls_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls{/number}","milestones_url":"https://api.github.com/repos/PaddlePaddle/Paddle/milestones{/number}","notifications_url":"https://api.github.com/repos/PaddlePaddle/Paddle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PaddlePaddle/Paddle/labels{/name}","releases_url":"https://api.github.com/repos/PaddlePaddle/Paddle/releases{/id}","deployments_url":"https://api.github.com/repos/PaddlePaddle/Paddle/deployments","created_at":"2016-08-15T06:59:08Z","updated_at":"2017-09-25T15:48:59Z","pushed_at":"2017-09-25T21:31:12Z","git_url":"git://github.com/PaddlePaddle/Paddle.git","ssh_url":"git@github.com:PaddlePaddle/Paddle.git","clone_url":"https://github.com/PaddlePaddle/Paddle.git","svn_url":"https://github.com/PaddlePaddle/Paddle","homepage":"http://www.paddlepaddle.org/","size":52577,"stargazers_count":5468,"watchers_count":5468,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1464,"mirror_url":null,"open_issues_count":659,"forks":1464,"open_issues":659,"watchers":5468,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298"},"html":{"href":"https://github.com/PaddlePaddle/Paddle/pull/4298"},"issue":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/4298"},"comments":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/4298/comments"},"review_comments":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298/comments"},"review_comment":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/4298/commits"},"statuses":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/statuses/66477b55a253741795eb260f1700ec24b1fddae7"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"QiJune"}}