<?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" [
<!ENTITY buildOptionsInc SYSTEM "buildOptionsInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clLinkProgram</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>
            clLinkProgram
        </refentrytitle>

<!-- ******************************************************************************* -->
        <refmiscinfo>
            <copyright>
                <year>2007-2011</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>3</manvolnum>
    </refmeta>

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

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

        <refpurpose>
            Links a set of compiled program objects and libraries for all the devices or a specific device(s) in
            the OpenCL context and creates an executable.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">cl_program</link>
 <function>clLinkProgram</function>
                </funcdef>
<paramdef><link xlink:href="abstractDataTypes.html">cl_context</link><parameter>context</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_devices</parameter></paramdef>
<paramdef>const <link xlink:href="abstractDataTypes.html">cl_device_id</link><parameter>*device_list</parameter></paramdef>
<paramdef>const <link xlink:href="scalarDataTypes.html">char</link><parameter>*options</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_input_programs</parameter></paramdef>
<paramdef>const <link xlink:href="abstractDataTypes.html">cl_program</link><parameter>*input_programs</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>(CL_CALLBACK *pfn_notify)
    (<link xlink:href="abstractDataTypes.html">cl_program</link> program, <link xlink:href="scalarDataTypes.html">void</link> *user_data)</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*user_data</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">cl_int</link><parameter>*errcode_ret</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

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

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

            <varlistentry>
                <term>
                    <varname>
                        context
                    </varname>
                </term>

                <listitem>
                    <para>
                        Must be a valid OpenCL context.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        device_list
                    </varname>
                </term>

                <listitem>
                    <para>
                      A pointer to a list of devices that are in <varname>context</varname>.
                      If <varname>device_list</varname> is a NULL value, the link is performed
                      for all devices associated with <varname>context</varname> for which a
                      compiled object is available.  If <varname>device_list</varname> is a
                      non-NULL value, the compile is performed for devices specified in this
                      list for which a source has been loaded.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        num_devices
                    </varname>
                </term>

                <listitem>
                    <para>
                        The number of devices listed in <varname>device_list</varname>.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        options
                    </varname>
                </term>

                <listitem>
                    <para>
                      A pointer to a null-terminated string of characters that describes
                      the link options to be used for building the program executable. See
                      <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>
                      for a list of supported compiler and linker options.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        num_input_programs
                    </varname>
                </term>

                <listitem>
                    <para>
                        Specifies the number of programs in array referenced by <varname>input_programs</varname>.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        input_programs
                    </varname>
                </term>

                <listitem>
                    <para>
                      An array of program objects that are compiled binaries or libraries
                      that are to be linked to create the program executable.  For each device
                      in <varname>device_list</varname> or if <varname>device_list</varname>
                      is NULL the list of devices associated with <varname>context</varname>,
                      the following cases occur:
                    </para>

                    <itemizedlist mark="disc">
                        <listitem>
                            <para>
                              All programs specified by <varname>input_programs</varname>
                              contain a compiled binary or library for the device.  In this case,
                              a link is performed to generate a program executable for this device.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                              None of the programs contain a compiled binary or library for
                              that device. In this case, no link is performed and there will
                              be no program executable generated for this device.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                              All other cases will return a
                              <constant>CL_INVALID_OPERATION</constant> error.
                            </para>
                        </listitem>
                    </itemizedlist>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        pfn_notify
                    </varname>
                </term>

                <listitem>
                    <para>
                      A function pointer to a notification routine.  The notification routine is a
                      callback function that an application can register and which will be called
                      when the program executable has been built (successfully or unsuccessfully).
                    </para>

                    <para>
                      If <varname>pfn_notify</varname> is not NULL,
                      <function>clLinkProgram</function> does not need to wait for the linker
                      to complete and can return immediately once the linking operation can
                      begin.  Once the linker has completed, the <varname>pfn_notify</varname>
                      callback function is called which returns the program object returned
                      by <function>clLinkProgram</function>. The application can query the link
                      status and log for this program object. This callback function may be called
                      asynchronously by the OpenCL implementation.  It is the application’s
                      responsibility to ensure that the callback function is thread-safe.
                    </para>

                    <para>
                      If <varname>pfn_notify</varname> is NULL, <function>clLinkProgram</function>
                      does not return until the linker has completed.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        user_data
                    </varname>
                </term>

                <listitem>
                    <para>
                      Will be passed as an argument when <varname>pfn_notify</varname> is called.
                      <varname>user_data</varname> can be NULL.
                    </para>
               </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>
        <para>
          <function>clLinkProgram</function> creates a new program object which
          contains this executable. The executable binary can be queried using
          <citerefentry><refentrytitle>clGetProgramInfo</refentrytitle></citerefentry>(program,
          <constant>CL_PROGRAM_BINARIES</constant>, ...) and can be specified to
          <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>
          to create a new program object.
        </para>

        <para>
          The devices associated with the returned program object will be the list of devices
          specified by <varname>device_list</varname> or if <varname>device_list</varname>
          is NULL it will be the list of devices associated with <varname>context</varname>.
        </para>

        <para>
          The linking operation can begin if the context, list of devices, input programs and
          linker options specified are all valid and appropriate host and device resources
          needed to perform the link are available.  If the linking operation can begin,
          <function>clLinkProgram</function> returns a valid non-zero program object.
        </para>
    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
          If <varname>pfn_notify</varname> is NULL, the <varname>errcode_ret</varname> will
          be set to <constant>CL_SUCCESS</constant> if the link operation was successful and
          <constant>CL_LINK_FAILURE</constant> if there is a failure to link the compiled
          binaries and/or libraries.
        </para>

        <para>
          If <varname>pfn_notify</varname> is not NULL, <function>clLinkProgram</function>
          does not have to wait until the linker to complete and can return
          <constant>CL_SUCCESS</constant> in <varname>errcode_ret</varname> if the linking
          operation can begin.  The <varname>pfn_notify</varname> callback function will
          return a <constant>CL_SUCCESS</constant> or <constant>CL_LINK_FAILURE</constant>
          if the linking operation was  successful or not.
        </para>

        <para>
          Otherwise <function>clLinkProgram</function> returns a NULL program object with an
          appropriate error in <varname>errcode_ret</varname>.  The application should query
          the linker status of this program object to check if the link was successful or not.
          The list of errors that can be returned are:
        </para>

        <itemizedlist mark="disc">
            <listitem>
                <errorname>CL_INVALID_CONTEXT</errorname> if <varname>context</varname> is not a valid context.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>device_list</varname>
              is NULL and <varname>num_devices</varname> is greater than zero, or if
              <varname>device_list</varname> is not NULL and <varname>num_devices</varname>
              is zero.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>num_input_programs</varname>
              is zero and <varname>input_programs</varname> is NULL or if
              <varname>num_input_programs</varname> is zero and <varname>input_programs</varname>
              is not NULL or if <varname>num_input_programs</varname> is not zero and
              <varname>input_programs</varname> is NULL.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_PROGRAM</errorname> if programs specified in
                <varname>input_programs</varname> are not valid program objects.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_VALUE</errorname> if <varname>pfn_notify</varname> is
                NULL but user_data is not NULL.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_DEVICE</errorname> if OpenCL devices listed in
              <varname>device_list</varname> are not in the list of devices associated with
              <varname>context</varname>.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_LINKER_OPTIONS</errorname> if the linker options specified by
                <varname>options</varname> are invalid
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if the compilation
              or build of a program executable for any of the devices
              listed in <varname>device_list</varname> by a previous call to
              <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry>
              or <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>
              for program has not completed.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if the rules for devices containing
              compiled binaries or libraries as described in <varname>input_programs</varname>
              argument above are not followed.
            </listitem>

            <listitem>
              <errorname>CL_LINKER_NOT_AVAILABLE</errorname> if a linker is not
              available i.e. <constant>CL_DEVICE_LINKER_AVAILABLE</constant> specified
              in the table of allowed values for <varname>param_name</varname> for
              <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>
              is set to <constant>CL_FALSE</constant>.
            </listitem>

            <listitem>
              <errorname>CL_LINK_PROGRAM_FAILURE</errorname> if there is a failure to link the
              compiled binaries and/or libraries.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </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="clLinkProgram">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clGetDeviceInfo</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>

<!-- 27-Oct-2011 -->
</refentry>

