{"action":"created","comment":{"url":"https://api.github.com/repos/apache/incubator-mxnet/pulls/comments/155930949","pull_request_review_id":82333909,"id":155930949,"diff_hunk":"@@ -56,3 +69,237 @@ def dump_profile():\n     \"\"\"Dump profile and stop profiler. Use this to save profile\n     in advance in case your program cannot exit normally.\"\"\"\n     check_call(_LIB.MXDumpProfile())\n+\n+def create_domain(name):\n+  domain_handle = ProfileDomainHandle()\n+  check_call(_LIB.MXProfileCreateDomain(c_str(name), ctypes.byref(domain_handle)))\n+  return domain_handle\n+\n+def create_task(domain_handle, name):\n+    task_handle = ProfileTaskHandle()\n+    check_call(_LIB.MXProfileCreateTask(domain_handle,\n+                                        c_str(name),\n+                                        ctypes.byref(task_handle)))\n+    return task_handle\n+\n+def destroy_task(task_handle):\n+    check_call(_LIB.MXProfileDestroyTask(task_handle))\n+\n+def task_start(task_handle):\n+    check_call(_LIB.MXProfileTaskStart(task_handle))\n+\n+def task_stop(task_handle):\n+    check_call(_LIB.MXProfileTaskStop(task_handle))\n+\n+def create_frame(domain_handle, name):\n+    frame_handle = ProfileFrameHandle()\n+    check_call(_LIB.MXProfileCreateFrame(domain_handle,\n+                                        c_str(name),\n+                                        ctypes.byref(frame_handle)))\n+    return frame_handle\n+\n+def destroy_frame(frame_handle):\n+    check_call(_LIB.MXProfileDestroyFrame(frame_handle))\n+\n+def frame_start(frame_handle):\n+    check_call(_LIB.MXProfileFrameStart(frame_handle))\n+\n+def frame_stop(frame_handle):\n+    check_call(_LIB.MXProfileFrameStop(frame_handle))\n+\n+def create_event(name):\n+    event_handle = ProfileEventHandle()\n+    check_call(_LIB.MXProfileCreateEvent(c_str(name), ctypes.byref(event_handle)))\n+    return event_handle\n+\n+def destroy_event(event_handle):\n+    check_call(_LIB.MXProfileDestroyEvent(event_handle))\n+\n+def event_start(event_handle):\n+    check_call(_LIB.MXProfileEventStart(event_handle))\n+\n+def event_stop(event_handle):\n+    check_call(_LIB.MXProfileEventStop(event_handle))\n+\n+def tune_pause():\n+    check_call(_LIB.MXProfileTunePause())\n+\n+def tune_resume():\n+    check_call(_LIB.MXProfileTuneResume())\n+\n+def create_counter(domain_handle, name, value=None):\n+    counter_handle = ProfileCounterHandle()\n+    check_call(_LIB.MXProfileCreateCounter(domain_handle,\n+                                           c_str(name),\n+                                           ctypes.byref(counter_handle)))\n+    if value is not None:\n+        set_counter(counter_handle, value)\n+    return counter_handle\n+\n+def destroy_counter(counter_handle):\n+    check_call(_LIB.MXProfileDestroyCounter(counter_handle))\n+\n+def set_counter(counter_handle, value):\n+    check_call(_LIB.MXProfileSetCounter(counter_handle, int(value)))\n+\n+def increment_counter(counter_handle, by_value):\n+    check_call(_LIB.MXProfileAdjustCounter(counter_handle, int(by_value)))\n+\n+def decrement_counter(counter_handle, by_value):\n+    check_call(_LIB.MXProfileAdjustCounter(counter_handle, -int(by_value)))\n+\n+def set_append_mode(mode):\n+  if mode is False:\n+    mode = 0\n+  else:\n+    mode = 1\n+  check_call(_LIB.MXSetDumpProfileAppendMode(int(mode)))\n+\n+def set_continuous_dump(continuous_dump=True, delay_in_seconds=1.0):\n+  if continuous_dump is False:\n+    cd = 0\n+  else:\n+    cd = 1\n+  ds = float(delay_in_seconds)\n+  check_call(_LIB.MXSetContinuousProfileDump(ctypes.c_int(cd), ctypes.c_float(ds)))\n+\n+def set_instant_marker(domain_handle, name, scope='process'):\n+    marker_scope2int = { 'global': 1, 'process': 2, 'thread': 3, 'task': 4, 'marker': 5 }\n+    scope_int = marker_scope2int[scope]\n+    check_call(_LIB.MXProfileSetInstantMarker(domain_handle, c_str(name), scope_int))\n+\n+\n+class Domain:\n+    \"\"\"Profiling domain, used to group sub-objects like tasks, counters, etc into categories\n+    Serves as part of 'categories' for chrome://tracing\n+    Note: Domain handles are never destroyed\n+    \"\"\"\n+    def __init__(self, name):\n+        self.name = name\n+        self.handle = create_domain(name)\n+\n+    def __str__(self):\n+        return self.name\n+\n+\n+class Task:\n+    \"\"\"Profiling Task class\n+    A task is a logical unit of work performed by a particular thread.\n+    Tasks can nest; thus, tasks typically correspond to functions, scopes, or a case block\n+    in a switch statement.\n+    You can use the Task API to assign tasks to threads\n+    \"\"\"\n+    def __init__(self, domain, name):\n+        self.domain = domain\n+        self.name = name\n+        self.handle = create_task(domain.handle, name)\n+\n+    def start(self):\n+        task_start(self.handle)\n+\n+    def stop(self):\n+        task_stop(self.handle)\n+\n+    def __str__(self):\n+        return self.name\n+\n+    def __del__(self):\n+        if self.handle is not None:\n+            destroy_task(self.handle)\n+\n+\n+class Frame:\n+    \"\"\"Profiling Frame class\n+    Use the frame API to insert calls to the desired places in your code and analyze\n+    performance per frame, where frame is the time period between frame begin and end points.","path":"python/mxnet/profiler.py","position":174,"original_position":186,"commit_id":"7b802df9897924a02021cbe4aefb9b5ffb9541fd","original_commit_id":"f762b0371e77dd56fbb90097a03696e65a3e888e","user":{"login":"cjolivier01","id":11234557,"avatar_url":"https://avatars1.githubusercontent.com/u/11234557?v=4","gravatar_id":"","url":"https://api.github.com/users/cjolivier01","html_url":"https://github.com/cjolivier01","followers_url":"https://api.github.com/users/cjolivier01/followers","following_url":"https://api.github.com/users/cjolivier01/following{/other_user}","gists_url":"https://api.github.com/users/cjolivier01/gists{/gist_id}","starred_url":"https://api.github.com/users/cjolivier01/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjolivier01/subscriptions","organizations_url":"https://api.github.com/users/cjolivier01/orgs","repos_url":"https://api.github.com/users/cjolivier01/repos","events_url":"https://api.github.com/users/cjolivier01/events{/privacy}","received_events_url":"https://api.github.com/users/cjolivier01/received_events","type":"User","site_admin":false},"body":"It’s a mapped to a vtune object, yes. In chrome tracing it will just show as a reentrant duration same as a “task”. If you don’t have vtune then you probably won’t use it.","created_at":"2017-12-09T19:56:16Z","updated_at":"2017-12-09T19:56:16Z","html_url":"https://github.com/apache/incubator-mxnet/pull/8972#discussion_r155930949","pull_request_url":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-mxnet/pulls/comments/155930949"},"html":{"href":"https://github.com/apache/incubator-mxnet/pull/8972#discussion_r155930949"},"pull_request":{"href":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972"}},"in_reply_to_id":155401286},"pull_request":{"url":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972","id":156828753,"html_url":"https://github.com/apache/incubator-mxnet/pull/8972","diff_url":"https://github.com/apache/incubator-mxnet/pull/8972.diff","patch_url":"https://github.com/apache/incubator-mxnet/pull/8972.patch","issue_url":"https://api.github.com/repos/apache/incubator-mxnet/issues/8972","number":8972,"state":"open","locked":false,"title":"Profiling enhancements, python API, vtune and chrome tracing objects, etc.","user":{"login":"cjolivier01","id":11234557,"avatar_url":"https://avatars1.githubusercontent.com/u/11234557?v=4","gravatar_id":"","url":"https://api.github.com/users/cjolivier01","html_url":"https://github.com/cjolivier01","followers_url":"https://api.github.com/users/cjolivier01/followers","following_url":"https://api.github.com/users/cjolivier01/following{/other_user}","gists_url":"https://api.github.com/users/cjolivier01/gists{/gist_id}","starred_url":"https://api.github.com/users/cjolivier01/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjolivier01/subscriptions","organizations_url":"https://api.github.com/users/cjolivier01/orgs","repos_url":"https://api.github.com/users/cjolivier01/repos","events_url":"https://api.github.com/users/cjolivier01/events{/privacy}","received_events_url":"https://api.github.com/users/cjolivier01/received_events","type":"User","site_admin":false},"body":"@piiswrong \r\n@tqchen \r\n## Description ##\r\n\r\n1. Continuous, asynchronous profile dumping\r\n\r\n2. VTune objects: Counter, Task, Event, Frame, Instant-Mark (see screen shot)\r\n  - All available from C++ and python \r\n  - Equivalents also available in chrome://tracing screen (see screen shot)\r\n  - With Vtune, you get separate call stack paths for events and tasks, including hot spots down to the line of code\r\n\r\n3. Memory usage profiling (CPU and GPU)\r\n\r\n4. C API Profiling\r\n\r\n5. Individual Operator Profiling\r\n\r\n6. More granular profiling config (Symbolic ops, All ops, API, Memory, etc)\r\n\r\n7. VTune profiling tools\r\n\r\nScreen shots:\r\n\r\nVTune (note API domain/task grouping, operator task grouping, API and memory counters, etc.)\r\n![vtune](https://user-images.githubusercontent.com/11234557/33683094-984f8960-da7e-11e7-8c9e-9bd91a054a5d.png)\r\n\r\nChrome tracing:  (note category/API grouping, operator grouping, API and memory counters, etc.)\r\n![chrome_tracing](https://user-images.githubusercontent.com/11234557/33683128-b0ccc9b2-da7e-11e7-98f2-4d121f2f76af.png)\r\n\r\n![zoomchrome](https://user-images.githubusercontent.com/11234557/33686946-579e58e4-da8b-11e7-82c7-d4d797c61fdc.png)\r\n\r\n## Checklist ##\r\n### Essentials ###\r\n- [ ] Passed code style checking (`make lint`)\r\n- [ ] Changes are complete (i.e. I finished coding on this PR)\r\n- [ ] All changes have test coverage\r\n- [ ] For user-facing API changes, API doc string has been updated. For new C++ functions in header files, their functionalities and arguments are well-documented. \r\n- [ ] To my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change\r\n\r\n### Changes ###\r\n- [ ] Feature1, tests, (and when applicable, API doc)\r\n- [ ] Feature2, tests, (and when applicable, API doc)\r\n\r\n## Comments ##\r\n- If this change is a backward incompatible change, why must this change be made.\r\n- Interesting edge cases to note here\r\n","created_at":"2017-12-06T20:15:38Z","updated_at":"2017-12-09T19:56:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5727d1b358dde12d658ff7e5a85c3953ececbdfd","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972/commits","review_comments_url":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972/comments","review_comment_url":"https://api.github.com/repos/apache/incubator-mxnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/incubator-mxnet/issues/8972/comments","statuses_url":"https://api.github.com/repos/apache/incubator-mxnet/statuses/7b802df9897924a02021cbe4aefb9b5ffb9541fd","head":{"label":"cjolivier01:profile","ref":"profile","sha":"7b802df9897924a02021cbe4aefb9b5ffb9541fd","user":{"login":"cjolivier01","id":11234557,"avatar_url":"https://avatars1.githubusercontent.com/u/11234557?v=4","gravatar_id":"","url":"https://api.github.com/users/cjolivier01","html_url":"https://github.com/cjolivier01","followers_url":"https://api.github.com/users/cjolivier01/followers","following_url":"https://api.github.com/users/cjolivier01/following{/other_user}","gists_url":"https://api.github.com/users/cjolivier01/gists{/gist_id}","starred_url":"https://api.github.com/users/cjolivier01/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjolivier01/subscriptions","organizations_url":"https://api.github.com/users/cjolivier01/orgs","repos_url":"https://api.github.com/users/cjolivier01/repos","events_url":"https://api.github.com/users/cjolivier01/events{/privacy}","received_events_url":"https://api.github.com/users/cjolivier01/received_events","type":"User","site_admin":false},"repo":{"id":86836111,"name":"mxnet","full_name":"cjolivier01/mxnet","owner":{"login":"cjolivier01","id":11234557,"avatar_url":"https://avatars1.githubusercontent.com/u/11234557?v=4","gravatar_id":"","url":"https://api.github.com/users/cjolivier01","html_url":"https://github.com/cjolivier01","followers_url":"https://api.github.com/users/cjolivier01/followers","following_url":"https://api.github.com/users/cjolivier01/following{/other_user}","gists_url":"https://api.github.com/users/cjolivier01/gists{/gist_id}","starred_url":"https://api.github.com/users/cjolivier01/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjolivier01/subscriptions","organizations_url":"https://api.github.com/users/cjolivier01/orgs","repos_url":"https://api.github.com/users/cjolivier01/repos","events_url":"https://api.github.com/users/cjolivier01/events{/privacy}","received_events_url":"https://api.github.com/users/cjolivier01/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cjolivier01/mxnet","description":"Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more","fork":true,"url":"https://api.github.com/repos/cjolivier01/mxnet","forks_url":"https://api.github.com/repos/cjolivier01/mxnet/forks","keys_url":"https://api.github.com/repos/cjolivier01/mxnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cjolivier01/mxnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cjolivier01/mxnet/teams","hooks_url":"https://api.github.com/repos/cjolivier01/mxnet/hooks","issue_events_url":"https://api.github.com/repos/cjolivier01/mxnet/issues/events{/number}","events_url":"https://api.github.com/repos/cjolivier01/mxnet/events","assignees_url":"https://api.github.com/repos/cjolivier01/mxnet/assignees{/user}","branches_url":"https://api.github.com/repos/cjolivier01/mxnet/branches{/branch}","tags_url":"https://api.github.com/repos/cjolivier01/mxnet/tags","blobs_url":"https://api.github.com/repos/cjolivier01/mxnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cjolivier01/mxnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cjolivier01/mxnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/cjolivier01/mxnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cjolivier01/mxnet/statuses/{sha}","languages_url":"https://api.github.com/repos/cjolivier01/mxnet/languages","stargazers_url":"https://api.github.com/repos/cjolivier01/mxnet/stargazers","contributors_url":"https://api.github.com/repos/cjolivier01/mxnet/contributors","subscribers_url":"https://api.github.com/repos/cjolivier01/mxnet/subscribers","subscription_url":"https://api.github.com/repos/cjolivier01/mxnet/subscription","commits_url":"https://api.github.com/repos/cjolivier01/mxnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/cjolivier01/mxnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/cjolivier01/mxnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/cjolivier01/mxnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/cjolivier01/mxnet/contents/{+path}","compare_url":"https://api.github.com/repos/cjolivier01/mxnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cjolivier01/mxnet/merges","archive_url":"https://api.github.com/repos/cjolivier01/mxnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cjolivier01/mxnet/downloads","issues_url":"https://api.github.com/repos/cjolivier01/mxnet/issues{/number}","pulls_url":"https://api.github.com/repos/cjolivier01/mxnet/pulls{/number}","milestones_url":"https://api.github.com/repos/cjolivier01/mxnet/milestones{/number}","notifications_url":"https://api.github.com/repos/cjolivier01/mxnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cjolivier01/mxnet/labels{/name}","releases_url":"https://api.github.com/repos/cjolivier01/mxnet/releases{/id}","deployments_url":"https://api.github.com/repos/cjolivier01/mxnet/deployments","created_at":"2017-03-31T15:52:37Z","updated_at":"2017-04-18T02:24:57Z","pushed_at":"2017-12-09T00:13:13Z","git_url":"git://github.com/cjolivier01/mxnet.git","ssh_url":"git@github.com:cjolivier01/mxnet.git","clone_url":"https://github.com/cjolivier01/mxnet.git","svn_url":"https://github.com/cjolivier01/mxnet","homepage":"http://mxnet.io","size":32029,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apache:master","ref":"master","sha":"24ea5b02d2a402e02c7aaab0138a853eadedcef5","user":{"login":"apache","id":47359,"avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":34864402,"name":"incubator-mxnet","full_name":"apache/incubator-mxnet","owner":{"login":"apache","id":47359,"avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apache/incubator-mxnet","description":"Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more","fork":false,"url":"https://api.github.com/repos/apache/incubator-mxnet","forks_url":"https://api.github.com/repos/apache/incubator-mxnet/forks","keys_url":"https://api.github.com/repos/apache/incubator-mxnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/incubator-mxnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/incubator-mxnet/teams","hooks_url":"https://api.github.com/repos/apache/incubator-mxnet/hooks","issue_events_url":"https://api.github.com/repos/apache/incubator-mxnet/issues/events{/number}","events_url":"https://api.github.com/repos/apache/incubator-mxnet/events","assignees_url":"https://api.github.com/repos/apache/incubator-mxnet/assignees{/user}","branches_url":"https://api.github.com/repos/apache/incubator-mxnet/branches{/branch}","tags_url":"https://api.github.com/repos/apache/incubator-mxnet/tags","blobs_url":"https://api.github.com/repos/apache/incubator-mxnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/incubator-mxnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/incubator-mxnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/incubator-mxnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/incubator-mxnet/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/incubator-mxnet/languages","stargazers_url":"https://api.github.com/repos/apache/incubator-mxnet/stargazers","contributors_url":"https://api.github.com/repos/apache/incubator-mxnet/contributors","subscribers_url":"https://api.github.com/repos/apache/incubator-mxnet/subscribers","subscription_url":"https://api.github.com/repos/apache/incubator-mxnet/subscription","commits_url":"https://api.github.com/repos/apache/incubator-mxnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/incubator-mxnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/incubator-mxnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/incubator-mxnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/incubator-mxnet/contents/{+path}","compare_url":"https://api.github.com/repos/apache/incubator-mxnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/incubator-mxnet/merges","archive_url":"https://api.github.com/repos/apache/incubator-mxnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/incubator-mxnet/downloads","issues_url":"https://api.github.com/repos/apache/incubator-mxnet/issues{/number}","pulls_url":"https://api.github.com/repos/apache/incubator-mxnet/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/incubator-mxnet/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/incubator-mxnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/incubator-mxnet/labels{/name}","releases_url":"https://api.github.com/repos/apache/incubator-mxnet/releases{/id}","deployments_url":"https://api.github.com/repos/apache/incubator-mxnet/deployments","created_at":"2015-04-30T16:21:15Z","updated_at":"2017-12-09T16:55:47Z","pushed_at":"2017-12-09T05:41:46Z","git_url":"git://github.com/apache/incubator-mxnet.git","ssh_url":"git@github.com:apache/incubator-mxnet.git","clone_url":"https://github.com/apache/incubator-mxnet.git","svn_url":"https://github.com/apache/incubator-mxnet","homepage":"http://mxnet.io","size":30596,"stargazers_count":12345,"watchers_count":12345,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4541,"mirror_url":null,"archived":false,"open_issues_count":640,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":4541,"open_issues":640,"watchers":12345,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972"},"html":{"href":"https://github.com/apache/incubator-mxnet/pull/8972"},"issue":{"href":"https://api.github.com/repos/apache/incubator-mxnet/issues/8972"},"comments":{"href":"https://api.github.com/repos/apache/incubator-mxnet/issues/8972/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/incubator-mxnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/incubator-mxnet/pulls/8972/commits"},"statuses":{"href":"https://api.github.com/repos/apache/incubator-mxnet/statuses/7b802df9897924a02021cbe4aefb9b5ffb9541fd"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"cjolivier01"}}