blob: db11763d8e2f145beecc45f500e43008f51b4d4f [file] [log] [blame]
<!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>cl_intel_command_queue_families</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="../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="book">
<div id="header">
<h1>cl_intel_command_queue_families</h1>
<div class="details">
<span id="revnumber">version v3.0.6-12-g5149653,</span>
<span id="revdate">Fri, 12 Feb 2021 00:34:09 +0000</span>
<br><span id="revremark">from git branch: master commit: 514965312a65e5d01ae17e23119dc95427b7149e</span>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_name_strings"><a class="anchor" href="#_name_strings"></a>Name Strings</h2>
<div class="sectionbody">
<div class="paragraph">
<p><code>cl_intel_command_queue_families</code></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_contact"><a class="anchor" href="#_contact"></a>Contact</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Ben Ashbaugh, Intel (ben 'dot' ashbaugh 'at' intel 'dot' com)</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_contributors"><a class="anchor" href="#_contributors"></a>Contributors</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Ben Ashbaugh, Intel<br>
Maciej Dziuban, Intel<br>
Filip Hazubski, Intel<br>
Dariusz Mroz, Intel<br>
Michal Mrozek, Intel<br></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_notice"><a class="anchor" href="#_notice"></a>Notice</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Copyright (c) 2021 Intel Corporation. All rights reserved.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_status"><a class="anchor" href="#_status"></a>Status</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Shipping</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_version"><a class="anchor" href="#_version"></a>Version</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Built On: 2021-02-11<br>
Revision: 1.0.0</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_dependencies"><a class="anchor" href="#_dependencies"></a>Dependencies</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This extension is written against the OpenCL API Specification Version 3.0.5.</p>
</div>
<div class="paragraph">
<p>Because this extension adds to the command queue properties accepted by the <strong>clCreateCommandQueueWithProperties</strong> API, this extension requires support for either OpenCL 2.0 or the <code>cl_khr_create_command_queue</code> extension.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_overview"><a class="anchor" href="#_overview"></a>Overview</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Some OpenCL devices may support different sets of command queues with different capabilities or execution properties.
These sets are described in this extension as <em>command queue families</em>.
Applications may be able to improve performance or predictability by creating command queues from a specific <em>command queue family</em>.</p>
</div>
<div class="paragraph">
<p>This extension adds the ability to:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Query the <em>command queue families</em> supported by an OpenCL device and their capabilities.</p>
</li>
<li>
<p>Create an OpenCL command queue from a specific <em>command queue family</em>.</p>
</li>
<li>
<p>Query the <em>command queue family</em> and <em>command queue index</em> associated with an OpenCL command queue.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_new_api_enums"><a class="anchor" href="#_new_api_enums"></a>New API Enums</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Accepted value for the <em>param_name</em> parameter to <strong>clGetDeviceInfo</strong> to query the number of command queue families and command queue family properties supported by an OpenCL device:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code>#define CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL 0x418B</code></pre>
</div>
</div>
<div class="paragraph">
<p>Accepted as a property name for the <em>properties</em> parameter to <strong>clCreateCommandQueueWithProperties</strong> to specify the command queue family and command queue index that this command queue should submit work to; and for the <em>param_name</em> parameter to <strong>clGetCommandQueueInfo</strong> to query the command queue family or command queue index associated with a command queue:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code>#define CL_QUEUE_FAMILY_INTEL 0x418C
#define CL_QUEUE_INDEX_INTEL 0x418D</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_new_api_types"><a class="anchor" href="#_new_api_types"></a>New API Types</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Returned as the query result value <strong>clGetDeviceInfo</strong> for <code>CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code>#define CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL 64
typedef struct _cl_queue_family_properties_intel {
cl_command_queue_properties properties;
cl_command_queue_capabilities_intel capabilities;
cl_uint count;
char name[CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL];
} cl_queue_family_properties_intel;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Bitfield type describing the capabilities of the queues in a command queue family.
Subsequent versions of this extension may add additional queue capabilities:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code>typedef cl_bitfield cl_command_queue_capabilities_intel;
#define CL_QUEUE_DEFAULT_CAPABILITIES_INTEL 0
/* Synchronization Capabilities: */
#define CL_QUEUE_CAPABILITY_CREATE_SINGLE_QUEUE_EVENTS_INTEL (1 &lt;&lt; 0)
#define CL_QUEUE_CAPABILITY_CREATE_CROSS_QUEUE_EVENTS_INTEL (1 &lt;&lt; 1)
#define CL_QUEUE_CAPABILITY_SINGLE_QUEUE_EVENT_WAIT_LIST_INTEL (1 &lt;&lt; 2)
#define CL_QUEUE_CAPABILITY_CROSS_QUEUE_EVENT_WAIT_LIST_INTEL (1 &lt;&lt; 3)
/* bit 4 - bit 7 are currently unused */
/* Transfer Capabilities: */
#define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_INTEL (1 &lt;&lt; 8)
#define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL (1 &lt;&lt; 9)
#define CL_QUEUE_CAPABILITY_MAP_BUFFER_INTEL (1 &lt;&lt; 10)
#define CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL (1 &lt;&lt; 11)
#define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL (1 &lt;&lt; 12)
#define CL_QUEUE_CAPABILITY_MAP_IMAGE_INTEL (1 &lt;&lt; 13)
#define CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL (1 &lt;&lt; 14)
#define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL (1 &lt;&lt; 15)
#define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL (1 &lt;&lt; 16)
/* bit 17 - bit 23 are currently unused */
/* Execution Capabilities */
#define CL_QUEUE_CAPABILITY_MARKER_INTEL (1 &lt;&lt; 24)
#define CL_QUEUE_CAPABILITY_BARRIER_INTEL (1 &lt;&lt; 25)
#define CL_QUEUE_CAPABILITY_KERNEL_INTEL (1 &lt;&lt; 26)
/* bit 27 and beyond are currently unused */</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_modifications_to_the_opencl_api_specification"><a class="anchor" href="#_modifications_to_the_opencl_api_specification"></a>Modifications to the OpenCL API Specification</h2>
<div class="sectionbody">
<div class="dlist">
<dl>
<dt class="hdlist1">(Add to the list preceding Table 5 in Section 4.2 - Querying Devices) </dt>
<dd>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>The device queries described in the Device Queries 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>&#8230;&#8203;</p>
</li>
<li>
<p><code>CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL</code></p>
</li>
</ul>
</div>
</div>
</div>
</dd>
<dt class="hdlist1">(Add to Table 5 - OpenCL Device Queries in Section 4.2 - Querying Devices) </dt>
<dd>
<div class="openblock">
<div class="content">
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 5. List of supported param_names by clGetDeviceInfo</caption>
<colgroup>
<col style="width: 30%;">
<col style="width: 20%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Device Info</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_QUEUE_FAMILY_PROPERTIES_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_queue_family_properties_intel[]</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns an array of <code>cl_queue_family_properties_intel</code> structures describing command queue families supported by the device.
Each structure consists of:</p>
<p class="tableblock"> <code>properties</code>: Describes the host command queue properties supported by this command queue family.
The supported property values are the same as those returned by the query for <code>CL_DEVICE_QUEUE_ON_HOST_PROPERTIES</code>.</p>
<p class="tableblock"> <code>capabilities</code>: Describes the command queue capabilities supported by this command queue family.
This is a bitfield value that may either be <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code> or a set of queue capabilities from the <a href="#queue-capabilities-table">Queue Capabilities Table</a>.</p>
<p class="tableblock"> <code>count</code>: Describes the number of command queues in this command queue family.
Command queues created with unique command queue indices may execute more efficiently than command queues created with equal indices.</p>
<p class="tableblock"> <code>name</code>: An array of <code>CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL</code> bytes used as storage for a null-terminated string.
The string is a descriptive name for this command queue family.
The descriptive name is purely informative and has no semantic meaning.</p>
<p class="tableblock"> At least one entry in the array must return the same properties returned by <code>CL_DEVICE_QUEUE_ON_HOST_PROPERTIES</code> and must have capabilities equal to <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code>.</p>
<p class="tableblock"> Please note that a sub-device may support different command queue families than its root-level device.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</dd>
<dt class="hdlist1">(Add to Table 9 - List of supported queue creation properties by clCreateCommandQueueWithProperties) </dt>
<dd>
<div class="openblock">
<div class="content">
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 9. List of supported queue creation properties by clCreateCommandQueueWithProperties</caption>
<colgroup>
<col style="width: 34%;">
<col style="width: 33%;">
<col style="width: 33%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Queue Property</th>
<th class="tableblock halign-left valign-top">Property Value</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_QUEUE_FAMILY_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the command queue family that this command queue will submit work to.</p>
<p class="tableblock"> The specified command queue family must be between zero and the total number of command queue families supported by the device.
If a command queue family is specified then a command queue index must also be specified.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_INDEX_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the command queue index within the command queue family that this command queue will submit work to.</p>
<p class="tableblock"> The specified command queue index must be between zero and the total number of command queues in the command queue family for this command queue for the device.
If a command queue index is specified then a command queue family must also be specified.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</dd>
<dt class="hdlist1">(Add to the list of error conditions for <strong>clCreateCommandQueueWithProperties</strong>) </dt>
<dd>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>clCreateCommandQueueWithProperties</strong> returns a valid non-zero command-queue and <em>errcode_ret</em> is set to <code>CL_SUCCESS</code> if the command queue is created successfully.
Otherwise, it returns a <code>NULL</code> value with one of the following error values returned in <em>errcode_ret</em>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>&#8230;&#8203;</p>
</li>
<li>
<p><code>CL_INVALID_VALUE</code> if the property value for <code>CL_QUEUE_FAMILY_INTEL</code> specifies a command queue family greater than or equal to the number of command queue families supported by the device.</p>
</li>
<li>
<p><code>CL_INVALID_VALUE</code> if the property value for <code>CL_QUEUE_INDEX_INTEL</code> specifies a command queue index greater than or equal to the number of queues for the command queue family for the device.</p>
</li>
<li>
<p><code>CL_INVALID_VALUE</code> if the property <code>CL_QUEUE_FAMILY_INTEL</code> is specified and the property <code>CL_QUEUE_INDEX_INTEL</code> is not specified, or if the property <code>CL_QUEUE_INDEX_INTEL</code> is specified and the property <code>CL_QUEUE_FAMILY_INTEL</code> is not specified.</p>
</li>
</ul>
</div>
</div>
</div>
</dd>
<dt class="hdlist1">(Add to Table 9 - List of Supported param_names by <strong>clGetCommandQueueInfo</strong>) </dt>
<dd>
<div class="openblock">
<div class="content">
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 9. List of supported param_names by <strong>clGetCommandQueueInfo</strong></caption>
<colgroup>
<col style="width: 34%;">
<col style="width: 33%;">
<col style="width: 33%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top"><strong>Queue Properties</strong></th>
<th class="tableblock halign-left valign-top">Property Value</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_QUEUE_FAMILY_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the command queue family that this command queue will submit work to.</p>
<p class="tableblock"> If no command queue family was specified when this command queue was created then the value returned for this query is implementation-defined, but must be a command queue family with the same properties returned by <code>CL_DEVICE_QUEUE_ON_HOST_PROPERTIES</code> for the device and capabilities equal to <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_INDEX_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>cl_uint</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Returns the command queue index within the command queue family that this command queue will submit work to.</p>
<p class="tableblock"> If no command queue index was specified when this command queue was created then the value returned for this query is implementation-defined, but must be between zero and the total number of queues supported by the device for the command queue family that this command queue will submit work to.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</dd>
<dt class="hdlist1">(Add a new Section 5.1.X Command Queue Families) </dt>
<dd>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Some OpenCL devices may support different sets of command queues with different capabilities or execution properties.
The sets of command queues with different capabilities or execution properties are known as command queue families.
Each command queue family may contain multiple queues with similar characteristics.</p>
</div>
<div class="paragraph">
<p>Using multiple unique queues from a command queue family or queues from different command queue families may improve performance, such as by allowing commands to execute concurrently or using dedicated hardware resources.</p>
</div>
<div class="paragraph">
<p>Every OpenCL device must support at least one command queue family with "default" command queue capabilities.
These command queue families are identified with the special command queue capability value <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code>.
Command queues created from a command queue family with default command queue capabilities have no additional restrictions and support all commands and command queue features described by standard OpenCL device queries.</p>
</div>
<div class="paragraph">
<p>When a command queue family does not have the default command queue capabilities, the command queue family capability value is a bitfield describing the commands and command queue features that are supported for queues created from the command queue family.
Enqueueing an unsupported command or using an unsupported command queue feature will fail and generate an OpenCL error.</p>
</div>
<div class="paragraph">
<p>The following table describes the supported command queue capabilities and the OpenCL commands they enable.</p>
</div>
<table id="queue-capabilities-table" class="tableblock frame-all grid-all stretch">
<caption class="title">Table X. List of supported command queue capabilities</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 66.6667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Queue Capability</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_QUEUE_DEFAULT_CAPABILITIES_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A special capability value to indicate that queues in this command queue family have no additional restrictions.
At least one command queue family must support this capability.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_CREATE_SINGLE_QUEUE_EVENTS_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support creating event objects identifying commands for event profiling, waiting on the host, or in the event wait list for another command in the same queue.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_CREATE_CROSS_QUEUE_EVENTS_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support creating event objects identifying commands for event profiling, waiting on the host, or in the event wait list for another command in another queue.
When creating cross-queue events is supported, creating single-queue events must also be supported.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_SINGLE_QUEUE_EVENT_WAIT_LIST_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support commands that wait on events that were created in the same queue.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_CROSS_QUEUE_EVENT_WAIT_LIST_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support commands that wait on events that were created in another queue.
When waiting on cross-queue events is supported, waiting on single-queue events must also be supported.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueReadBuffer</code>, <code>clEnqueueWriteBuffer</code>, and <code>clEnqueueCopyBuffer</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueReadBufferRect</code>, <code>clEnqueueWriteBufferRect</code>, and <code>clEnqueueCopyBufferRect</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_MAP_BUFFER_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueMapBuffer</code> and <code>clEnqueueUnmapMemObject</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueFillBuffer</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueReadImage</code>, <code>clEnqueueWriteImage</code>, and <code>clEnqueueCopyImage</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_MAP_IMAGE_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueMapImage</code> and <code>clEnqueueUnmapMemObject</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueFillImage</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueCopyBufferToImage</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueCopyImageToBuffer</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_MARKER_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueMarker</code> and <code>clEnqueueMarkerWithWaitList</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_QUEUE_CAPABILITY_BARRIER_INTEL</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Indicates that queues in this command queue family support calls to <code>clEnqueueBarrier</code> and <code>clEnqueueBarrierWithWaitList</code>.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</dd>
<dt class="hdlist1">(Add to the list of error conditions for all enqueue APIs) </dt>
<dd>
<div class="openblock">
<div class="content">
<div class="ulist">
<ul>
<li>
<p><code>CL_INVALID_EVENT_WAIT_LIST</code> if the queue capabilities for <em>command_queue</em> is not <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code> or does not include <code>CL_QUEUE_CAPABILITY_SINGLE_QUEUE_EVENT_WAIT_LIST_INTEL</code>, and <em>num_events_in_wait_list</em> is not <code>0</code> or <em>event_wait_list</em> is not <code>NULL</code>.</p>
</li>
</ul>
</div>
<div class="ulist">
<ul>
<li>
<p><code>CL_INVALID_EVENT_WAIT_LIST</code> if the queue capabilities for the command queue associated with an event in the event wait list is not <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code> or does not include <code>CL_QUEUE_CREATE_CROSS_QUEUE_EVENTS_INTEL</code>, and <em>command_queue</em> is not equal to the command queue associated with the event.</p>
</li>
</ul>
</div>
<div class="ulist">
<ul>
<li>
<p><code>CL_INVALID_EVENT_WAIT_LIST</code> if the queue capabilities for <em>command queue</em> is not <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code> and <em>command_queue</em> is not equal to the command queue associated with an event.</p>
</li>
</ul>
</div>
<div class="ulist">
<ul>
<li>
<p><code>CL_INVALID_EVENT</code> if the queue capabilities for <em>command_queue</em> is not <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code> or does not include <code>CL_QUEUE_CAPABILITY_CREATE_SINGLE_QUEUE_EVENTS_INTEL</code> or <code>CL_QUEUE_CAPABILITY_CREATE_CROSS_QUEUE_EVENTS_INTEL</code>, and <em>event</em> is not <code>NULL</code>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>For all enqueue APIs described in the <a href="#queue-capabilities-table">Queue Capabilities Table</a>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>CL_INVALID_OPERATION</code> if the queue capabilities for <em>command_queue</em> is not <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code> or does not include the required queue capability.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>For all other enqueue APIs not described in the <a href="#queue-capabilities-table">Queue Capabilities Table</a>:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>CL_INVALID_OPERATION</code> if the queue capabilities for <em>command_queue</em> is not <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code>.</p>
</li>
</ul>
</div>
</div>
</div>
</dd>
</dl>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_issues"><a class="anchor" href="#_issues"></a>Issues</h2>
<div class="sectionbody">
<div class="olist arabic">
<ol class="arabic">
<li>
<p>What should this extension be called?</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>RESOLVED</strong></p>
</div>
<div class="paragraph">
<p>The name of this extension is <code>cl_intel_command_queue_families</code>.</p>
</div>
</div>
</div>
</li>
<li>
<p>What does this extension offer compared to "device partitioning"?</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>RESOLVED</strong>: This extension describes command queue families and their properties
to control how work can be executed on a device or sub-device. It is
complementary to device partitioning.</p>
</div>
</div>
</div>
</li>
<li>
<p>What are the memory model implications for command queue families?</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>UNRESOLVED</strong></p>
</div>
</div>
</div>
</li>
<li>
<p>Is there a better way to describe <code>CL_QUEUE_CAPABILITY_ALL_INTEL</code>?</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>RESOLVED</strong></p>
</div>
<div class="paragraph">
<p>This special capability was switched to <code>CL_QUEUE_DEFAULT_CAPABILITIES_INTEL</code>,
and the value of the capability was changed to zero from all-bits-set. This
should allow for special queue capabilities that go beyond default command queue
capabilities, if desired.</p>
</div>
</div>
</div>
</li>
<li>
<p>Do we need a query for the number of command queue families for a device?</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>RESOLVED</strong></p>
</div>
<div class="paragraph">
<p>No, this is not needed. The number of command queue families can be derived
from the size returned by <code>CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL</code>.</p>
</div>
</div>
</div>
</li>
<li>
<p>Should there be a default command queue family or command queue index for a
command queue?</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>RESOLVED</strong></p>
</div>
<div class="paragraph">
<p>No, it&#8217;s preferable to allow an implementation to vary the command queue family
and command queue index per-command queue. This enables an implementation to
implement a policy to choose among different command queue families or command
queue indices for each command queue rather than a single default if it leads to
improved performance.</p>
</div>
<div class="paragraph">
<p>Note that specifying only a command queue family or a command queue index is an
error, and an application must either specify no command queue family or command
queue index, or both a command queue family and command queue index.</p>
</div>
</div>
</div>
</li>
<li>
<p>Do we need a capability for cross-queue event wait lists?</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><strong>RESOLVED</strong></p>
</div>
<div class="paragraph">
<p><code>CL_QUEUE_CAPABILITY_CROSS_QUEUE_EVENT_WAIT_LIST_INTEL</code> was added.</p>
</div>
</div>
</div>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_revision_history"><a class="anchor" href="#_revision_history"></a>Revision History</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-rows stretch">
<colgroup>
<col style="width: 4.7619%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 66.6667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Rev</th>
<th class="tableblock halign-left valign-top">Date</th>
<th class="tableblock halign-left valign-top">Author</th>
<th class="tableblock halign-left valign-top">Changes</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2021-02-09</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ben Ashbaugh</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">First public version.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Version v3.0.6-12-g5149653<br>
Last updated 2021-02-11 16:33:58 -0800
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script>
</body>
</html>