<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>         
                clGetKernelWorkGroupInfo
            </keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>       
            clGetKernelWorkGroupInfo
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</year>
                <holder>The Khronos Group Inc. 
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>2</manvolnum>
  
    </refmeta>


<!-- ================================ SYNOPSIS -->  

    <refnamediv id="clGetKernelWorkGroupInfo">
        <refname>     
            clGetKernelWorkGroupInfo
        </refname> 

        <refpurpose>          
            Returns information about the kernel object that may be specific to a device.
        </refpurpose> 
    </refnamediv> 

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">cl_int</link>
 <function>clGetKernelWorkGroupInfo</function>
                </funcdef>
				<paramdef><link xlink:href="abstractDataTypes.html">cl_kernel</link><parameter>kernel</parameter></paramdef>
				<paramdef><link xlink:href="abstractDataTypes.html">cl_device_id</link><parameter>device</parameter></paramdef>
				<paramdef><link xlink:href="enums.html#cl_kernel_work_group_info">cl_kernel_work_group_info</link><parameter>param_name</parameter></paramdef>
				<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>param_value_size</parameter></paramdef>
				<paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*param_value</parameter></paramdef>
				<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>*param_value_size_ret</parameter></paramdef>	
            </funcprototype>
        </funcsynopsis>     
    </refsynopsisdiv>


<!-- ================================ PARAMETERS --> 

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>


            <varlistentry>
                <term>
                    <varname>
						kernel
                    </varname>
                </term>

                <listitem>
                    <para> 
						Specifies the kernel object being queried.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
						device
                    </varname>
                </term>

                <listitem>
                    <para>
						Identifies a specific device in the list of devices associated with <varname>kernel</varname>. The list of devices
is the list of devices in the OpenCL context that is associated with <varname>kernel</varname>. If the list of devices
associated with <varname>kernel</varname> is a single device, <varname>device</varname> can be a NULL value.
                    </para>
               </listitem>
            </varlistentry>
			
            <varlistentry>
                <term>
                    <varname>
						param_name
					</varname>
				</term>
				
				<listitem>
					<para>
						Specifies the information to query. The list of supported <varname>param_name</varname> types and the
