{"action":"created","comment":{"url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments/120334395","pull_request_review_id":42286406,"id":120334395,"diff_hunk":"@@ -0,0 +1,123 @@\n+/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.\n+\n+Licensed under the Apache License, Version 2.0 (the \"License\");\n+you may not use this file except in compliance with the License.\n+You may obtain a copy of the License at\n+\n+    http://www.apache.org/licenses/LICENSE-2.0\n+\n+Unless required by applicable law or agreed to in writing, software\n+distributed under the License is distributed on an \"AS IS\" BASIS,\n+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+See the License for the specific language governing permissions and\n+limitations under the License. */\n+\n+#include <gtest/gtest.h>\n+#include <memory>\n+#include \"Function.h\"\n+#include \"FunctionTest.h\"\n+\n+namespace paddle {\n+\n+enum TestType {\n+  FORWARD_TEST = 0,\n+  BACKWARD_INPUT_TEST = 1,\n+  BACKWARD_FILTER_TEST = 2,\n+};\n+\n+template <DeviceType DType1, DeviceType DType2>\n+class ConvolutionTest {\n+public:\n+  ConvolutionTest(const std::string& conv1,\n+                  const std::string& conv2,\n+                  TestType type,\n+                  std::string algo = \"auto\") {\n+    for (size_t batchSize : {1, 32}) {\n+      for (size_t inputSize : {7, 14, 54}) {\n+        for (size_t filterSize : {1, 3, 5}) {\n+          for (size_t inputChannels : {3, 64}) {\n+            for (size_t outputChannels : {3, 64, 128}) {","path":"paddle/function/ConvOpTest.cpp","position":39,"original_position":39,"commit_id":"7aac38c794ffb1df10db4d61ac4350a32bdc62ed","original_commit_id":"7aac38c794ffb1df10db4d61ac4350a32bdc62ed","user":{"login":"qingqing01","id":7845005,"avatar_url":"https://avatars3.githubusercontent.com/u/7845005?v=3","gravatar_id":"","url":"https://api.github.com/users/qingqing01","html_url":"https://github.com/qingqing01","followers_url":"https://api.github.com/users/qingqing01/followers","following_url":"https://api.github.com/users/qingqing01/following{/other_user}","gists_url":"https://api.github.com/users/qingqing01/gists{/gist_id}","starred_url":"https://api.github.com/users/qingqing01/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qingqing01/subscriptions","organizations_url":"https://api.github.com/users/qingqing01/orgs","repos_url":"https://api.github.com/users/qingqing01/repos","events_url":"https://api.github.com/users/qingqing01/events{/privacy}","received_events_url":"https://api.github.com/users/qingqing01/received_events","type":"User","site_admin":false},"body":"是否需要增加长方形input,output, filter的单测？","created_at":"2017-06-06T12:00:17Z","updated_at":"2017-06-06T12:26:42Z","html_url":"https://github.com/PaddlePaddle/Paddle/pull/2282#discussion_r120334395","pull_request_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282","_links":{"self":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments/120334395"},"html":{"href":"https://github.com/PaddlePaddle/Paddle/pull/2282#discussion_r120334395"},"pull_request":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282"}}},"pull_request":{"url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282","id":122580710,"html_url":"https://github.com/PaddlePaddle/Paddle/pull/2282","diff_url":"https://github.com/PaddlePaddle/Paddle/pull/2282.diff","patch_url":"https://github.com/PaddlePaddle/Paddle/pull/2282.patch","issue_url":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/2282","number":2282,"state":"open","locked":false,"title":"Add convolution Function","user":{"login":"hedaoyuan","id":21339431,"avatar_url":"https://avatars0.githubusercontent.com/u/21339431?v=3","gravatar_id":"","url":"https://api.github.com/users/hedaoyuan","html_url":"https://github.com/hedaoyuan","followers_url":"https://api.github.com/users/hedaoyuan/followers","following_url":"https://api.github.com/users/hedaoyuan/following{/other_user}","gists_url":"https://api.github.com/users/hedaoyuan/gists{/gist_id}","starred_url":"https://api.github.com/users/hedaoyuan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hedaoyuan/subscriptions","organizations_url":"https://api.github.com/users/hedaoyuan/orgs","repos_url":"https://api.github.com/users/hedaoyuan/repos","events_url":"https://api.github.com/users/hedaoyuan/events{/privacy}","received_events_url":"https://api.github.com/users/hedaoyuan/received_events","type":"User","site_admin":false},"body":"Follow comments in issue #2196 \r\n* [x] Defines the data structure of the input, output, and filter.\r\n* [ ] Output size calculation.\r\n* [x] Migrate the code based on sgemm to the `GemmConvOp.cpp`.\r\n* [ ] Refactor the ExpandConvBaseLayer, ExpandConvLayer and ExpandConvTransLayer.\r\n* [ ] Migrate the code based on cudnn to the `CudnnConvOp.cpp`.","created_at":"2017-05-26T06:34:26Z","updated_at":"2017-06-06T12:26:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e310bf9f834ce155b77a52f8c4f3ce056b172ee9","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282/commits","review_comments_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282/comments","review_comment_url":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments{/number}","comments_url":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/2282/comments","statuses_url":"https://api.github.com/repos/PaddlePaddle/Paddle/statuses/7aac38c794ffb1df10db4d61ac4350a32bdc62ed","head":{"label":"hedaoyuan:convolution","ref":"convolution","sha":"7aac38c794ffb1df10db4d61ac4350a32bdc62ed","user":{"login":"hedaoyuan","id":21339431,"avatar_url":"https://avatars0.githubusercontent.com/u/21339431?v=3","gravatar_id":"","url":"https://api.github.com/users/hedaoyuan","html_url":"https://github.com/hedaoyuan","followers_url":"https://api.github.com/users/hedaoyuan/followers","following_url":"https://api.github.com/users/hedaoyuan/following{/other_user}","gists_url":"https://api.github.com/users/hedaoyuan/gists{/gist_id}","starred_url":"https://api.github.com/users/hedaoyuan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hedaoyuan/subscriptions","organizations_url":"https://api.github.com/users/hedaoyuan/orgs","repos_url":"https://api.github.com/users/hedaoyuan/repos","events_url":"https://api.github.com/users/hedaoyuan/events{/privacy}","received_events_url":"https://api.github.com/users/hedaoyuan/received_events","type":"User","site_admin":false},"repo":{"id":67010965,"name":"Paddle","full_name":"hedaoyuan/Paddle","owner":{"login":"hedaoyuan","id":21339431,"avatar_url":"https://avatars0.githubusercontent.com/u/21339431?v=3","gravatar_id":"","url":"https://api.github.com/users/hedaoyuan","html_url":"https://github.com/hedaoyuan","followers_url":"https://api.github.com/users/hedaoyuan/followers","following_url":"https://api.github.com/users/hedaoyuan/following{/other_user}","gists_url":"https://api.github.com/users/hedaoyuan/gists{/gist_id}","starred_url":"https://api.github.com/users/hedaoyuan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hedaoyuan/subscriptions","organizations_url":"https://api.github.com/users/hedaoyuan/orgs","repos_url":"https://api.github.com/users/hedaoyuan/repos","events_url":"https://api.github.com/users/hedaoyuan/events{/privacy}","received_events_url":"https://api.github.com/users/hedaoyuan/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/hedaoyuan/Paddle","description":"PArallel Distributed Deep LEarning","fork":true,"url":"https://api.github.com/repos/hedaoyuan/Paddle","forks_url":"https://api.github.com/repos/hedaoyuan/Paddle/forks","keys_url":"https://api.github.com/repos/hedaoyuan/Paddle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hedaoyuan/Paddle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hedaoyuan/Paddle/teams","hooks_url":"https://api.github.com/repos/hedaoyuan/Paddle/hooks","issue_events_url":"https://api.github.com/repos/hedaoyuan/Paddle/issues/events{/number}","events_url":"https://api.github.com/repos/hedaoyuan/Paddle/events","assignees_url":"https://api.github.com/repos/hedaoyuan/Paddle/assignees{/user}","branches_url":"https://api.github.com/repos/hedaoyuan/Paddle/branches{/branch}","tags_url":"https://api.github.com/repos/hedaoyuan/Paddle/tags","blobs_url":"https://api.github.com/repos/hedaoyuan/Paddle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hedaoyuan/Paddle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hedaoyuan/Paddle/git/refs{/sha}","trees_url":"https://api.github.com/repos/hedaoyuan/Paddle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hedaoyuan/Paddle/statuses/{sha}","languages_url":"https://api.github.com/repos/hedaoyuan/Paddle/languages","stargazers_url":"https://api.github.com/repos/hedaoyuan/Paddle/stargazers","contributors_url":"https://api.github.com/repos/hedaoyuan/Paddle/contributors","subscribers_url":"https://api.github.com/repos/hedaoyuan/Paddle/subscribers","subscription_url":"https://api.github.com/repos/hedaoyuan/Paddle/subscription","commits_url":"https://api.github.com/repos/hedaoyuan/Paddle/commits{/sha}","git_commits_url":"https://api.github.com/repos/hedaoyuan/Paddle/git/commits{/sha}","comments_url":"https://api.github.com/repos/hedaoyuan/Paddle/comments{/number}","issue_comment_url":"https://api.github.com/repos/hedaoyuan/Paddle/issues/comments{/number}","contents_url":"https://api.github.com/repos/hedaoyuan/Paddle/contents/{+path}","compare_url":"https://api.github.com/repos/hedaoyuan/Paddle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hedaoyuan/Paddle/merges","archive_url":"https://api.github.com/repos/hedaoyuan/Paddle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hedaoyuan/Paddle/downloads","issues_url":"https://api.github.com/repos/hedaoyuan/Paddle/issues{/number}","pulls_url":"https://api.github.com/repos/hedaoyuan/Paddle/pulls{/number}","milestones_url":"https://api.github.com/repos/hedaoyuan/Paddle/milestones{/number}","notifications_url":"https://api.github.com/repos/hedaoyuan/Paddle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hedaoyuan/Paddle/labels{/name}","releases_url":"https://api.github.com/repos/hedaoyuan/Paddle/releases{/id}","deployments_url":"https://api.github.com/repos/hedaoyuan/Paddle/deployments","created_at":"2016-08-31T06:44:26Z","updated_at":"2016-08-31T06:44:29Z","pushed_at":"2017-06-06T07:45:48Z","git_url":"git://github.com/hedaoyuan/Paddle.git","ssh_url":"git@github.com:hedaoyuan/Paddle.git","clone_url":"https://github.com/hedaoyuan/Paddle.git","svn_url":"https://github.com/hedaoyuan/Paddle","homepage":"http://www.paddlepaddle.org/","size":21380,"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":"371147003cdb6d28af66cfd5995fdd2e58879739","user":{"login":"PaddlePaddle","id":23534030,"avatar_url":"https://avatars0.githubusercontent.com/u/23534030?v=3","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://avatars0.githubusercontent.com/u/23534030?v=3","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-06-06T11:53:55Z","pushed_at":"2017-06-06T10:23:56Z","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":35810,"stargazers_count":4922,"watchers_count":4922,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1310,"mirror_url":null,"open_issues_count":519,"forks":1310,"open_issues":519,"watchers":4922,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282"},"html":{"href":"https://github.com/PaddlePaddle/Paddle/pull/2282"},"issue":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/2282"},"comments":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/issues/2282/comments"},"review_comments":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282/comments"},"review_comment":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/pulls/2282/commits"},"statuses":{"href":"https://api.github.com/repos/PaddlePaddle/Paddle/statuses/7aac38c794ffb1df10db4d61ac4350a32bdc62ed"}}}}
{"actor":{"display_login":"qingqing01"}}