<?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-2013</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 compiled object is available.
                    </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>(<varname>program</varname>,
          <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 <varname>user_data</varname> 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 <varname>program</varname> 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>

<!-- 8-May-2013 -->
</refentry>

