| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="generator" content="Asciidoctor 1.5.8"> |
| <title>clGetDeviceInfo(3)</title> |
| <style> |
| /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ |
| /* ========================================================================== HTML5 display definitions ========================================================================== */ |
| /** Correct `block` display not defined in IE 8/9. */ |
| article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } |
| |
| /** Correct `inline-block` display not defined in IE 8/9. */ |
| audio, canvas, video { display: inline-block; } |
| |
| /** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ |
| audio:not([controls]) { display: none; height: 0; } |
| |
| /** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */ |
| [hidden], template { display: none; } |
| |
| script { display: none !important; } |
| |
| /* ========================================================================== Base ========================================================================== */ |
| /** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ |
| html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } |
| |
| /** Remove default margin. */ |
| body { margin: 0; } |
| |
| /* ========================================================================== Links ========================================================================== */ |
| /** Remove the gray background color from active links in IE 10. */ |
| a { background: transparent; } |
| |
| /** Address `outline` inconsistency between Chrome and other browsers. */ |
| a:focus { outline: thin dotted; } |
| |
| /** Improve readability when focused and also mouse hovered in all browsers. */ |
| a:active, a:hover { outline: 0; } |
| |
| /* ========================================================================== Typography ========================================================================== */ |
| /** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ |
| h1 { font-size: 2em; margin: 0.67em 0; } |
| |
| /** Address styling not present in IE 8/9, Safari 5, and Chrome. */ |
| abbr[title] { border-bottom: 1px dotted; } |
| |
| /** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ |
| b, strong { font-weight: bold; } |
| |
| /** Address styling not present in Safari 5 and Chrome. */ |
| dfn { font-style: italic; } |
| |
| /** Address differences between Firefox and other browsers. */ |
| hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } |
| |
| /** Address styling not present in IE 8/9. */ |
| mark { background: #ff0; color: #000; } |
| |
| /** Correct font family set oddly in Safari 5 and Chrome. */ |
| code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } |
| |
| /** Improve readability of pre-formatted text in all browsers. */ |
| pre { white-space: pre-wrap; } |
| |
| /** Set consistent quote types. */ |
| q { quotes: "\201C" "\201D" "\2018" "\2019"; } |
| |
| /** Address inconsistent and variable font size in all browsers. */ |
| small { font-size: 80%; } |
| |
| /** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ |
| sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } |
| |
| sup { top: -0.5em; } |
| |
| sub { bottom: -0.25em; } |
| |
| /* ========================================================================== Embedded content ========================================================================== */ |
| /** Remove border when inside `a` element in IE 8/9. */ |
| img { border: 0; } |
| |
| /** Correct overflow displayed oddly in IE 9. */ |
| svg:not(:root) { overflow: hidden; } |
| |
| /* ========================================================================== Figures ========================================================================== */ |
| /** Address margin not present in IE 8/9 and Safari 5. */ |
| figure { margin: 0; } |
| |
| /* ========================================================================== Forms ========================================================================== */ |
| /** Define consistent border, margin, and padding. */ |
| fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } |
| |
| /** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ |
| legend { border: 0; /* 1 */ padding: 0; /* 2 */ } |
| |
| /** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */ |
| button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ } |
| |
| /** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ |
| button, input { line-height: normal; } |
| |
| /** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */ |
| button, select { text-transform: none; } |
| |
| /** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */ |
| button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } |
| |
| /** Re-set default cursor for disabled elements. */ |
| button[disabled], html input[disabled] { cursor: default; } |
| |
| /** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ |
| input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } |
| |
| /** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */ |
| input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } |
| |
| /** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ |
| input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } |
| |
| /** Remove inner padding and border in Firefox 4+. */ |
| button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } |
| |
| /** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ |
| textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } |
| |
| /* ========================================================================== Tables ========================================================================== */ |
| /** Remove most spacing between table cells. */ |
| table { border-collapse: collapse; border-spacing: 0; } |
| |
| meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; } |
| |
| meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; } |
| |
| meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; } |
| |
| *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } |
| |
| html, body { font-size: 100%; } |
| |
| body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; } |
| |
| a:hover { cursor: pointer; } |
| |
| img, object, embed { max-width: 100%; height: auto; } |
| |
| object, embed { height: 100%; } |
| |
| img { -ms-interpolation-mode: bicubic; } |
| |
| #map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; } |
| |
| .left { float: left !important; } |
| |
| .right { float: right !important; } |
| |
| .text-left { text-align: left !important; } |
| |
| .text-right { text-align: right !important; } |
| |
| .text-center { text-align: center !important; } |
| |
| .text-justify { text-align: justify !important; } |
| |
| .hide { display: none; } |
| |
| .antialiased { -webkit-font-smoothing: antialiased; } |
| |
| img { display: inline-block; vertical-align: middle; } |
| |
| textarea { height: auto; min-height: 50px; } |
| |
| select { width: 100%; } |
| |
| object, svg { display: inline-block; vertical-align: middle; } |
| |
| .center { margin-left: auto; margin-right: auto; } |
| |
| .spread { width: 100%; } |
| |
| p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; } |
| |
| .subheader, .admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { line-height: 1.4; color: black; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } |
| |
| /* Typography resets */ |
| div, dl, dt, dd, ul, ol, li, h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; direction: ltr; } |
| |
| /* Default Link Styles */ |
| a { color: #0068b0; text-decoration: none; line-height: inherit; } |
| a:hover, a:focus { color: #333333; } |
| a img { border: none; } |
| |
| /* Default paragraph styles */ |
| p { font-family: Noto, sans-serif; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; text-rendering: optimizeLegibility; } |
| p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; } |
| |
| /* Default header styles */ |
| h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: Noto, sans-serif; font-weight: normal; font-style: normal; color: black; text-rendering: optimizeLegibility; margin-top: 0.5em; margin-bottom: 0.5em; line-height: 1.2125em; } |
| h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #4d4d4d; line-height: 0; } |
| |
| h1 { font-size: 2.125em; } |
| |
| h2 { font-size: 1.6875em; } |
| |
| h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; } |
| |
| h4 { font-size: 1.125em; } |
| |
| h5 { font-size: 1.125em; } |
| |
| h6 { font-size: 1em; } |
| |
| hr { border: solid #dddddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; } |
| |
| /* Helpful Typography Defaults */ |
| em, i { font-style: italic; line-height: inherit; } |
| |
| strong, b { font-weight: bold; line-height: inherit; } |
| |
| small { font-size: 60%; line-height: inherit; } |
| |
| code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #264357; } |
| |
| /* Lists */ |
| ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; list-style-position: outside; font-family: Noto, sans-serif; } |
| |
| ul, ol { margin-left: 1.5em; } |
| ul.no-bullet, ol.no-bullet { margin-left: 1.5em; } |
| |
| /* Unordered Lists */ |
| ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ } |
| ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; } |
| ul.square { list-style-type: square; } |
| ul.circle { list-style-type: circle; } |
| ul.disc { list-style-type: disc; } |
| ul.no-bullet { list-style: none; } |
| |
| /* Ordered Lists */ |
| ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; } |
| |
| /* Definition Lists */ |
| dl dt { margin-bottom: 0.3em; font-weight: bold; } |
| dl dd { margin-bottom: 0.75em; } |
| |
| /* Abbreviations */ |
| abbr, acronym { text-transform: uppercase; font-size: 90%; color: black; border-bottom: 1px dotted #dddddd; cursor: help; } |
| |
| abbr { text-transform: none; } |
| |
| /* Blockquotes */ |
| blockquote { margin: 0 0 0.75em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; } |
| blockquote cite { display: block; font-size: 0.8125em; color: #5e93b8; } |
| blockquote cite:before { content: "\2014 \0020"; } |
| blockquote cite a, blockquote cite a:visited { color: #5e93b8; } |
| |
| blockquote, blockquote p { line-height: 1.6; color: #333333; } |
| |
| /* Microformats */ |
| .vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; } |
| .vcard li { margin: 0; display: block; } |
| .vcard .fn { font-weight: bold; font-size: 0.9375em; } |
| |
| .vevent .summary { font-weight: bold; } |
| .vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; } |
| |
| @media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } |
| h1 { font-size: 2.75em; } |
| h2 { font-size: 2.3125em; } |
| h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; } |
| h4 { font-size: 1.4375em; } } |
| /* Tables */ |
| table { background: white; margin-bottom: 1.25em; border: solid 1px #d8d8ce; } |
| table thead, table tfoot { background: -webkit-linear-gradient(top, #add386, #90b66a); font-weight: bold; } |
| table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: white; text-align: left; } |
| table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #6d6e71; } |
| table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #edf2f2; } |
| table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; } |
| |
| body { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; tab-size: 4; } |
| |
| h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } |
| |
| a:hover, a:focus { text-decoration: underline; } |
| |
| .clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; } |
| .clearfix:after, .float-group:after { clear: both; } |
| |
| *:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 0; background-color: white; -webkit-border-radius: 0; border-radius: 0; line-height: inherit; word-wrap: break-word; } |
| *:not(pre) > code.nobreak { word-wrap: normal; } |
| *:not(pre) > code.nowrap { white-space: nowrap; } |
| |
| pre, pre > code { line-height: 1.6; color: #264357; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } |
| |
| em em { font-style: normal; } |
| |
| strong strong { font-weight: normal; } |
| |
| .keyseq { color: #333333; } |
| |
| kbd { font-family: Consolas, "Liberation Mono", Courier, monospace; display: inline-block; color: black; font-size: 0.65em; line-height: 1.45; background-color: #f7f7f7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; } |
| |
| .keyseq kbd:first-child { margin-left: 0; } |
| |
| .keyseq kbd:last-child { margin-right: 0; } |
| |
| .menuseq, .menuref { color: #000; } |
| |
| .menuseq b:not(.caret), .menuref { font-weight: inherit; } |
| |
| .menuseq { word-spacing: -0.02em; } |
| .menuseq b.caret { font-size: 1.25em; line-height: 0.8; } |
| .menuseq i.caret { font-weight: bold; text-align: center; width: 0.45em; } |
| |
| b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; } |
| |
| b.button:before { content: "["; padding: 0 3px 0 2px; } |
| |
| b.button:after { content: "]"; padding: 0 2px 0 3px; } |
| |
| #header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 1.5em; padding-right: 1.5em; } |
| #header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; } |
| #header:after, #content:after, #footnotes:after, #footer:after { clear: both; } |
| |
| #content { margin-top: 1.25em; } |
| |
| #content:before { content: none; } |
| |
| #header > h1:first-child { color: black; margin-top: 2.25rem; margin-bottom: 0; } |
| #header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #dddddd; } |
| #header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; } |
| #header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #5e93b8; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; } |
| #header .details span:first-child { margin-left: -0.125em; } |
| #header .details span.email a { color: #333333; } |
| #header .details br { display: none; } |
| #header .details br + span:before { content: "\00a0\2013\00a0"; } |
| #header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #333333; } |
| #header .details br + span#revremark:before { content: "\00a0|\00a0"; } |
| #header #revnumber { text-transform: capitalize; } |
| #header #revnumber:after { content: "\00a0"; } |
| |
| #content > h1:first-child:not([class]) { color: black; border-bottom: 1px solid #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; } |
| |
| #toc { border-bottom: 0 solid #dddddd; padding-bottom: 0.5em; } |
| #toc > ul { margin-left: 0.125em; } |
| #toc ul.sectlevel0 > li > a { font-style: italic; } |
| #toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; } |
| #toc ul { font-family: Noto, sans-serif; list-style-type: none; } |
| #toc li { line-height: 1.3334; margin-top: 0.3334em; } |
| #toc a { text-decoration: none; } |
| #toc a:active { text-decoration: underline; } |
| |
| #toctitle { color: black; font-size: 1.2em; } |
| |
| @media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; } |
| body.toc2 { padding-left: 15em; padding-right: 0; } |
| #toc.toc2 { margin-top: 0 !important; background-color: white; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; } |
| #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; } |
| #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; } |
| #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; } |
| #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } |
| body.toc2.toc-right { padding-left: 0; padding-right: 15em; } |
| body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #dddddd; left: auto; right: 0; } } |
| @media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; } |
| #toc.toc2 { width: 20em; } |
| #toc.toc2 #toctitle { font-size: 1.375em; } |
| #toc.toc2 > ul { font-size: 0.95em; } |
| #toc.toc2 ul ul { padding-left: 1.25em; } |
| body.toc2.toc-right { padding-left: 0; padding-right: 20em; } } |
| #content #toc { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } |
| #content #toc > :first-child { margin-top: 0; } |
| #content #toc > :last-child { margin-bottom: 0; } |
| |
| #footer { max-width: 100%; background-color: none; padding: 1.25em; } |
| |
| #footer-text { color: black; line-height: 1.44; } |
| |
| #content { margin-bottom: 0.625em; } |
| |
| .sect1 { padding-bottom: 0.625em; } |
| |
| @media only screen and (min-width: 768px) { #content { margin-bottom: 1.25em; } |
| .sect1 { padding-bottom: 1.25em; } } |
| .sect1:last-child { padding-bottom: 0; } |
| |
| .sect1 + .sect1 { border-top: 0 solid #dddddd; } |
| |
| #content h1 > a.anchor, h2 > a.anchor, h3 > a.anchor, #toctitle > a.anchor, .sidebarblock > .content > .title > a.anchor, h4 > a.anchor, h5 > a.anchor, h6 > a.anchor { position: absolute; z-index: 1001; width: 1.5ex; margin-left: -1.5ex; display: block; text-decoration: none !important; visibility: hidden; text-align: center; font-weight: normal; } |
| #content h1 > a.anchor:before, h2 > a.anchor:before, h3 > a.anchor:before, #toctitle > a.anchor:before, .sidebarblock > .content > .title > a.anchor:before, h4 > a.anchor:before, h5 > a.anchor:before, h6 > a.anchor:before { content: "\00A7"; font-size: 0.85em; display: block; padding-top: 0.1em; } |
| #content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { visibility: visible; } |
| #content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { color: black; text-decoration: none; } |
| #content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { color: black; } |
| |
| .audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; } |
| |
| .admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-rendering: optimizeLegibility; text-align: left; } |
| |
| table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; } |
| |
| .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: black; } |
| |
| table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } |
| |
| .admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; } |
| .admonitionblock > table td.icon { text-align: center; width: 80px; } |
| .admonitionblock > table td.icon img { max-width: initial; } |
| .admonitionblock > table td.icon .title { font-weight: bold; font-family: Noto, sans-serif; text-transform: uppercase; } |
| .admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #5e93b8; } |
| .admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } |
| |
| .exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } |
| .exampleblock > .content > :first-child { margin-top: 0; } |
| .exampleblock > .content > :last-child { margin-bottom: 0; } |
| |
| .sidebarblock { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } |
| .sidebarblock > :first-child { margin-top: 0; } |
| .sidebarblock > :last-child { margin-bottom: 0; } |
| .sidebarblock > .content > .title { color: black; margin-top: 0; } |
| |
| .exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { margin-bottom: 0; } |
| |
| .literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #eeeeee; } |
| .sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; } |
| |
| .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 1px hidden #666666; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 1.25em 1.5625em 1.125em 1.5625em; font-size: 0.8125em; } |
| .literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; } |
| @media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } } |
| @media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } } |
| |
| .literalblock.output pre { color: #eeeeee; background-color: #264357; } |
| |
| .listingblock pre.highlightjs { padding: 0; } |
| .listingblock pre.highlightjs > code { padding: 1.25em 1.5625em 1.125em 1.5625em; -webkit-border-radius: 0; border-radius: 0; } |
| |
| .listingblock > .content { position: relative; } |
| |
| .listingblock code[data-lang]:before { display: none; content: attr(data-lang); position: absolute; font-size: 0.75em; top: 0.425rem; right: 0.5rem; line-height: 1; text-transform: uppercase; color: #999; } |
| |
| .listingblock:hover code[data-lang]:before { display: block; } |
| |
| .listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; } |
| |
| .listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; } |
| |
| table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; } |
| |
| table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.6; } |
| |
| table.pyhltable td.code { padding-left: .75em; padding-right: 0; } |
| |
| pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; } |
| |
| pre.pygments .lineno { display: inline-block; margin-right: .25em; } |
| |
| table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; } |
| |
| .quoteblock { margin: 0 1em 0.75em 1.5em; display: table; } |
| .quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; } |
| .quoteblock blockquote, .quoteblock blockquote p { color: #333333; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; } |
| .quoteblock blockquote { margin: 0; padding: 0; border: 0; } |
| .quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: black; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } |
| .quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; } |
| .quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; } |
| .quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #5e93b8; } |
| .quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; } |
| .quoteblock .quoteblock blockquote:before { display: none; } |
| |
| .verseblock { margin: 0 1em 0.75em 1em; } |
| .verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #333333; font-weight: 300; text-rendering: optimizeLegibility; } |
| .verseblock pre strong { font-weight: 400; } |
| .verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; } |
| |
| .quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; } |
| .quoteblock .attribution br, .verseblock .attribution br { display: none; } |
| .quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #5e93b8; } |
| |
| .quoteblock.abstract { margin: 0 0 0.75em 0; display: block; } |
| .quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; } |
| .quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; } |
| |
| table.tableblock { max-width: 100%; border-collapse: separate; } |
| table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; } |
| |
| table.tableblock, th.tableblock, td.tableblock { border: 0 solid #d8d8ce; } |
| |
| table.grid-all > thead > tr > .tableblock, table.grid-all > tbody > tr > .tableblock { border-width: 0 1px 1px 0; } |
| |
| table.grid-all > tfoot > tr > .tableblock { border-width: 1px 1px 0 0; } |
| |
| table.grid-cols > * > tr > .tableblock { border-width: 0 1px 0 0; } |
| |
| table.grid-rows > thead > tr > .tableblock, table.grid-rows > tbody > tr > .tableblock { border-width: 0 0 1px 0; } |
| |
| table.grid-rows > tfoot > tr > .tableblock { border-width: 1px 0 0 0; } |
| |
| table.grid-all > * > tr > .tableblock:last-child, table.grid-cols > * > tr > .tableblock:last-child { border-right-width: 0; } |
| |
| table.grid-all > tbody > tr:last-child > .tableblock, table.grid-all > thead:last-child > tr > .tableblock, table.grid-rows > tbody > tr:last-child > .tableblock, table.grid-rows > thead:last-child > tr > .tableblock { border-bottom-width: 0; } |
| |
| table.frame-all { border-width: 1px; } |
| |
| table.frame-sides { border-width: 0 1px; } |
| |
| table.frame-topbot { border-width: 1px 0; } |
| |
| th.halign-left, td.halign-left { text-align: left; } |
| |
| th.halign-right, td.halign-right { text-align: right; } |
| |
| th.halign-center, td.halign-center { text-align: center; } |
| |
| th.valign-top, td.valign-top { vertical-align: top; } |
| |
| th.valign-bottom, td.valign-bottom { vertical-align: bottom; } |
| |
| th.valign-middle, td.valign-middle { vertical-align: middle; } |
| |
| table thead th, table tfoot th { font-weight: bold; } |
| |
| tbody tr th { display: table-cell; line-height: 1.4; background: -webkit-linear-gradient(top, #add386, #90b66a); } |
| |
| tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: white; font-weight: bold; } |
| |
| p.tableblock > code:only-child { background: none; padding: 0; } |
| |
| p.tableblock { font-size: 1em; } |
| |
| td > div.verse { white-space: pre; } |
| |
| ol { margin-left: 1.75em; } |
| |
| ul li ol { margin-left: 1.5em; } |
| |
| dl dd { margin-left: 1.125em; } |
| |
| dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; } |
| |
| ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.375em; } |
| |
| ul.checklist, ul.none, ol.none, ul.no-bullet, ol.no-bullet, ol.unnumbered, ul.unstyled, ol.unstyled { list-style-type: none; } |
| |
| ul.no-bullet, ol.no-bullet, ol.unnumbered { margin-left: 0.625em; } |
| |
| ul.unstyled, ol.unstyled { margin-left: 0; } |
| |
| ul.checklist { margin-left: 0.625em; } |
| |
| ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1.25em; font-size: 0.8em; position: relative; bottom: 0.125em; } |
| |
| ul.checklist li > p:first-child > input[type="checkbox"]:first-child { margin-right: 0.25em; } |
| |
| ul.inline { display: -ms-flexbox; display: -webkit-box; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; list-style: none; margin: 0 0 0.375em -0.75em; } |
| |
| ul.inline > li { margin-left: 0.75em; } |
| |
| .unstyled dl dt { font-weight: normal; font-style: normal; } |
| |
| ol.arabic { list-style-type: decimal; } |
| |
| ol.decimal { list-style-type: decimal-leading-zero; } |
| |
| ol.loweralpha { list-style-type: lower-alpha; } |
| |
| ol.upperalpha { list-style-type: upper-alpha; } |
| |
| ol.lowerroman { list-style-type: lower-roman; } |
| |
| ol.upperroman { list-style-type: upper-roman; } |
| |
| ol.lowergreek { list-style-type: lower-greek; } |
| |
| .hdlist > table, .colist > table { border: 0; background: none; } |
| .hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; } |
| |
| td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; } |
| |
| td.hdlist1 { font-weight: bold; padding-bottom: 0.75em; } |
| |
| .literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; } |
| |
| .colist > table tr > td:first-of-type { padding: 0.4em 0.75em 0 0.75em; line-height: 1; vertical-align: top; } |
| .colist > table tr > td:first-of-type img { max-width: initial; } |
| .colist > table tr > td:last-of-type { padding: 0.25em 0; } |
| |
| .thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; } |
| |
| .imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; } |
| .imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; } |
| .imageblock > .title { margin-bottom: 0; } |
| .imageblock.thumb, .imageblock.th { border-width: 6px; } |
| .imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; } |
| |
| .image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; } |
| .image.left { margin-right: 0.625em; } |
| .image.right { margin-left: 0.625em; } |
| |
| a.image { text-decoration: none; display: inline-block; } |
| a.image object { pointer-events: none; } |
| |
| sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; } |
| sup.footnote a, sup.footnoteref a { text-decoration: none; } |
| sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; } |
| |
| #footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; } |
| #footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; } |
| #footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; margin-bottom: 0.2em; } |
| #footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; margin-left: -1.05em; } |
| #footnotes .footnote:last-of-type { margin-bottom: 0; } |
| #content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; } |
| |
| .gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; } |
| .gist .file-data > table td.line-data { width: 99%; } |
| |
| div.unbreakable { page-break-inside: avoid; } |
| |
| .big { font-size: larger; } |
| |
| .small { font-size: smaller; } |
| |
| .underline { text-decoration: underline; } |
| |
| .overline { text-decoration: overline; } |
| |
| .line-through { text-decoration: line-through; } |
| |
| .aqua { color: #00bfbf; } |
| |
| .aqua-background { background-color: #00fafa; } |
| |
| .black { color: black; } |
| |
| .black-background { background-color: black; } |
| |
| .blue { color: #0000bf; } |
| |
| .blue-background { background-color: #0000fa; } |
| |
| .fuchsia { color: #bf00bf; } |
| |
| .fuchsia-background { background-color: #fa00fa; } |
| |
| .gray { color: #606060; } |
| |
| .gray-background { background-color: #7d7d7d; } |
| |
| .green { color: #006000; } |
| |
| .green-background { background-color: #007d00; } |
| |
| .lime { color: #00bf00; } |
| |
| .lime-background { background-color: #00fa00; } |
| |
| .maroon { color: #600000; } |
| |
| .maroon-background { background-color: #7d0000; } |
| |
| .navy { color: #000060; } |
| |
| .navy-background { background-color: #00007d; } |
| |
| .olive { color: #606000; } |
| |
| .olive-background { background-color: #7d7d00; } |
| |
| .purple { color: #600060; } |
| |
| .purple-background { background-color: #7d007d; } |
| |
| .red { color: #bf0000; } |
| |
| .red-background { background-color: #fa0000; } |
| |
| .silver { color: #909090; } |
| |
| .silver-background { background-color: #bcbcbc; } |
| |
| .teal { color: #006060; } |
| |
| .teal-background { background-color: #007d7d; } |
| |
| .white { color: #bfbfbf; } |
| |
| .white-background { background-color: #fafafa; } |
| |
| .yellow { color: #bfbf00; } |
| |
| .yellow-background { background-color: #fafa00; } |
| |
| span.icon > .fa { cursor: default; } |
| a span.icon > .fa { cursor: inherit; } |
| |
| .admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; } |
| .admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #29475c; } |
| .admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } |
| .admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } |
| .admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } |
| .admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } |
| |
| .conum[data-value] { display: inline-block; color: #fff !important; background-color: black; -webkit-border-radius: 100px; border-radius: 100px; text-align: center; font-size: 0.75em; width: 1.67em; height: 1.67em; line-height: 1.67em; font-family: "Open Sans", "DejaVu Sans", sans-serif; font-style: normal; font-weight: bold; } |
| .conum[data-value] * { color: #fff !important; } |
| .conum[data-value] + b { display: none; } |
| .conum[data-value]:after { content: attr(data-value); } |
| pre .conum[data-value] { position: relative; top: -0.125em; } |
| |
| b.conum * { color: inherit !important; } |
| |
| .conum:not([data-value]):empty { display: none; } |
| |
| h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { border-bottom: 1px solid #dddddd; } |
| |
| .sect1 { padding-bottom: 0; } |
| |
| #toctitle { color: #00406F; font-weight: normal; margin-top: 1.5em; } |
| |
| .sidebarblock { border-color: #aaa; } |
| |
| code { -webkit-border-radius: 4px; border-radius: 4px; } |
| |
| p.tableblock.header { color: #6d6e71; } |
| |
| .literalblock pre, .listingblock pre { background: #eeeeee; } |
| |
| </style> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> |
| <link rel="stylesheet" href="../../katex/katex.min.css"> |
| <script src="../../katex/katex.min.js"></script> |
| <script src="../../katex/contrib/auto-render.min.js"></script> |
| <!-- Use KaTeX to render math once document is loaded, see |
| https://github.com/Khan/KaTeX/tree/master/contrib/auto-render --> |
| <script> |
| document.addEventListener("DOMContentLoaded", function () { |
| renderMathInElement( |
| document.body, |
| { |
| delimiters: [ |
| { left: "$$", right: "$$", display: true}, |
| { left: "\\[", right: "\\]", display: true}, |
| { left: "$", right: "$", display: false}, |
| { left: "\\(", right: "\\)", display: false} |
| ] |
| } |
| ); |
| }); |
| </script></head> |
| <body class="manpage"> |
| <div id="header"> |
| <h1>clGetDeviceInfo(3) Manual Page</h1> |
| <h2 id="_name">Name</h2> |
| <div class="sectionbody"> |
| <p>clGetDeviceInfo - Query specific information about a device</p> |
| </div> |
| </div> |
| <div id="content"> |
| <div class="sect1"> |
| <h2 id="_c_specification">C Specification</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>To get specific information about an OpenCL device, call the function:</p> |
| </div> |
| <div id="clGetDeviceInfo" class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-c++" data-lang="c++">cl_int clGetDeviceInfo( |
| cl_device_id device, |
| cl_device_info param_name, |
| size_t param_value_size, |
| void* param_value, |
| size_t* param_value_size_ret);</code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_parameters">Parameters</h2> |
| <div class="sectionbody"> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><em>device</em> may be a device returned by <strong>clGetDeviceIDs</strong> or a sub-device |
| created by <strong>clCreateSubDevices</strong>. |
| If <em>device</em> is a sub-device, the specific information for the sub-device |
| will be returned. |
| The information that can be queried using <strong>clGetDeviceInfo</strong> is specified in |
| the <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#device-queries-table" target="_blank" rel="noopener">Device Queries</a> table.</p> |
| </li> |
| <li> |
| <p><em>param_name</em> is an enumeration constant that identifies the device |
| information being queried. |
| It can be one of the following values as specified in the |
| <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#device-queries-table" target="_blank" rel="noopener">Device Queries</a> table.</p> |
| </li> |
| <li> |
| <p><em>param_value</em> is a pointer to memory location where appropriate values for a |
| given <em>param_name</em>, as specified in the <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#device-queries-table" target="_blank" rel="noopener">Device |
| Queries</a> table, will be returned. |
| If <em>param_value</em> is <code>NULL</code>, it is ignored.</p> |
| </li> |
| <li> |
| <p><em>param_value_size</em> specifies the size in bytes of memory pointed to by |
| <em>param_value</em>. |
| This size in bytes must be ≥ size of return type specified in the |
| <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#device-queries-table" target="_blank" rel="noopener">Device Queries</a> table.</p> |
| </li> |
| <li> |
| <p><em>param_value_size_ret</em> returns the actual size in bytes of data being |
| queried by <em>param_name</em>. |
| If <em>param_value_size_ret</em> is <code>NULL</code>, it is ignored.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_description">Description</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The device queries described in the <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#device-queries-table" target="_blank" rel="noopener">Device Queries</a> |
| table should return the same information for a root-level device i.e. a |
| device returned by <strong>clGetDeviceIDs</strong> and any sub-devices created from this |
| device except for the following queries:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>CL_​DEVICE_​GLOBAL_​MEM_​CACHE_​SIZE</code></p> |
| </li> |
| <li> |
| <p><code>CL_​DEVICE_​BUILT_​IN_​KERNELS</code></p> |
| </li> |
| <li> |
| <p><code>CL_​DEVICE_​PARENT_​DEVICE</code></p> |
| </li> |
| <li> |
| <p><code>CL_​DEVICE_​PARTITION_​TYPE</code></p> |
| </li> |
| <li> |
| <p><code>CL_​DEVICE_​REFERENCE_​COUNT</code></p> |
| </li> |
| </ul> |
| </div> |
| <table id="device-queries-table" class="tableblock frame-all grid-all stretch"> |
| <caption class="title">Table 1. List of supported param_names by <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#clGetDeviceInfo" class="bare" target="_blank" rel="noopener">https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#clGetDeviceInfo</a></caption> |
| <colgroup> |
| <col style="width: 30%;"> |
| <col style="width: 20%;"> |
| <col style="width: 50%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top"><strong>cl_device_info</strong></th> |
| <th class="tableblock halign-left valign-top">Return Type</th> |
| <th class="tableblock halign-left valign-top">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​TYPE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_type</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The OpenCL device type. |
| Currently supported values are:</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​TYPE_​CPU</code>, <code>CL_​DEVICE_​TYPE_​GPU</code>, <code>CL_​DEVICE_​TYPE_​ACCELERATOR</code>, |
| <code>CL_​DEVICE_​TYPE_​DEFAULT</code>, a combination of the above types, or |
| <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​VENDOR_​ID</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">A unique device vendor identifier. |
| An example of a unique device identifier could be the PCIe ID.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​COMPUTE_​UNITS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The number of parallel compute units on the OpenCL device. |
| A work-group executes on a single compute unit. |
| The minimum value is 1.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​WORK_​ITEM_​DIMENSIONS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum dimensions that specify the global and local work-item IDs |
| used by the data parallel execution model. (Refer to |
| <strong>clEnqueueNDRangeKernel</strong>). |
| The minimum value is 3 for devices that are not of type |
| <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​WORK_​ITEM_​SIZES</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t []</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of work-items that can be specified in each dimension |
| of the work-group to <strong>clEnqueueNDRangeKernel</strong>.</p> |
| <p class="tableblock"> Returns <em>n</em> size_t entries, where <em>n</em> is the value returned by the |
| query for <code>CL_​DEVICE_​MAX_​WORK_​ITEM_​DIMENSIONS</code>.</p> |
| <p class="tableblock"> The minimum value is (1, 1, 1) for devices that are not of type |
| <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​WORK_​GROUP_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of work-items in a work-group that a device is |
| capable of executing on a single compute unit, for any given |
| kernel-instance running on the device. (Refer also to |
| <strong>clEnqueueNDRangeKernel</strong> and <code>CL_​KERNEL_​WORK_​GROUP_​SIZE</code> ). |
| The minimum value is 1. |
| The returned value is an upper limit and will not necessarily |
| maximize performance. |
| This maximum may be larger than supported by a specific kernel |
| (refer to the <code>CL_​KERNEL_​WORK_​GROUP_​SIZE</code> query of <strong>clGetKernelWorkGroupInfo</strong>).</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​CHAR</code> <br> |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​SHORT</code> <br> |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​INT</code> <br> |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​LONG</code> <br> |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​FLOAT</code> <br> |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​DOUBLE</code><br> |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​HALF</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Preferred native vector width size for built-in scalar types that |
| can be put into vectors. |
| The vector width is defined as the number of scalar elements that |
| can be stored in the vector.</p> |
| <p class="tableblock"> If double precision is not supported, |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​DOUBLE</code> must return 0.</p> |
| <p class="tableblock"> If the <strong>cl_khr_fp16</strong> extension is not supported, |
| <code>CL_​DEVICE_​PREFERRED_​VECTOR_​WIDTH_​HALF</code> must return 0.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​CHAR</code> <br> |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​SHORT</code> <br> |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​INT</code> <br> |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​LONG</code> <br> |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​FLOAT</code> <br> |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​DOUBLE</code><br> |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​HALF</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the native ISA vector width. |
| The vector width is defined as the number of scalar elements that |
| can be stored in the vector.</p> |
| <p class="tableblock"> If double precision is not supported, |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​DOUBLE</code> must return 0.</p> |
| <p class="tableblock"> If the <strong>cl_khr_fp16</strong> extension is not supported, |
| <code>CL_​DEVICE_​NATIVE_​VECTOR_​WIDTH_​HALF</code> must return 0.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​CLOCK_​FREQUENCY</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Clock frequency of the device in MHz. |
| The meaning of this value is implementation-defined. |
| For devices with multiple clock domains, the clock frequency for any |
| of the clock domains may be returned. |
| For devices that dynamically change frequency for power or thermal |
| reasons, the returned clock frequency may be any valid frequency.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​ADDRESS_​BITS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The default compute device address space size of the global address |
| space specified as an unsigned integer value in bits. |
| Currently supported values are 32 or 64 bits.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​MEM_​ALLOC_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max size of memory object allocation in bytes. |
| The minimum value is max(min(1024 × 1024 × 1024, 1/4<sup>th</sup> |
| of <code>CL_​DEVICE_​GLOBAL_​MEM_​SIZE</code>), 32 × 1024 × 1024) for |
| devices that are not of type <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE_​SUPPORT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​TRUE</code> if images are supported by the OpenCL device and <code>CL_​FALSE</code> |
| otherwise.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​READ_​IMAGE_​ARGS</code><sup>4</sup></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the |
| read_only qualifier. |
| The minimum value is 128 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​WRITE_​IMAGE_​ARGS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the |
| write_only qualifier. |
| The minimum value is 64 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​READ_​WRITE_​IMAGE_​ARGS</code><sup>5</sup></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of image objects arguments of a kernel declared with the |
| write_only or read_write qualifier. |
| The minimum value is 64 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IL_​VERSION</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The intermediate languages that can be supported by |
| <strong>clCreateProgramWithIL</strong> for this device. |
| Returns a space-separated list of IL version strings of the form |
| <IL_Prefix>_<Major_Version>.<Minor_Version>. |
| For OpenCL 2.2, SPIR-V is a required IL prefix.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE2D_​MAX_​WIDTH</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max width of 2D image or 1D image not created from a buffer object |
| in pixels.</p> |
| <p class="tableblock"> The minimum value is 16384 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE2D_​MAX_​HEIGHT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max height of 2D image in pixels.</p> |
| <p class="tableblock"> The minimum value is 16384 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE3D_​MAX_​WIDTH</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max width of 3D image in pixels.</p> |
| <p class="tableblock"> The minimum value is 2048 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE3D_​MAX_​HEIGHT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max height of 3D image in pixels.</p> |
| <p class="tableblock"> The minimum value is 2048 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE3D_​MAX_​DEPTH</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max depth of 3D image in pixels.</p> |
| <p class="tableblock"> The minimum value is 2048 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE_​MAX_​BUFFER_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of pixels for a 1D image created from a buffer object.</p> |
| <p class="tableblock"> The minimum value is 65536 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE_​MAX_​ARRAY_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of images in a 1D or 2D image array.</p> |
| <p class="tableblock"> The minimum value is 2048 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​SAMPLERS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of samplers that can be used in a kernel.</p> |
| <p class="tableblock"> The minimum value is 16 if <code>CL_​DEVICE_​IMAGE_​SUPPORT</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE_​PITCH_​ALIGNMENT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The row pitch alignment size in pixels for 2D images created from a |
| buffer. |
| The value returned must be a power of 2.</p> |
| <p class="tableblock"> If the device does not support images, this value must be 0.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​IMAGE_​BASE_​ADDRESS_​ALIGNMENT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">This query should be used when a 2D image is created from a buffer |
| which was created using <code>CL_​MEM_​USE_​HOST_​PTR</code>. |
| The value returned must be a power of 2.</p> |
| <p class="tableblock"> This query specifies the minimum alignment in pixels of the host_ptr |
| specified to <strong>clCreateBuffer</strong>.</p> |
| <p class="tableblock"> If the device does not support images, this value must be 0.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​PIPE_​ARGS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of pipe objects that can be passed as arguments |
| to a kernel. |
| The minimum value is 16.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PIPE_​MAX_​ACTIVE_​RESERVATIONS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of reservations that can be active for a pipe per |
| work-item in a kernel. |
| A work-group reservation is counted as one reservation per |
| work-item. |
| The minimum value is 1.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PIPE_​MAX_​PACKET_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum size of pipe packet in bytes. |
| The minimum value is 1024 bytes.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​PARAMETER_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max size in bytes of all arguments that can be passed to a kernel.</p> |
| <p class="tableblock"> The minimum value is 1024 for devices that are not of type |
| <code>CL_​DEVICE_​TYPE_​CUSTOM</code>. |
| For this minimum value, only a maximum of 128 arguments can be |
| passed to a kernel</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MEM_​BASE_​ADDR_​ALIGN</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Alignment requirement (in bits) for sub-buffer offsets. |
| The minimum value is the size (in bits) of the largest OpenCL |
| built-in data type supported by the device (long16 in FULL profile, |
| long16 or int16 in EMBEDDED profile) for devices that are not of |
| type <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​SINGLE_​FP_​CONFIG</code><sup>6</sup></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_fp_config</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Describes single precision floating-point capability of the device. |
| This is a bit-field that describes one or more of the following |
| values:</p> |
| <p class="tableblock"> <code>CL_​FP_​DENORM</code> - denorms are supported</p> |
| <p class="tableblock"> <code>CL_​FP_​INF_​NAN</code> - INF and quiet NaNs are supported.</p> |
| <p class="tableblock"> <code>CL_​FP_​ROUND_​TO_​NEAREST</code>-- round to nearest even rounding mode |
| supported</p> |
| <p class="tableblock"> <code>CL_​FP_​ROUND_​TO_​ZERO</code> - round to zero rounding mode supported</p> |
| <p class="tableblock"> <code>CL_​FP_​ROUND_​TO_​INF</code> - round to positive and negative infinity |
| rounding modes supported</p> |
| <p class="tableblock"> <code>CL_​FP_​FMA</code> - IEEE754-2008 fused multiply-add is supported.</p> |
| <p class="tableblock"> <code>CL_​FP_​CORRECTLY_​ROUNDED_​DIVIDE_​SQRT</code> - divide and sqrt are correctly |
| rounded as defined by the IEEE754 specification.</p> |
| <p class="tableblock"> <code>CL_​FP_​SOFT_​FLOAT</code> - Basic floating-point operations (such as |
| addition, subtraction, multiplication) are implemented in software.</p> |
| <p class="tableblock"> For the full profile, the mandated minimum floating-point capability |
| for devices that are not of type <code>CL_​DEVICE_​TYPE_​CUSTOM</code> is: |
| <code>CL_​FP_​ROUND_​TO_​NEAREST</code> | <code>CL_​FP_​INF_​NAN</code>.</p> |
| <p class="tableblock"> For the embedded profile, see the |
| <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#embedded-profile-single-fp-config-requirements" target="_blank" rel="noopener">dedicated table</a>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​DOUBLE_​FP_​CONFIG</code><sup>7</sup></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_fp_config</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Describes double precision floating-point capability of the OpenCL |
| device. |
| This is a bit-field that describes one or more of the following |
| values:</p> |
| <p class="tableblock"> <code>CL_​FP_​DENORM</code> - denorms are supported</p> |
| <p class="tableblock"> <code>CL_​FP_​INF_​NAN</code> - INF and NaNs are supported.</p> |
| <p class="tableblock"> <code>CL_​FP_​ROUND_​TO_​NEAREST</code> - round to nearest even rounding mode |
| supported.</p> |
| <p class="tableblock"> <code>CL_​FP_​ROUND_​TO_​ZERO</code> - round to zero rounding mode supported.</p> |
| <p class="tableblock"> <code>CL_​FP_​ROUND_​TO_​INF</code> - round to positive and negative infinity |
| rounding modes supported.</p> |
| <p class="tableblock"> <code>CL_​FP_​FMA</code> - IEEE754-2008 fused multiply-add is supported.</p> |
| <p class="tableblock"> <code>CL_​FP_​SOFT_​FLOAT</code> - Basic floating-point operations (such as |
| addition, subtraction, multiplication) are implemented in software.</p> |
| <p class="tableblock"> Double precision is an optional feature so the mandated minimum |
| double precision floating-point capability is 0.</p> |
| <p class="tableblock"> If double precision is supported by the device, then the minimum |
| double precision floating-point capability must be:<br> |
| <code>CL_​FP_​FMA</code> |<br> |
| <code>CL_​FP_​ROUND_​TO_​NEAREST</code> |<br> |
| <code>CL_​FP_​INF_​NAN</code> |<br> |
| <code>CL_​FP_​DENORM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​GLOBAL_​MEM_​CACHE_​TYPE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_mem_cache_type</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Type of global memory cache supported. |
| Valid values are: <code>CL_​NONE</code>, <code>CL_​READ_​ONLY_​CACHE</code>, and |
| <code>CL_​READ_​WRITE_​CACHE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​GLOBAL_​MEM_​CACHELINE_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Size of global memory cache line in bytes.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​GLOBAL_​MEM_​CACHE_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Size of global memory cache in bytes.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​GLOBAL_​MEM_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Size of global device memory in bytes.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​CONSTANT_​BUFFER_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max size in bytes of a constant buffer allocation. |
| The minimum value is 64 KB for devices that are not of type |
| <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​CONSTANT_​ARGS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Max number of arguments declared with the <code>__constant</code> qualifier |
| in a kernel. |
| The minimum value is 8 for devices that are not of type |
| <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​GLOBAL_​VARIABLE_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of bytes of storage that may be allocated for any |
| single variable in program scope or inside a function in an OpenCL |
| kernel language declared in the global address space.</p> |
| <p class="tableblock"> The minimum value is 64 KB.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​GLOBAL_​VARIABLE_​PREFERRED_​TOTAL_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum preferred total size, in bytes, of all program variables in |
| the global address space. |
| This is a performance hint. |
| An implementation may place such variables in storage with optimized |
| device access. |
| This query returns the capacity of such storage. |
| The minimum value is 0.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​LOCAL_​MEM_​TYPE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_local_mem_type</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Type of local memory supported. |
| This can be set to <code>CL_​LOCAL</code> implying dedicated local memory storage |
| such as SRAM , or <code>CL_​GLOBAL</code>.</p> |
| <p class="tableblock"> For custom devices, <code>CL_​NONE</code> can also be returned indicating no local |
| memory support.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​LOCAL_​MEM_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_ulong</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Size of local memory region in bytes. |
| The minimum value is 32 KB for devices that are not of type |
| <code>CL_​DEVICE_​TYPE_​CUSTOM</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​ERROR_​CORRECTION_​SUPPORT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​TRUE</code> if the device implements error correction for all |
| accesses to compute device memory (global and constant). |
| Is <code>CL_​FALSE</code> if the device does not implement such error correction.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PROFILING_​TIMER_​RESOLUTION</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the resolution of device timer. |
| This is measured in nanoseconds. |
| Refer to <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#profiling-operations" target="_blank" rel="noopener">Profiling Operations</a> for details.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​ENDIAN_​LITTLE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​TRUE</code> if the OpenCL device is a little endian device and |
| <code>CL_​FALSE</code> otherwise</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​AVAILABLE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​TRUE</code> if the device is available and <code>CL_​FALSE</code> otherwise. |
| A device is considered to be available if the device can be expected |
| to successfully execute commands enqueued to the device.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​COMPILER_​AVAILABLE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​FALSE</code> if the implementation does not have a compiler available |
| to compile the program source.</p> |
| <p class="tableblock"> Is <code>CL_​TRUE</code> if the compiler is available. |
| This can be <code>CL_​FALSE</code> for the embedded platform profile only.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​LINKER_​AVAILABLE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​FALSE</code> if the implementation does not have a linker available. |
| Is <code>CL_​TRUE</code> if the linker is available.</p> |
| <p class="tableblock"> This can be <code>CL_​FALSE</code> for the embedded platform profile only.</p> |
| <p class="tableblock"> This must be <code>CL_​TRUE</code> if <code>CL_​DEVICE_​COMPILER_​AVAILABLE</code> is <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​EXECUTION_​CAPABILITIES</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_exec_capabilities</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the execution capabilities of the device. |
| This is a bit-field that describes one or more of the following |
| values:</p> |
| <p class="tableblock"> <code>CL_​EXEC_​KERNEL</code> - The OpenCL device can execute OpenCL kernels.</p> |
| <p class="tableblock"> <code>CL_​EXEC_​NATIVE_​KERNEL</code> - The OpenCL device can execute native |
| kernels.</p> |
| <p class="tableblock"> The mandated minimum capability is: <code>CL_​EXEC_​KERNEL</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​QUEUE_​ON_​HOST_​PROPERTIES</code><sup>8</sup></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue_properties</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the on host command-queue properties supported by the |
| device. |
| This is a bit-field that describes one or more of the following |
| values:</p> |
| <p class="tableblock"> <code>CL_​QUEUE_​OUT_​OF_​ORDER_​EXEC_​MODE_​ENABLE</code><br> |
| <code>CL_​QUEUE_​PROFILING_​ENABLE</code></p> |
| <p class="tableblock"> These properties are described in the <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#queue-properties-table" target="_blank" rel="noopener">Queue Properties</a> table.</p> |
| <p class="tableblock"> The mandated minimum capability is: <code>CL_​QUEUE_​PROFILING_​ENABLE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​QUEUE_​ON_​DEVICE_​PROPERTIES</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_command_queue_properties</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the on device command-queue properties supported by the |
| device. |
| This is a bit-field that describes one or more of the following |
| values:</p> |
| <p class="tableblock"> <code>CL_​QUEUE_​OUT_​OF_​ORDER_​EXEC_​MODE_​ENABLE</code><br> |
| <code>CL_​QUEUE_​PROFILING_​ENABLE</code></p> |
| <p class="tableblock"> These properties are described in the <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#queue-properties-table" target="_blank" rel="noopener">Queue Properties</a> table.</p> |
| <p class="tableblock"> The mandated minimum capability is: |
| <code>CL_​QUEUE_​OUT_​OF_​ORDER_​EXEC_​MODE_​ENABLE</code> | <code>CL_​QUEUE_​PROFILING_​ENABLE</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​QUEUE_​ON_​DEVICE_​PREFERRED_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The size of the device queue in bytes preferred by the |
| implementation. |
| Applications should use this size for the device queue to ensure |
| good performance.</p> |
| <p class="tableblock"> The minimum value is 16 KB</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​QUEUE_​ON_​DEVICE_​MAX_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The max. size of the device queue in bytes. |
| The minimum value is 256 KB for the full profile and 64 KB for the |
| embedded profile</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​ON_​DEVICE_​QUEUES</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of device queues that can be created for this |
| device in a single context.</p> |
| <p class="tableblock"> The minimum value is 1.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​ON_​DEVICE_​EVENTS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The maximum number of events in use by a device queue. |
| These refer to events returned by the <code>enqueue_</code> built-in functions |
| to a device queue or user events returned by the <code>create_user_event</code> |
| built-in function that have not been released.</p> |
| <p class="tableblock"> The minimum value is 1024.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​BUILT_​IN_​KERNELS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">A semi-colon separated list of built-in kernels supported by the |
| device. |
| An empty string is returned if no built-in kernels are supported by |
| the device.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PLATFORM</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_platform_id</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The platform associated with this device.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​NAME</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Device name string.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​VENDOR</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Vendor name string.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DRIVER_​VERSION</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL software driver version string. |
| Follows a vendor-specific format.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PROFILE</code><sup>9</sup></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL profile string. |
| Returns the profile name supported by the device. |
| The profile name returned can be one of the following strings:</p> |
| <p class="tableblock"> FULL_PROFILE - if the device supports the OpenCL specification |
| (functionality defined as part of the core specification and does |
| not require any extensions to be supported).</p> |
| <p class="tableblock"> EMBEDDED_PROFILE - if the device supports the OpenCL embedded |
| profile.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​VERSION</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL version string. |
| Returns the OpenCL version supported by the device. This version |
| string has the following format:</p> |
| <p class="tableblock"> <em>OpenCL<space><major_version.minor_version><space><vendor-specific |
| information></em></p> |
| <p class="tableblock"> The major_version.minor_version value returned will be one of 1.0, |
| 1.1, 1.2, 2.0, 2.1 or 2.2.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​OPENCL_​C_​VERSION</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">OpenCL C version string. |
| Returns the highest OpenCL C version supported by the compiler for |
| this device that is not of type <code>CL_​DEVICE_​TYPE_​CUSTOM</code>. |
| This version string has the following format:</p> |
| <p class="tableblock"> <em>OpenCL<space>C<space><major_version.minor_version><space><vendor-specific |
| information></em></p> |
| <p class="tableblock"> The major_version.minor_version value returned must be 2.0 if |
| <code>CL_​DEVICE_​VERSION</code> is OpenCL 2.0, OpenCL 2.1, or OpenCL 2.2.</p> |
| <p class="tableblock"> The major_version.minor_version value returned must be 1.2 if |
| <code>CL_​DEVICE_​VERSION</code> is OpenCL 1.2.</p> |
| <p class="tableblock"> The major_version.minor_version value returned must be 1.1 if |
| <code>CL_​DEVICE_​VERSION</code> is OpenCL 1.1.</p> |
| <p class="tableblock"> The major_version.minor_version value returned can be 1.0 or 1.1 if |
| <code>CL_​DEVICE_​VERSION</code> is OpenCL 1.0.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​EXTENSIONS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">char[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns a space separated list of extension names (the extension |
| names themselves do not contain any spaces) supported by the device. |
| The list of extension names returned can be vendor supported |
| extension names and one or more of the following Khronos approved |
| extension names:</p> |
| <p class="tableblock"> <strong>cl_khr_int64_base_atomics</strong><br> |
| <strong>cl_khr_int64_extended_atomics</strong><br> |
| <strong>cl_khr_fp16</strong><br> |
| <strong>cl_khr_gl_sharing</strong><br> |
| <strong>cl_khr_gl_event</strong><br> |
| <strong>cl_khr_d3d10_sharing</strong><br> |
| <strong>cl_khr_dx9_media_sharing</strong><br> |
| <strong>cl_khr_d3d11_sharing</strong><br> |
| <strong>cl_khr_gl_depth_images</strong><br> |
| <strong>cl_khr_gl_msaa_sharing</strong><br> |
| <strong>cl_khr_initialize_memory</strong><br> |
| <strong>cl_khr_terminate_context</strong><br> |
| <strong>cl_khr_spir</strong><br> |
| <strong>cl_khr_srgb_image_writes</strong></p> |
| <p class="tableblock"> The following approved Khronos extension names must be returned by |
| all devices that support OpenCL C 2.0:</p> |
| <p class="tableblock"> <strong>cl_khr_byte_addressable_store</strong><br> |
| <strong>cl_khr_fp64</strong> (for backward compatibility if double precision is |
| supported)<br> |
| <strong>cl_khr_3d_image_writes</strong><br> |
| <strong>cl_khr_image2d_from_buffer</strong><br> |
| <strong>cl_khr_depth_images</strong></p> |
| <p class="tableblock"> Please refer to the OpenCL Extension Specification for a |
| detailed description of these extensions.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PRINTF_​BUFFER_​SIZE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">size_t</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum size in bytes of the internal buffer that holds the output |
| of printf calls from a kernel. |
| The minimum value for the FULL profile is 1 MB.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PREFERRED_​INTEROP_​USER_​SYNC</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​TRUE</code> if the devices preference is for the user to be |
| responsible for synchronization, when sharing memory objects between |
| OpenCL and other APIs such as DirectX, <code>CL_​FALSE</code> if the device / |
| implementation has a performant path for performing synchronization |
| of memory object shared between OpenCL and other APIs such as |
| DirectX.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PARENT_​DEVICE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_id</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the cl_device_id of the parent device to which this |
| sub-device belongs. |
| If <em>device</em> is a root-level device, a <code>NULL</code> value is returned.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PARTITION_​MAX_​SUB_​DEVICES</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the maximum number of sub-devices that can be created when a |
| device is partitioned.</p> |
| <p class="tableblock"> The value returned cannot exceed <code>CL_​DEVICE_​MAX_​COMPUTE_​UNITS</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PARTITION_​PROPERTIES</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_partition_ property[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the list of partition types supported by <em>device</em>. |
| This is an array of cl_device_partition_property values drawn from |
| the following list:</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​PARTITION_​EQUALLY</code><br> |
| <code>CL_​DEVICE_​PARTITION_​BY_​COUNTS</code><br> |
| <code>CL_​DEVICE_​PARTITION_​BY_​AFFINITY_​DOMAIN</code></p> |
| <p class="tableblock"> If the device cannot be partitioned (i.e. there is no partitioning |
| scheme supported by the device that will return at least two |
| subdevices), a value of 0 will be returned.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PARTITION_​AFFINITY_​DOMAIN</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_affinity_ domain</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the list of supported affinity domains for partitioning the |
| device using <code>CL_​DEVICE_​PARTITION_​BY_​AFFINITY_​DOMAIN</code>. |
| This is a bit-field that describes one or more of the following |
| values:</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​NUMA</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L4_​CACHE</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L3_​CACHE</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L2_​CACHE</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L1_​CACHE</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​NEXT_​PARTITIONABLE</code></p> |
| <p class="tableblock"> If the device does not support any affinity domains, a value of 0 |
| will be returned.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PARTITION_​TYPE</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_partition_property[]</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the properties argument specified in <strong>clCreateSubDevices</strong> if |
| device is a sub-device. |
| In the case where the properties argument to <strong>clCreateSubDevices</strong> is |
| <code>CL_​DEVICE_​PARTITION_​BY_​AFFINITY_​DOMAIN</code>, |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​NEXT_​PARTITIONABLE</code>, the affinity domain |
| used to perform the partition will be returned. |
| This can be one of the following values:</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​NUMA</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L4_​CACHE</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L3_​CACHE</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L2_​CACHE</code><br> |
| <code>CL_​DEVICE_​AFFINITY_​DOMAIN_​L1_​CACHE</code></p> |
| <p class="tableblock"> Otherwise the implementation may either return a |
| <em>param_value_size_ret</em> of 0 i.e. there is no partition type |
| associated with device or can return a property value of 0 (where 0 |
| is used to terminate the partition property list) in the memory that |
| <em>param_value</em> points to.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​REFERENCE_​COUNT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the <em>device</em> reference count. |
| If the device is a root-level device, a reference count of one is |
| returned.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​SVM_​CAPABILITIES</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_device_svm_capabilities</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Describes the various shared virtual memory (a.k.a. SVM) memory |
| allocation types the device supports. |
| Coarse-grain SVM allocations are required to be supported by all |
| OpenCL 2.0 devices. |
| This is a bit-field that describes a combination of the following |
| values:</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​SVM_​COARSE_​GRAIN_​BUFFER</code> - Support for coarse-grain buffer |
| sharing using <strong>clSVMAlloc</strong>. |
| Memory consistency is guaranteed at synchronization points and the |
| host must use calls to <strong>clEnqueueMapBuffer</strong> and |
| <strong>clEnqueueUnmapMemObject</strong>.</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​SVM_​FINE_​GRAIN_​BUFFER</code> - Support for fine-grain buffer |
| sharing using <strong>clSVMAlloc</strong>. |
| Memory consistency is guaranteed at synchronization points without |
| need for <strong>clEnqueueMapBuffer</strong> and <strong>clEnqueueUnmapMemObject</strong>.</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​SVM_​FINE_​GRAIN_​SYSTEM</code> - Support for sharing the host’s |
| entire virtual memory including memory allocated using <strong>malloc</strong>. |
| Memory consistency is guaranteed at synchronization points.</p> |
| <p class="tableblock"> <code>CL_​DEVICE_​SVM_​ATOMICS</code> - Support for the OpenCL 2.0 atomic |
| operations that provide memory consistency across the host and all |
| OpenCL devices supporting fine-grain SVM allocations.</p> |
| <p class="tableblock"> The mandated minimum capability is |
| <code>CL_​DEVICE_​SVM_​COARSE_​GRAIN_​BUFFER</code>.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PREFERRED_​PLATFORM_​ATOMIC_​ALIGNMENT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the value representing the preferred alignment in bytes for |
| OpenCL 2.0 fine-grained SVM atomic types. |
| This query can return 0 which indicates that the preferred alignment |
| is aligned to the natural size of the type.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PREFERRED_​GLOBAL_​ATOMIC_​ALIGNMENT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the value representing the preferred alignment in bytes for |
| OpenCL 2.0 atomic types to global memory. |
| This query can return 0 which indicates that the preferred alignment |
| is aligned to the natural size of the type.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​PREFERRED_​LOCAL_​ATOMIC_​ALIGNMENT</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Returns the value representing the preferred alignment in bytes for |
| OpenCL 2.0 atomic types to local memory. |
| This query can return 0 which indicates that the preferred alignment |
| is aligned to the natural size of the type.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​MAX_​NUM_​SUB_​GROUPS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_uint</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of sub-groups in a work-group that a device is |
| capable of executing on a single compute unit, for any given |
| kernel-instance running on the device. |
| The minimum value is 1. |
| (Refer also to <strong>clGetKernelSubGroupInfo</strong>.)</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_​DEVICE_​SUB_​GROUP_​INDEPENDENT_​FORWARD_​PROGRESS</code></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">cl_bool</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Is <code>CL_​TRUE</code> if this device supports independent forward progress of |
| sub-groups, <code>CL_​FALSE</code> otherwise. |
| If <strong>cl_khr_subgroups</strong> is supported by the device this must return |
| <code>CL_​TRUE</code>.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <div class="dlist"> |
| <dl> |
| <dt class="hdlist1">4</dt> |
| <dd> |
| <p>A kernel that uses an image argument with the write_only or read_write |
| image qualifier may result in additional read_only images resources being |
| created internally by an implementation. |
| The internally created read_only image resources will count against the max |
| supported read image arguments given by <code>CL_​DEVICE_​MAX_​READ_​IMAGE_​ARGS</code>. |
| Enqueuing a kernel that requires more images than the implementation can |
| support will result in a <code>CL_​OUT_​OF_​RESOURCES</code> error being returned.</p> |
| </dd> |
| <dt class="hdlist1">5</dt> |
| <dd> |
| <p>NOTE: <code>CL_​DEVICE_​MAX_​WRITE_​IMAGE_​ARGS</code> is only there for backward |
| compatibility. |
| <code>CL_​DEVICE_​MAX_​READ_​WRITE_​IMAGE_​ARGS</code> should be used instead.</p> |
| </dd> |
| <dt class="hdlist1">6</dt> |
| <dd> |
| <p>The optional rounding modes should be included as a device capability |
| only if it is supported natively. |
| All explicit conversion functions with specific rounding modes must |
| still operate correctly.</p> |
| </dd> |
| <dt class="hdlist1">7</dt> |
| <dd> |
| <p>The optional rounding modes should be included as a device capability |
| only if it is supported natively. |
| All explicit conversion functions with specific rounding modes must |
| still operate correctly.</p> |
| </dd> |
| <dt class="hdlist1">8</dt> |
| <dd> |
| <p><code>CL_​DEVICE_​QUEUE_​PROPERTIES</code> is deprecated and replaced by |
| <code>CL_​DEVICE_​QUEUE_​ON_​HOST_​PROPERTIES</code>.</p> |
| </dd> |
| <dt class="hdlist1">9</dt> |
| <dd> |
| <p>The platform profile returns the profile that is implemented by the |
| OpenCL framework. |
| If the platform profile returned is FULL_PROFILE, the OpenCL framework |
| will support devices that are FULL_PROFILE and may also support devices |
| that are EMBEDDED_PROFILE. |
| The compiler must be available for all devices i.e. |
| <code>CL_​DEVICE_​COMPILER_​AVAILABLE</code> is <code>CL_​TRUE</code>. |
| If the platform profile returned is EMBEDDED_PROFILE, then devices that |
| are only EMBEDDED_PROFILE are supported.</p> |
| </dd> |
| </dl> |
| </div> |
| <div class="paragraph"> |
| <p><strong>clGetDeviceInfo</strong> returns <code>CL_​SUCCESS</code> if the function is executed |
| successfully. |
| Otherwise, it returns one of the following errors:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>CL_​INVALID_​DEVICE</code> if <em>device</em> is not valid.</p> |
| </li> |
| <li> |
| <p><code>CL_​INVALID_​VALUE</code> if <em>param_name</em> is not one of the supported values or |
| if size in bytes specified by <em>param_value_size</em> is < size of return |
| type as specified in the <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#device-queries-table" target="_blank" rel="noopener">Device Queries</a> table |
| and <em>param_value</em> is not a <code>NULL</code> value or if <em>param_name</em> is a value |
| that is available as an extension and the corresponding extension is not |
| supported by the device.</p> |
| </li> |
| <li> |
| <p><code>CL_​OUT_​OF_​RESOURCES</code> if there is a failure to allocate resources required |
| by the OpenCL implementation on the device.</p> |
| </li> |
| <li> |
| <p><code>CL_​OUT_​OF_​HOST_​MEMORY</code> if there is a failure to allocate resources |
| required by the OpenCL implementation on the host.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_see_also">See Also</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p><a href="cl_device_id.html">cl_device_id</a>, <a href="cl_device_info.html">cl_device_info</a></p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_document_notes">Document Notes</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>For more information, see the <a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html#clGetDeviceInfo" target="_blank" rel="noopener">OpenCL Specification</a></p> |
| </div> |
| <div class="paragraph"> |
| <p>This page is extracted from the OpenCL Specification. |
| Fixes and changes should be made to the Specification, not directly.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_copyright">Copyright</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Copyright (c) 2014-2019 Khronos Group. This work is licensed under a |
| <a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener">Creative Commons |
| Attribution 4.0 International License</a>.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div id="footer"> |
| <div id="footer-text"> |
| Version V2.2-11-2-gbc16dca-dirty<br> |
| Last updated 2019-07-24 05:39:45 -0700 |
| </div> |
| </div> |
| |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script> |
| </body> |
| </html> |