<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0; 
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }
		
		.term {
			font: italic 16px verdana, sans-serif;
			font-weight: normal;
		}	
		
		.type {
			font: normal 16px verdana, sans-serif !important;
		}			
		
		.parameter { 
			font-style: italic; 
			}

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
			padding-top: 10px;
			padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }
		
		span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }
		
        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }
		
        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
			margin-top: 10px;
            background-color: #FFF;
			border-collapse: collapse;
			border-color: #000;
            border-width: 1px;
			font: normal 16px verdana, sans-serif;
        }
		
        div.refsect1 th {
			border-collapse: collapse;
			border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }
		
        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
			border-collapse: collapse;
			border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }
		
		  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }
		

        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
			white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }
					
</style>
    <title>clSetKernelArg</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="         &#10;                clSetKernelArg&#10;            " />
  </head>
  <body>
    <div class="refentry">
      <a id="idp61961184"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="clSetKernelArg"></a>
        <h1>     
            clSetKernelArg
        </h1>
        <p>          
            Used to set the argument value for a specific argument of a kernel.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="_top">cl_int</a>
 <strong class="fsfunc">clSetKernelArg</strong>
                (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="_top">cl_kernel</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">kernel</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">arg_index</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">size_t</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">arg_size</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">void</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*arg_value</var><code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                    <code class="varname">kernel</code>
				</span>
            </dt>
            <dd>
              <p>
						A valid kernel object.
					</p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">arg_index</code>
				</span>
            </dt>
            <dd>
              <p>
						The argument index. Arguments to the kernel are referred by indices that go from 0 for the leftmost argument to <span class="emphasis"><em>n</em></span> - 1, where <span class="emphasis"><em>n</em></span> is the total number of arguments declared by a kernel.
					</p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">arg_value</code>
				</span>
            </dt>
            <dd>
              <p>
					A pointer to data that should be used as the argument value for argument specified
						by <code class="varname">arg_index</code>. The argument data pointed to by <code class="varname">arg_value</code> is copied and the <code class="varname">arg_value</code> pointer can therefore be reused by the application after <code class="function">clSetKernelArg</code> returns. The argument value specified is the value used by all API calls that enqueue <code class="varname">kernel</code> (<a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</span></span></a> and
						<a class="citerefentry" href="clEnqueueTask.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueTask</span></span></a>) until the argument value is changed by a call to <code class="function">clSetKernelArg</code> for <code class="varname">kernel</code>.
					</p>
              <p>
						If the argument is a memory object (buffer or image), the <code class="varname">arg_value</code> entry will be a pointer to the appropriate buffer or image object. The memory object must be created with the context
						associated with the kernel object. A NULL value can also be specified if the argument is a buffer
						object in which case a NULL value will be used as the value for the argument declared as a
						pointer to <code class="varname">__global</code> or <code class="varname">__constant</code> memory in the kernel. If the argument is declared with the <code class="varname">__local</code> qualifier, the <code class="varname">arg_value</code> entry must be NULL. If the argument is of type <code class="varname">sampler_t</code>, the <code class="varname">arg_value</code> entry must be a pointer to the sampler object. For all other kernel arguments, the <code class="varname">arg_value</code> entry must be a pointer to the actual data to be used as argument value.
					</p>
              <p>
						The memory object specified as argument value must be a buffer object (or NULL) if the
						argument is declared to be a pointer of a built-in or user defined type with the <code class="varname">__global</code> or
						<code class="varname">__constant</code> qualifier. If the argument is declared with the <code class="varname">__constant</code> qualifier, the size in bytes of the memory object cannot exceed <code class="constant">CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE</code> and the
						number of arguments declared with the <code class="varname">__constant</code> qualifier cannot exceed
						<code class="constant">CL_DEVICE_MAX_CONSTANT_ARGS</code>.
					</p>
              <p>
						The memory object specified as argument value must be a 2D image object if the argument is
						declared to be of type <code class="varname">image2d_t</code>. The memory object specified as argument value must be a 3D image object if argument is declared to be of type <code class="varname">image3d_t</code>.
					</p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname"> 
                       arg_size
					</code>
				</span>
            </dt>
            <dd>
              <p>
						Specifies the size of the argument value. If the argument is a memory object, the size is
						the size of the buffer or image object type. For arguments declared with the <code class="varname">__local</code> qualifier, the size specified will be the size in bytes of the buffer that must be allocated for the <code class="varname">__local</code>
						argument. If the argument is of type <code class="varname">sampler_t</code>, the <code class="varname">arg_size</code> value must be equal to sizeof(cl_sampler). For all other arguments, the size will be the size of argument type.
					</p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
			A kernel object does not update the reference count for objects such as memory, sampler
			objects specified as argument values by <code class="function">clSetKernelArg</code>, Users may not rely on a kernel object
			to retain objects specified as argument values to the kernel.
		</p>
        <p>
			Implementations shall not allow cl_kernel objects to hold reference counts to cl_kernel arguments, because no
			mechanism is provided for the user to tell the kernel to release that ownership right. If the kernel holds ownership
			rights on kernel args, that would make it impossible for the user to tell with certainty when he may safely release
			user allocated resources associated with OpenCL objects such as the cl_mem backing store used with
			<code class="constant">CL_MEM_USE_HOST_PTR</code>.
		</p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
			<code class="function">clSetKernelArg</code> returns <span class="errorname">CL_SUCCESS</span> if the function is
			executed successfully. Otherwise, it returns one of the following errors:
		</p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_KERNEL</span> if <code class="varname">kernel</code> is not a valid kernel object.
			</li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ARG_INDEX</span> if <code class="varname">arg_index</code> is not a valid argument index.
			</li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ARG_VALUE</span> if <code class="varname">arg_value</code> specified is NULL for an argument that is not
				declared with the <code class="varname">__local</code> qualifier or vice-versa.
			</li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> for an argument declared to be a memory object when the
				specified <code class="varname">arg_value</code> is not a valid memory object.
			</li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_SAMPLER</span> for an argument declared to be of type sampler_t when the
				specified <code class="varname">arg_value</code> is not a valid sampler object.
			</li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ARG_SIZE</span> if <code class="varname">arg_size</code> does not match the size of the data type for an argument that is not a memory object or if the argument is a memory object and <code class="varname">arg_size</code> != <code class="constant">sizeof(cl_mem)</code> or if <code class="varname">arg_size</code> is zero and the argument is declared with the <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">__local</span></span></a> qualifier or if the argument is a sampler and <code class="varname">arg_size</code> != <code class="constant">sizeof(cl_sampler)</code>.
			</li>
          </ul>
        </div>
      </div>
      <div class="refsect2">
        <a id="example1"></a>
        <h3>
            Example
        </h3>
        <div class="informaltable">
          <table border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
__kernel void
image_filter (int n, int m,
          __constant float *filter_weights,
          __read_only image2d_t src_image,
          __write_only image2d_t dst_image)
{
     ...
}
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
			Argument index values for <code class="constant">image_filter</code> will be 0 for n, 1 for m, 2 for
			<code class="constant">filter_weights</code>, 3 for <code class="constant">src_image</code> and 4 for <code class="constant">dst_image</code>.
		</p>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />
			
				      
            <a href="http://www.khronos.org/registry/cl/specs/opencl-1.x-latest.pdf#page=103" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clCreateKernel.html"><span class="citerefentry"><span class="refentrytitle">clCreateKernel</span></span></a>, 
			<a class="citerefentry" href="clCreateKernelsInProgram.html"><span class="citerefentry"><span class="refentrytitle">clCreateKernelsInProgram</span></span></a>, 
			<a class="citerefentry" href="clReleaseKernel.html"><span class="citerefentry"><span class="refentrytitle">clReleaseKernel</span></span></a>, 
			<a class="citerefentry" href="clRetainKernel.html"><span class="citerefentry"><span class="refentrytitle">clRetainKernel</span></span></a>, 
			<a class="citerefentry" href="clGetKernelInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetKernelInfo</span></span></a>, 
			<a class="citerefentry" href="clGetKernelWorkGroupInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetKernelWorkGroupInfo</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2009 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. 
</div>
    </div>
  </body>
</html>
