{"action":"closed","number":155,"pull_request":{"url":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/155","id":45324777,"html_url":"https://github.com/clMathLibraries/clSPARSE/pull/155","diff_url":"https://github.com/clMathLibraries/clSPARSE/pull/155.diff","patch_url":"https://github.com/clMathLibraries/clSPARSE/pull/155.patch","issue_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/issues/155","number":155,"state":"closed","locked":false,"title":"Changed double precision pragmas for HW w/o DPFP","user":{"login":"jlgreathouse","id":12378225,"avatar_url":"https://avatars.githubusercontent.com/u/12378225?v=3","gravatar_id":"","url":"https://api.github.com/users/jlgreathouse","html_url":"https://github.com/jlgreathouse","followers_url":"https://api.github.com/users/jlgreathouse/followers","following_url":"https://api.github.com/users/jlgreathouse/following{/other_user}","gists_url":"https://api.github.com/users/jlgreathouse/gists{/gist_id}","starred_url":"https://api.github.com/users/jlgreathouse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlgreathouse/subscriptions","organizations_url":"https://api.github.com/users/jlgreathouse/orgs","repos_url":"https://api.github.com/users/jlgreathouse/repos","events_url":"https://api.github.com/users/jlgreathouse/events{/privacy}","received_events_url":"https://api.github.com/users/jlgreathouse/received_events","type":"User","site_admin":false},"body":"This fixes #141 \r\n\r\nPreviously, all of our OpenCL kernels blindly included either the extension cl_khr_fp64 or cl_amd_fp64 without checking if the kernel actually needed double precision support. As per Issue #141, this means that our kernels would fail to build when the target device does not include DPFP support.\r\n\r\nThis patchset does three major things:\r\n* Only includes the fp64 extension pragmas on OpenCL versions earlier than 1.2. As of 1.2, fp64 support is an optional core feature (not an extension). This should silence some compiler warnings.\r\n* Only includes the fp64 extensions if the kernel actually needs support for fp64. My method for doing this was to check on the host side whether one of data types is a double, and passing in -DDOUBLE if so.\r\n  * I would have liked to instead compare VALUE_TYPE (or any of our other *_TYPE constants) against double, but string comparisons in the preprocessor are non-portable\r\n* I've added a bool into the control structure to indicate whether the hardware has double precision support. If we attempt to launch a clSPARSE kernel that requires fp64 on a device that indicates no fp64 support, the function call will fail with the return `clsparseInvalidDevice` and (optionally, in Debug builds) print out a complaint to stderr.","created_at":"2015-09-17T18:30:19Z","updated_at":"2015-09-17T22:03:42Z","closed_at":"2015-09-17T22:03:42Z","merged_at":null,"merge_commit_sha":"a4a7732d4daf276cc2a89f11e9a1c10283411157","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/155/commits","review_comments_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/155/comments","review_comment_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/comments{/number}","comments_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/issues/155/comments","statuses_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/statuses/5d510dcd806dc78f6e3c91e592da074cda0443b0","head":{"label":"jlgreathouse:fix_double","ref":"fix_double","sha":"5d510dcd806dc78f6e3c91e592da074cda0443b0","user":{"login":"jlgreathouse","id":12378225,"avatar_url":"https://avatars.githubusercontent.com/u/12378225?v=3","gravatar_id":"","url":"https://api.github.com/users/jlgreathouse","html_url":"https://github.com/jlgreathouse","followers_url":"https://api.github.com/users/jlgreathouse/followers","following_url":"https://api.github.com/users/jlgreathouse/following{/other_user}","gists_url":"https://api.github.com/users/jlgreathouse/gists{/gist_id}","starred_url":"https://api.github.com/users/jlgreathouse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlgreathouse/subscriptions","organizations_url":"https://api.github.com/users/jlgreathouse/orgs","repos_url":"https://api.github.com/users/jlgreathouse/repos","events_url":"https://api.github.com/users/jlgreathouse/events{/privacy}","received_events_url":"https://api.github.com/users/jlgreathouse/received_events","type":"User","site_admin":false},"repo":{"id":38717195,"name":"clSPARSE","full_name":"jlgreathouse/clSPARSE","owner":{"login":"jlgreathouse","id":12378225,"avatar_url":"https://avatars.githubusercontent.com/u/12378225?v=3","gravatar_id":"","url":"https://api.github.com/users/jlgreathouse","html_url":"https://github.com/jlgreathouse","followers_url":"https://api.github.com/users/jlgreathouse/followers","following_url":"https://api.github.com/users/jlgreathouse/following{/other_user}","gists_url":"https://api.github.com/users/jlgreathouse/gists{/gist_id}","starred_url":"https://api.github.com/users/jlgreathouse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlgreathouse/subscriptions","organizations_url":"https://api.github.com/users/jlgreathouse/orgs","repos_url":"https://api.github.com/users/jlgreathouse/repos","events_url":"https://api.github.com/users/jlgreathouse/events{/privacy}","received_events_url":"https://api.github.com/users/jlgreathouse/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jlgreathouse/clSPARSE","description":"a software library containing Sparse functions written in OpenCL","fork":true,"url":"https://api.github.com/repos/jlgreathouse/clSPARSE","forks_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/forks","keys_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/teams","hooks_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/hooks","issue_events_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/issues/events{/number}","events_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/events","assignees_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/assignees{/user}","branches_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/branches{/branch}","tags_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/tags","blobs_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/git/refs{/sha}","trees_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/statuses/{sha}","languages_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/languages","stargazers_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/stargazers","contributors_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/contributors","subscribers_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/subscribers","subscription_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/subscription","commits_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/commits{/sha}","git_commits_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/git/commits{/sha}","comments_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/comments{/number}","issue_comment_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/issues/comments{/number}","contents_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/contents/{+path}","compare_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/merges","archive_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/downloads","issues_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/issues{/number}","pulls_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/pulls{/number}","milestones_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/milestones{/number}","notifications_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/labels{/name}","releases_url":"https://api.github.com/repos/jlgreathouse/clSPARSE/releases{/id}","created_at":"2015-07-07T22:01:36Z","updated_at":"2015-08-03T21:16:16Z","pushed_at":"2015-09-17T18:44:32Z","git_url":"git://github.com/jlgreathouse/clSPARSE.git","ssh_url":"git@github.com:jlgreathouse/clSPARSE.git","clone_url":"https://github.com/jlgreathouse/clSPARSE.git","svn_url":"https://github.com/jlgreathouse/clSPARSE","homepage":null,"size":1199,"stargazers_count":0,"watchers_count":0,"language":"C++","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":"clMathLibraries:develop","ref":"develop","sha":"b0c8aaa9d00124da61c0abc9af35c9d40a563fa6","user":{"login":"clMathLibraries","id":5222571,"avatar_url":"https://avatars.githubusercontent.com/u/5222571?v=3","gravatar_id":"","url":"https://api.github.com/users/clMathLibraries","html_url":"https://github.com/clMathLibraries","followers_url":"https://api.github.com/users/clMathLibraries/followers","following_url":"https://api.github.com/users/clMathLibraries/following{/other_user}","gists_url":"https://api.github.com/users/clMathLibraries/gists{/gist_id}","starred_url":"https://api.github.com/users/clMathLibraries/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clMathLibraries/subscriptions","organizations_url":"https://api.github.com/users/clMathLibraries/orgs","repos_url":"https://api.github.com/users/clMathLibraries/repos","events_url":"https://api.github.com/users/clMathLibraries/events{/privacy}","received_events_url":"https://api.github.com/users/clMathLibraries/received_events","type":"Organization","site_admin":false},"repo":{"id":30902100,"name":"clSPARSE","full_name":"clMathLibraries/clSPARSE","owner":{"login":"clMathLibraries","id":5222571,"avatar_url":"https://avatars.githubusercontent.com/u/5222571?v=3","gravatar_id":"","url":"https://api.github.com/users/clMathLibraries","html_url":"https://github.com/clMathLibraries","followers_url":"https://api.github.com/users/clMathLibraries/followers","following_url":"https://api.github.com/users/clMathLibraries/following{/other_user}","gists_url":"https://api.github.com/users/clMathLibraries/gists{/gist_id}","starred_url":"https://api.github.com/users/clMathLibraries/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clMathLibraries/subscriptions","organizations_url":"https://api.github.com/users/clMathLibraries/orgs","repos_url":"https://api.github.com/users/clMathLibraries/repos","events_url":"https://api.github.com/users/clMathLibraries/events{/privacy}","received_events_url":"https://api.github.com/users/clMathLibraries/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/clMathLibraries/clSPARSE","description":"a software library containing Sparse functions written in OpenCL","fork":false,"url":"https://api.github.com/repos/clMathLibraries/clSPARSE","forks_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/forks","keys_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/keys{/key_id}","collaborators_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/teams","hooks_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/hooks","issue_events_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/issues/events{/number}","events_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/events","assignees_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/assignees{/user}","branches_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/branches{/branch}","tags_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/tags","blobs_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/git/refs{/sha}","trees_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/git/trees{/sha}","statuses_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/statuses/{sha}","languages_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/languages","stargazers_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/stargazers","contributors_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/contributors","subscribers_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/subscribers","subscription_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/subscription","commits_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/commits{/sha}","git_commits_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/git/commits{/sha}","comments_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/comments{/number}","issue_comment_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/issues/comments{/number}","contents_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/contents/{+path}","compare_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/compare/{base}...{head}","merges_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/merges","archive_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/downloads","issues_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/issues{/number}","pulls_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls{/number}","milestones_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/milestones{/number}","notifications_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/labels{/name}","releases_url":"https://api.github.com/repos/clMathLibraries/clSPARSE/releases{/id}","created_at":"2015-02-17T04:11:03Z","updated_at":"2015-09-03T09:17:40Z","pushed_at":"2015-09-17T18:44:33Z","git_url":"git://github.com/clMathLibraries/clSPARSE.git","ssh_url":"git@github.com:clMathLibraries/clSPARSE.git","clone_url":"https://github.com/clMathLibraries/clSPARSE.git","svn_url":"https://github.com/clMathLibraries/clSPARSE","homepage":null,"size":2169,"stargazers_count":20,"watchers_count":20,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":12,"mirror_url":null,"open_issues_count":26,"forks":12,"open_issues":26,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/155"},"html":{"href":"https://github.com/clMathLibraries/clSPARSE/pull/155"},"issue":{"href":"https://api.github.com/repos/clMathLibraries/clSPARSE/issues/155"},"comments":{"href":"https://api.github.com/repos/clMathLibraries/clSPARSE/issues/155/comments"},"review_comments":{"href":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/155/comments"},"review_comment":{"href":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/clMathLibraries/clSPARSE/pulls/155/commits"},"statuses":{"href":"https://api.github.com/repos/clMathLibraries/clSPARSE/statuses/5d510dcd806dc78f6e3c91e592da074cda0443b0"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":0,"review_comments":2,"commits":2,"additions":575,"deletions":174,"changed_files":31}}