{"action":"created","issue":{"url":"https://api.github.com/repos/opesci/devito/issues/78","repository_url":"https://api.github.com/repos/opesci/devito","labels_url":"https://api.github.com/repos/opesci/devito/issues/78/labels{/name}","comments_url":"https://api.github.com/repos/opesci/devito/issues/78/comments","events_url":"https://api.github.com/repos/opesci/devito/issues/78/events","html_url":"https://github.com/opesci/devito/pull/78","id":169950760,"number":78,"title":"Auto tuning v3","user":{"login":"sheino","id":5637480,"avatar_url":"https://avatars.githubusercontent.com/u/5637480?v=3","gravatar_id":"","url":"https://api.github.com/users/sheino","html_url":"https://github.com/sheino","followers_url":"https://api.github.com/users/sheino/followers","following_url":"https://api.github.com/users/sheino/following{/other_user}","gists_url":"https://api.github.com/users/sheino/gists{/gist_id}","starred_url":"https://api.github.com/users/sheino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sheino/subscriptions","organizations_url":"https://api.github.com/users/sheino/orgs","repos_url":"https://api.github.com/users/sheino/repos","events_url":"https://api.github.com/users/sheino/events{/privacy}","received_events_url":"https://api.github.com/users/sheino/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2016-08-08T15:25:44Z","updated_at":"2016-08-09T14:25:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/opesci/devito/pulls/78","html_url":"https://github.com/opesci/devito/pull/78","diff_url":"https://github.com/opesci/devito/pull/78.diff","patch_url":"https://github.com/opesci/devito/pull/78.patch"},"body":"Adding auto tuning of block sizes feature, which is made to be more general and potentially could be easily extended.\r\n\r\nAdded `AutoTuner` object which takes `Operator` and `at_report_dir_path` as parameters.\r\nNow when auto tuning runs, `Propagator` replaces all block sizes with variables and appends them as parameters to the function. This saves us recompiling on each auto tune run (problem we had with ISAT)\r\n\r\nAdded tests and auto tuning example file.\r\nUpdated README.md\r\nAdded `info` function to `logger` as @FabioLuporini suggested\r\n\r\nChanged cache blocking logic, which is as follows:\r\n`cache_blocking` and `block_sizes` have to be either single bool/int instances which will block all dims or lists of same size as spacial domain explicitly specifying which dims to block and which block sizes to use.\r\n\r\nTo use auto tuning results pass `at_report` argument to `Operator`."},"comment":{"url":"https://api.github.com/repos/opesci/devito/issues/comments/238569746","html_url":"https://github.com/opesci/devito/pull/78#issuecomment-238569746","issue_url":"https://api.github.com/repos/opesci/devito/issues/78","id":238569746,"user":{"login":"FabioLuporini","id":478143,"avatar_url":"https://avatars.githubusercontent.com/u/478143?v=3","gravatar_id":"","url":"https://api.github.com/users/FabioLuporini","html_url":"https://github.com/FabioLuporini","followers_url":"https://api.github.com/users/FabioLuporini/followers","following_url":"https://api.github.com/users/FabioLuporini/following{/other_user}","gists_url":"https://api.github.com/users/FabioLuporini/gists{/gist_id}","starred_url":"https://api.github.com/users/FabioLuporini/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FabioLuporini/subscriptions","organizations_url":"https://api.github.com/users/FabioLuporini/orgs","repos_url":"https://api.github.com/users/FabioLuporini/repos","events_url":"https://api.github.com/users/FabioLuporini/events{/privacy}","received_events_url":"https://api.github.com/users/FabioLuporini/received_events","type":"User","site_admin":false},"created_at":"2016-08-09T14:25:50Z","updated_at":"2016-08-09T14:25:50Z","body":"@sheino I agree we should add the PEP 8 rule\r\n\r\nwhat I meant by \"unpicking\" is that we are copy-pasting code at the moment more than writing an actual compiler. \r\n\r\nAs for the rest, I still think we are not doing enough object oriented programming here. If we had a separate class, we could for example just overwrite that generate_loops_something method, or perhaps split it into smaller (private) methods and then overwriting them accordingly. All the branches would eventually disappear. \r\n\r\nWhat happens for example if we wanted a Propagator that generates code for GPUs ? or that applies some other magic ? I think we need a proper hierarchy and it seems quite quick to do"}}
{"actor":{"display_login":"FabioLuporini"}}