{"action":"created","issue":{"url":"https://api.github.com/repos/intel/mkl-dnn/issues/260","repository_url":"https://api.github.com/repos/intel/mkl-dnn","labels_url":"https://api.github.com/repos/intel/mkl-dnn/issues/260/labels{/name}","comments_url":"https://api.github.com/repos/intel/mkl-dnn/issues/260/comments","events_url":"https://api.github.com/repos/intel/mkl-dnn/issues/260/events","html_url":"https://github.com/intel/mkl-dnn/pull/260","id":332637228,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk1MDcxMTI1","number":260,"title":"Enables OpenMP support in MSVC","user":{"login":"TechnikEmpire","id":11234763,"node_id":"MDQ6VXNlcjExMjM0NzYz","avatar_url":"https://avatars2.githubusercontent.com/u/11234763?v=4","gravatar_id":"","url":"https://api.github.com/users/TechnikEmpire","html_url":"https://github.com/TechnikEmpire","followers_url":"https://api.github.com/users/TechnikEmpire/followers","following_url":"https://api.github.com/users/TechnikEmpire/following{/other_user}","gists_url":"https://api.github.com/users/TechnikEmpire/gists{/gist_id}","starred_url":"https://api.github.com/users/TechnikEmpire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TechnikEmpire/subscriptions","organizations_url":"https://api.github.com/users/TechnikEmpire/orgs","repos_url":"https://api.github.com/users/TechnikEmpire/repos","events_url":"https://api.github.com/users/TechnikEmpire/events{/privacy}","received_events_url":"https://api.github.com/users/TechnikEmpire/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-06-15T03:45:13Z","updated_at":"2018-06-15T13:15:24Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/intel/mkl-dnn/pulls/260","html_url":"https://github.com/intel/mkl-dnn/pull/260","diff_url":"https://github.com/intel/mkl-dnn/pull/260.diff","patch_url":"https://github.com/intel/mkl-dnn/pull/260.patch"},"body":"Added two new macros to handle pragma omp simd. One that doesn't take any clauses/args, and one that does. On pure msvc, these will define a nop that will not warn or error. On all other compilers, they will expand properly.\r\n\r\nThe global scratch pad struct had omp threadprivate declared on static members. This is supported only in OpenMP >= 3.0. As such, using a guard between msvc and everything else, made a second msvc-specific implementation with an internal thread-local storage system as a work around.\r\n\r\nReplaced index variable types where necessary on loops decorated with omp parallel in order to avoid a compiler error from msvc that complains about violating OpenMP standards of requiring such indices to be signed types."},"comment":{"url":"https://api.github.com/repos/intel/mkl-dnn/issues/comments/397616384","html_url":"https://github.com/intel/mkl-dnn/pull/260#issuecomment-397616384","issue_url":"https://api.github.com/repos/intel/mkl-dnn/issues/260","id":397616384,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NzYxNjM4NA==","user":{"login":"kruus","id":6012434,"node_id":"MDQ6VXNlcjYwMTI0MzQ=","avatar_url":"https://avatars3.githubusercontent.com/u/6012434?v=4","gravatar_id":"","url":"https://api.github.com/users/kruus","html_url":"https://github.com/kruus","followers_url":"https://api.github.com/users/kruus/followers","following_url":"https://api.github.com/users/kruus/following{/other_user}","gists_url":"https://api.github.com/users/kruus/gists{/gist_id}","starred_url":"https://api.github.com/users/kruus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kruus/subscriptions","organizations_url":"https://api.github.com/users/kruus/orgs","repos_url":"https://api.github.com/users/kruus/repos","events_url":"https://api.github.com/users/kruus/events{/privacy}","received_events_url":"https://api.github.com/users/kruus/received_events","type":"User","site_admin":false},"created_at":"2018-06-15T13:15:24Z","updated_at":"2018-06-15T13:15:24Z","author_association":"CONTRIBUTOR","body":"Nice :) I also had to macroize various omp things to _Pragma/empty to cater to compilers that supported only subsets of omp."}}
{"actor":{"display_login":"kruus"}}