information returned in <varname>param_value</varname> by <function>clGetKernelWorkGroupInfo</function> is described in the table below.
					</para>
				</listitem>
			</varlistentry>
			
            <varlistentry>
                <term>
                    <varname>
						param_value
					</varname>
				</term>
				
				<listitem>
					<para>
						A pointer to memory where the appropriate result being queried is returned. If <varname>param_value</varname> is NULL, it is ignored.
					</para>
				</listitem>
			</varlistentry>

            <varlistentry>
                <term>
                    <varname>
						param_value_size
					</varname>
				</term>
				
				<listitem>
					<para>
						Used to specify the size in bytes of memory pointed to by <varname>param_value</varname>.
						This size must be greater than or equal to size of return type as described in the table below.
                    </para>
					    <informaltable frame="all">
                        <tgroup cols="3" align="left" colsep="1" rowsep="1">
                            <colspec colname="col1" colnum="1" />
                            <colspec colname="col2" colnum="2" />
							<colspec colname="col3" colnum="3" />
                            <thead>
                                <row>
                                    <entry>cl_kernel_work_group_info</entry>
                                    <entry>Return Type</entry>
									<entry>Info. returned in <varname>param_value</varname></entry>
                                </row>
                            </thead>
                            <tbody>
        
                                <row>
                                    <entry><constant>CL_KERNEL_WORK_GROUP_SIZE</constant></entry>
                                    <entry>size_t</entry>
									<entry>
										This provides a mechanism for the
										application to query the work-group size
										that can be used to execute a kernel on a
										specific device given by <varname>device</varname>. The
										OpenCL implementation uses the
										resource requirements of the kernel
										(register usage etc.) to determine what
										this work-group size should be.
                                    </entry>
                                </row>
        
                                <row>
                                    <entry><constant>CL_KERNEL_COMPILE_WORK_GROUP_SIZE</constant></entry>
									<entry>size_t[3]</entry>
                                    <entry>
										Returns the work-group size specified
										by the 
										<constant>__attribute__((reqd_work_gr
										oup_size(X, Y, Z)))</constant> qualifier.
										See <citerefentry href="functionQualifiers"><refentrytitle>Function Qualifiers</refentrytitle></citerefentry>.
										If the work-group size is not specified
										using the above attribute qualifier (0, 0,
										0) is returned.
									</entry>
                                </row>
        
                                <row>
                                    <entry><constant>CL_KERNEL_LOCAL_MEM_SIZE</constant></entry>
                                    <entry>cl_ulong</entry>
									<entry>
										<para>
											Returns the amount of local memory in
											bytes being used by a kernel. This
											includes local memory that may be
											needed by an implementation to execute
											the kernel, variables declared inside the
											kernel with the <citerefentry href="local"><refentrytitle>__local</refentrytitle></citerefentry> address
											qualifier and local memory to be
											allocated for arguments to the kernel
											declared as pointers with the <citerefentry href="local"><refentrytitle>__local</refentrytitle></citerefentry>
											address qualifier and whose size is
											specified with <citerefentry><refentrytitle>clSetKernelArg</refentrytitle></citerefentry>.
										</para>
										<para>
											If the local memory size, for any pointer
											argument to the kernel declared with the
											<citerefentry href="local"><refentrytitle>__local</refentrytitle></citerefentry> address qualifier, is not
											specified, its size is assumed to be 0.
										</para>
									</entry>
                                </row>								        
                            </tbody>    
                        </tgroup>
                    </informaltable> 
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
						param_value_size_ret
					</varname>
				</term>
				
				<listitem>
					<para>
						Returns the actual size in bytes of data copied to <varname>param_value</varname>. If <varname>param_value_size_ret</varname> is NULL, it is ignored.
					</para>
				</listitem>
			</varlistentry>	

        </variablelist>
    </refsect1>

    
<!-- ================================ NOTES  -->        
    <!--<refsect1 id="notes"><title>Notes</title>
        <para>
            
        </para>
    </refsect1>-->

    

<!-- ================================ ERRORS  -->       


    <refsect1 id="errors"><title>Errors</title>
        <para>
			Returns <errorname>CL_SUCCESS</errorname> if the function is executed successfully. Otherwise, it returns one of the following errors:
		</para>
		<itemizedlist mark="disc">
			<listitem>
				<errorname>CL_INVALID_DEVICE</errorname> if <varname>device</varname> is not in the list of devices associated with <varname>kernel</varname> or if <varname>device</varname> is NULL but there is more than one device associated with <varname>kernel</varname>.
			</listitem>
			<listitem>
				<errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> is not valid, or if size in bytes specified by <varname>param_value_size</varname> is less than the size of return type as described in the table above and <varname>param_value</varname> is not NULL.
			</listitem>
			<listitem>
				<errorname>CL_INVALID_KERNEL</errorname> if <varname>kernel</varname> is a not a valid kernel object.
			</listitem>
		</itemizedlist>		
    </refsect1>
    

<!-- ================================ EXAMPLE  -->  
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--    
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>   
    </refsect2>  
--> 


<!-- ================================ SPECIFICATION  -->        
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->     
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>
			
				      
            <olink uri="clGetKernelWorkGroupInfo">OpenCL Specification</olink>
        </para>
    </refsect1>     


<!-- ================================ ALSO SEE  -->     
   

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clCreateKernel</refentrytitle></citerefentry>, 
			<citerefentry><refentrytitle>clCreateKernelsInProgram</refentrytitle></citerefentry>, 
			<citerefentry><refentrytitle>clReleaseKernel</refentrytitle></citerefentry>,
			<citerefentry><refentrytitle>clRetainKernel</refentrytitle></citerefentry>, 
			<citerefentry><refentrytitle>clSetKernelArg</refentrytitle></citerefentry>,  
			<citerefentry><refentrytitle>clGetKernelInfo</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ================================ COPYRIGHT  -->  
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
		<imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
		<para />
    </refsect3>

</refentry>

