{"action":"created","comment":{"url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/comments/48979201","id":48979201,"diff_hunk":"@@ -441,18 +441,20 @@ def _setup_vectors(self, param_owners, parent=None,\n             if 'src_indices' in meta:\n                 meta['src_indices'] = self.params.to_idx_array(meta['src_indices'])\n \n+                \n         for sub in itervalues(self._subsystems):\n             sub._setup_vectors(param_owners, parent=self,\n                                top_unknowns=top_unknowns,\n                                impl=self._impl)\n+        \n \n         # now that all of the vectors and subvecs are allocated, calculate\n         # and cache a boolean flag telling us whether to run apply_linear for a\n         # given voi and a given child system.\n \n-        self._do_apply = {} # dict of (child_pathname, voi) keyed to bool\n+        self._do_apply = OrderedDict() #{} # dict of (child_pathname, voi) keyed to bool\n \n-        ls_inputs = {}\n+        ls_inputs = OrderedDict() #{}","path":"openmdao/core/group.py","position":96,"original_position":96,"commit_id":"b1e5d98f5a01ea967f34c3facb5b903bf9fb2ba9","original_commit_id":"b1e5d98f5a01ea967f34c3facb5b903bf9fb2ba9","user":{"login":"naylor-b","id":701448,"avatar_url":"https://avatars.githubusercontent.com/u/701448?v=3","gravatar_id":"","url":"https://api.github.com/users/naylor-b","html_url":"https://github.com/naylor-b","followers_url":"https://api.github.com/users/naylor-b/followers","following_url":"https://api.github.com/users/naylor-b/following{/other_user}","gists_url":"https://api.github.com/users/naylor-b/gists{/gist_id}","starred_url":"https://api.github.com/users/naylor-b/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/naylor-b/subscriptions","organizations_url":"https://api.github.com/users/naylor-b/orgs","repos_url":"https://api.github.com/users/naylor-b/repos","events_url":"https://api.github.com/users/naylor-b/events{/privacy}","received_events_url":"https://api.github.com/users/naylor-b/received_events","type":"User","site_admin":false},"body":"ls_inputs doesn't need to be OrderedDict","created_at":"2016-01-06T16:49:47Z","updated_at":"2016-01-06T16:49:47Z","html_url":"https://github.com/OpenMDAO/OpenMDAO/pull/434#discussion_r48979201","pull_request_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434","_links":{"self":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/comments/48979201"},"html":{"href":"https://github.com/OpenMDAO/OpenMDAO/pull/434#discussion_r48979201"},"pull_request":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434"}}},"pull_request":{"url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434","id":55214420,"html_url":"https://github.com/OpenMDAO/OpenMDAO/pull/434","diff_url":"https://github.com/OpenMDAO/OpenMDAO/pull/434.diff","patch_url":"https://github.com/OpenMDAO/OpenMDAO/pull/434.patch","issue_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/issues/434","number":434,"state":"open","locked":false,"title":"Mpi works on py3 on both linux and windows","user":{"login":"briantomko","id":14877222,"avatar_url":"https://avatars.githubusercontent.com/u/14877222?v=3","gravatar_id":"","url":"https://api.github.com/users/briantomko","html_url":"https://github.com/briantomko","followers_url":"https://api.github.com/users/briantomko/followers","following_url":"https://api.github.com/users/briantomko/following{/other_user}","gists_url":"https://api.github.com/users/briantomko/gists{/gist_id}","starred_url":"https://api.github.com/users/briantomko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briantomko/subscriptions","organizations_url":"https://api.github.com/users/briantomko/orgs","repos_url":"https://api.github.com/users/briantomko/repos","events_url":"https://api.github.com/users/briantomko/events{/privacy}","received_events_url":"https://api.github.com/users/briantomko/received_events","type":"User","site_admin":false},"body":"I created a pull request for review:\r\n\r\nFixes:\r\n-MPI now works on Python3 in both Windows and Linux.  This involved replacing regular dicts \"{}\" with OrderedDict() because order seems to be guaranteed in Python 2 but not in Python 3, so different processes would produce inconsistencies when generating PETSc arrays and indices.  This also involved replacing a floating point division operator \"/\" with an integer division operator \"//\".  Also, since our graph implementation is based on regular python dicts underneath, our topological sort order could possibly be different in different procs under python 3, so we now calculate order in proc 0 and broadcast that to other procs.\r\n-Our MPI utility script will use mpiexec if mpirun does not exist (a Windows thing).  This uses distutils.spawn.find_executable\r\n\r\nIssues:\r\n-I wanted to get the team's input on this.  I could have replaced too many regular dicts with OrderedDicts (even Jacobians).  I'm not sure what would be the performance penalty.  Since I'm not familiar with the code, if there are places you know where we don't iterate sequentially over the dicts, let me know and I can put the regular dicts back.\r\n-Python 3 only sometimes passes /mpitests/test_mpi_opt.py .  Perhaps pyoptsparse has Python 3 problems.  I analyzed the output of test_parab_FD_subbed_Pcomps, and when it goes incorrect it seems to do extra fwd scatters.\r\n\r\nOK\r\n\r\nPassed:  632\r\nFailed:  0\r\nSkipped: 1\r\n","created_at":"2016-01-06T13:50:37Z","updated_at":"2016-01-06T16:49:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d894a37d9a0dae30b3e88846c9eeb63e935d363a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434/commits","review_comments_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434/comments","review_comment_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/issues/434/comments","statuses_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/statuses/b1e5d98f5a01ea967f34c3facb5b903bf9fb2ba9","head":{"label":"briantomko:mpi_fixpy3","ref":"mpi_fixpy3","sha":"b1e5d98f5a01ea967f34c3facb5b903bf9fb2ba9","user":{"login":"briantomko","id":14877222,"avatar_url":"https://avatars.githubusercontent.com/u/14877222?v=3","gravatar_id":"","url":"https://api.github.com/users/briantomko","html_url":"https://github.com/briantomko","followers_url":"https://api.github.com/users/briantomko/followers","following_url":"https://api.github.com/users/briantomko/following{/other_user}","gists_url":"https://api.github.com/users/briantomko/gists{/gist_id}","starred_url":"https://api.github.com/users/briantomko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briantomko/subscriptions","organizations_url":"https://api.github.com/users/briantomko/orgs","repos_url":"https://api.github.com/users/briantomko/repos","events_url":"https://api.github.com/users/briantomko/events{/privacy}","received_events_url":"https://api.github.com/users/briantomko/received_events","type":"User","site_admin":false},"repo":{"id":43372441,"name":"OpenMDAO","full_name":"briantomko/OpenMDAO","owner":{"login":"briantomko","id":14877222,"avatar_url":"https://avatars.githubusercontent.com/u/14877222?v=3","gravatar_id":"","url":"https://api.github.com/users/briantomko","html_url":"https://github.com/briantomko","followers_url":"https://api.github.com/users/briantomko/followers","following_url":"https://api.github.com/users/briantomko/following{/other_user}","gists_url":"https://api.github.com/users/briantomko/gists{/gist_id}","starred_url":"https://api.github.com/users/briantomko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briantomko/subscriptions","organizations_url":"https://api.github.com/users/briantomko/orgs","repos_url":"https://api.github.com/users/briantomko/repos","events_url":"https://api.github.com/users/briantomko/events{/privacy}","received_events_url":"https://api.github.com/users/briantomko/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/briantomko/OpenMDAO","description":"OpenMDAO is a high-performance computing platform for systems analysis and optimization that enables you to decompose your models, making them easier to build and maintain, while still solving them in a tightly-coupled manner with efficient parallel numerical methods.","fork":true,"url":"https://api.github.com/repos/briantomko/OpenMDAO","forks_url":"https://api.github.com/repos/briantomko/OpenMDAO/forks","keys_url":"https://api.github.com/repos/briantomko/OpenMDAO/keys{/key_id}","collaborators_url":"https://api.github.com/repos/briantomko/OpenMDAO/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/briantomko/OpenMDAO/teams","hooks_url":"https://api.github.com/repos/briantomko/OpenMDAO/hooks","issue_events_url":"https://api.github.com/repos/briantomko/OpenMDAO/issues/events{/number}","events_url":"https://api.github.com/repos/briantomko/OpenMDAO/events","assignees_url":"https://api.github.com/repos/briantomko/OpenMDAO/assignees{/user}","branches_url":"https://api.github.com/repos/briantomko/OpenMDAO/branches{/branch}","tags_url":"https://api.github.com/repos/briantomko/OpenMDAO/tags","blobs_url":"https://api.github.com/repos/briantomko/OpenMDAO/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/briantomko/OpenMDAO/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/briantomko/OpenMDAO/git/refs{/sha}","trees_url":"https://api.github.com/repos/briantomko/OpenMDAO/git/trees{/sha}","statuses_url":"https://api.github.com/repos/briantomko/OpenMDAO/statuses/{sha}","languages_url":"https://api.github.com/repos/briantomko/OpenMDAO/languages","stargazers_url":"https://api.github.com/repos/briantomko/OpenMDAO/stargazers","contributors_url":"https://api.github.com/repos/briantomko/OpenMDAO/contributors","subscribers_url":"https://api.github.com/repos/briantomko/OpenMDAO/subscribers","subscription_url":"https://api.github.com/repos/briantomko/OpenMDAO/subscription","commits_url":"https://api.github.com/repos/briantomko/OpenMDAO/commits{/sha}","git_commits_url":"https://api.github.com/repos/briantomko/OpenMDAO/git/commits{/sha}","comments_url":"https://api.github.com/repos/briantomko/OpenMDAO/comments{/number}","issue_comment_url":"https://api.github.com/repos/briantomko/OpenMDAO/issues/comments{/number}","contents_url":"https://api.github.com/repos/briantomko/OpenMDAO/contents/{+path}","compare_url":"https://api.github.com/repos/briantomko/OpenMDAO/compare/{base}...{head}","merges_url":"https://api.github.com/repos/briantomko/OpenMDAO/merges","archive_url":"https://api.github.com/repos/briantomko/OpenMDAO/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/briantomko/OpenMDAO/downloads","issues_url":"https://api.github.com/repos/briantomko/OpenMDAO/issues{/number}","pulls_url":"https://api.github.com/repos/briantomko/OpenMDAO/pulls{/number}","milestones_url":"https://api.github.com/repos/briantomko/OpenMDAO/milestones{/number}","notifications_url":"https://api.github.com/repos/briantomko/OpenMDAO/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/briantomko/OpenMDAO/labels{/name}","releases_url":"https://api.github.com/repos/briantomko/OpenMDAO/releases{/id}","created_at":"2015-09-29T14:25:31Z","updated_at":"2015-09-29T14:25:32Z","pushed_at":"2016-01-05T18:34:25Z","git_url":"git://github.com/briantomko/OpenMDAO.git","ssh_url":"git@github.com:briantomko/OpenMDAO.git","clone_url":"https://github.com/briantomko/OpenMDAO.git","svn_url":"https://github.com/briantomko/OpenMDAO","homepage":"http://openmdao.org","size":13321,"stargazers_count":0,"watchers_count":0,"language":"Python","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":0,"default_branch":"master"}},"base":{"label":"OpenMDAO:master","ref":"master","sha":"f82cf8479981ea309ae6a774163b439cd9c978f4","user":{"login":"OpenMDAO","id":861615,"avatar_url":"https://avatars.githubusercontent.com/u/861615?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenMDAO","html_url":"https://github.com/OpenMDAO","followers_url":"https://api.github.com/users/OpenMDAO/followers","following_url":"https://api.github.com/users/OpenMDAO/following{/other_user}","gists_url":"https://api.github.com/users/OpenMDAO/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenMDAO/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenMDAO/subscriptions","organizations_url":"https://api.github.com/users/OpenMDAO/orgs","repos_url":"https://api.github.com/users/OpenMDAO/repos","events_url":"https://api.github.com/users/OpenMDAO/events{/privacy}","received_events_url":"https://api.github.com/users/OpenMDAO/received_events","type":"Organization","site_admin":false},"repo":{"id":33391296,"name":"OpenMDAO","full_name":"OpenMDAO/OpenMDAO","owner":{"login":"OpenMDAO","id":861615,"avatar_url":"https://avatars.githubusercontent.com/u/861615?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenMDAO","html_url":"https://github.com/OpenMDAO","followers_url":"https://api.github.com/users/OpenMDAO/followers","following_url":"https://api.github.com/users/OpenMDAO/following{/other_user}","gists_url":"https://api.github.com/users/OpenMDAO/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenMDAO/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenMDAO/subscriptions","organizations_url":"https://api.github.com/users/OpenMDAO/orgs","repos_url":"https://api.github.com/users/OpenMDAO/repos","events_url":"https://api.github.com/users/OpenMDAO/events{/privacy}","received_events_url":"https://api.github.com/users/OpenMDAO/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OpenMDAO/OpenMDAO","description":"OpenMDAO is a high-performance computing platform for systems analysis and optimization that enables you to decompose your models, making them easier to build and maintain, while still solving them in a tightly-coupled manner with efficient parallel numerical methods.","fork":false,"url":"https://api.github.com/repos/OpenMDAO/OpenMDAO","forks_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/forks","keys_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/teams","hooks_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/hooks","issue_events_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/issues/events{/number}","events_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/events","assignees_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/assignees{/user}","branches_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/branches{/branch}","tags_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/tags","blobs_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/git/refs{/sha}","trees_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/statuses/{sha}","languages_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/languages","stargazers_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/stargazers","contributors_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/contributors","subscribers_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/subscribers","subscription_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/subscription","commits_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/commits{/sha}","git_commits_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/git/commits{/sha}","comments_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/comments{/number}","issue_comment_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/issues/comments{/number}","contents_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/contents/{+path}","compare_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/merges","archive_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/downloads","issues_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/issues{/number}","pulls_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls{/number}","milestones_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/milestones{/number}","notifications_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/labels{/name}","releases_url":"https://api.github.com/repos/OpenMDAO/OpenMDAO/releases{/id}","created_at":"2015-04-04T02:15:24Z","updated_at":"2016-01-04T09:18:48Z","pushed_at":"2016-01-06T16:37:09Z","git_url":"git://github.com/OpenMDAO/OpenMDAO.git","ssh_url":"git@github.com:OpenMDAO/OpenMDAO.git","clone_url":"https://github.com/OpenMDAO/OpenMDAO.git","svn_url":"https://github.com/OpenMDAO/OpenMDAO","homepage":"http://openmdao.org","size":14533,"stargazers_count":24,"watchers_count":24,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":35,"mirror_url":null,"open_issues_count":4,"forks":35,"open_issues":4,"watchers":24,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434"},"html":{"href":"https://github.com/OpenMDAO/OpenMDAO/pull/434"},"issue":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/issues/434"},"comments":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/issues/434/comments"},"review_comments":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434/comments"},"review_comment":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/pulls/434/commits"},"statuses":{"href":"https://api.github.com/repos/OpenMDAO/OpenMDAO/statuses/b1e5d98f5a01ea967f34c3facb5b903bf9fb2ba9"}}}}