<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic For developers, please see in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125453#M25201</link>
    <description>&lt;P&gt;For developers, please see the summary post at&lt;/P&gt;

&lt;P&gt;&lt;A href="https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/737444"&gt;https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/737444&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Best Regards,&lt;/P&gt;

&lt;P&gt;Ying&lt;/P&gt;</description>
    <pubDate>Mon, 26 Jun 2017 07:08:16 GMT</pubDate>
    <dc:creator>Ying_H_Intel</dc:creator>
    <dc:date>2017-06-26T07:08:16Z</dc:date>
    <item>
      <title>is the implemented Trust Region method deterministic?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125450#M25198</link>
      <description>&lt;P&gt;In this case results cannot change if initial condition and constraints are the same ...&amp;nbsp;&lt;/P&gt;

&lt;P&gt;this is what happen in our implementation.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Thank you&lt;/P&gt;

&lt;P&gt;Gianluca&lt;/P&gt;</description>
      <pubDate>Fri, 09 Jun 2017 07:44:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125450#M25198</guid>
      <dc:creator>Gianluca_G_1</dc:creator>
      <dc:date>2017-06-09T07:44:37Z</dc:date>
    </item>
    <item>
      <title>Hi Gianluca，</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125451#M25199</link>
      <description>&lt;P&gt;Hi Gianluca，&lt;/P&gt;

&lt;P&gt;i write one email to you today, hope it disclose the inconsistent&amp;nbsp;problem.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Theoretically&amp;nbsp;,&amp;nbsp;besides initial condition and constraints are the same,&amp;nbsp; the run-time&amp;nbsp;executable order&amp;nbsp;are same,&amp;nbsp;&amp;nbsp;the implemented Trust Region method is&amp;nbsp;deterministic.&lt;/P&gt;

&lt;P&gt;Best Regards,&lt;/P&gt;

&lt;P&gt;Ying&lt;/P&gt;

&lt;P&gt;Some discussion in MKL user guide about&amp;nbsp;the floating-point computation and MKL implementation:&lt;/P&gt;

&lt;P&gt;&lt;FONT size="2"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;Math Kernel Library (Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Verdana"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT size="2"&gt;MKL) offers functions and environment variables that help you obtain&lt;BR /&gt;
	Conditional Numerical Reproducibility (CNR) of floating-point results when calling the library functions from&lt;BR /&gt;
	your application. These new controls enable Intel MKL to run in a special mode, when functions return bitwise&lt;BR /&gt;
	reproducible floating-point results from run to run under the following conditions:&lt;BR /&gt;
	• Calls to Intel MKL occur in a single executable&lt;BR /&gt;
	• The number of computational threads used by the library does not change in the run&lt;BR /&gt;
	It is well known that for general single and double precision IEEE floating-point numbers, the associative&lt;BR /&gt;
	property does not always hold, meaning (a+b)+c may not equal a +(b+c). Let's consider a specific example.&lt;BR /&gt;
	In infinite precision arithmetic 2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle0" style="font-size: 7pt;"&gt;-63 &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT size="2"&gt;+ 1 + -1 = 2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle0" style="font-size: 7pt;"&gt;-63&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Verdana"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT size="2"&gt;. If this same computation is done on a computer using&lt;BR /&gt;
	double precision floating-point numbers, a rounding error is introduced, and the order of operations becomes&lt;BR /&gt;
	important:&lt;BR /&gt;
	(2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle0" style="font-size: 7pt;"&gt;-63 &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT size="2"&gt;+ 1) + (-1) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class="fontstyle3"&gt;&lt;FONT size="2"&gt;≃ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face="Verdana"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT size="2"&gt;1 + (-1) = 0&lt;BR /&gt;
	versus&lt;BR /&gt;
	2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle0" style="font-size: 7pt;"&gt;-63 &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT size="2"&gt;+ (1 + (-1)) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;SPAN class="fontstyle3"&gt;≃ &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Verdana"&gt;&lt;SPAN class="fontstyle0" style="font-size: 7pt;"&gt;-63 &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT size="2"&gt;+ 0 = 2&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class="fontstyle0" style="font-size: 7pt;"&gt;&lt;FONT face="Verdana"&gt;-63&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;FONT size="2"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;This inconsistency in results due to order of operations is precisely what the new functionality addresses.&lt;BR /&gt;
	The application &lt;STRONG&gt;related factors that affect the order of floating-point operations within a single executable&lt;BR /&gt;
	program include selection of a code path based on run-time processor dispatching, alignment of data arrays,&lt;BR /&gt;
	variation in number of threads, threaded algorithms and internal floating-point control settings&lt;/STRONG&gt;. You can&lt;BR /&gt;
	control most of these factors by controlling the number of threads and floating-point settings and by taking&lt;BR /&gt;
	steps to align memory when it is allocated (see the Getting Reproducible Results with Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;MKL knowledge&lt;BR /&gt;
	base article for details). However, run-time dispatching and certain threaded algorithms do not allow users to&lt;BR /&gt;
	make changes that can ensure the same order of operations from run to run.&lt;BR /&gt;
	Intel MKL does run-time processor dispatching in order to identify the appropriate internal code paths to&lt;BR /&gt;
	traverse for the Intel MKL functions called by the application. The code paths chosen may differ across a wide&lt;BR /&gt;
	range of Intel processors and Intel architecture compatible processors and may provide differing levels of&lt;BR /&gt;
	performance. For example, an Intel MKL function running on an Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;Pentium&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;4 processor may run one&lt;BR /&gt;
	code path, while on the latest Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;Xeon&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;processor it will run another code path. This happens because&lt;BR /&gt;
	each unique code path has been optimized to match the features available on the underlying processor. One&lt;BR /&gt;
	key way that the new features of a processor are exposed to the programmer is through the instruction set&lt;BR /&gt;
	architecture (ISA). Because of this, code branches in Intel MKL are designated by the latest ISA they use for&lt;BR /&gt;
	optimizations: from the Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;Streaming SIMD Extensions 2 (Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;SSE2) to the Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana"&gt;Advanced Vector&lt;BR /&gt;
	Extensions 2 (Intel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle1"&gt;® &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="Verdana" size="2"&gt;AVX2). The feature-based approach introduces a challenge: if any of the internal&lt;BR /&gt;
	floating-point operations are done in a different order or are re-associated, the computed results may differ.&lt;BR /&gt;
	Dispatching optimized code paths based on the capabilities of the processor on which the code is running is&lt;BR /&gt;
	central to the optimization approach used by Intel MKL. So it is natural that consistent results require some&lt;BR /&gt;
	performance trade-offs. If limited to a particular code path, performance of Intel MKL can in some&lt;BR /&gt;
	circumstances degrade by more than a half. To understand this, note that matrix-multiply performance&lt;BR /&gt;
	nearly doubled with the introduction of new processors supporting Intel AVX2 instructions. Even if the code&lt;BR /&gt;
	branch is not restricted, performance can degrade by 10-20% because the new functionality restricts&lt;BR /&gt;
	algorithms to maintain the order of operations.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Jun 2017 06:00:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125451#M25199</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2017-06-15T06:00:01Z</dc:date>
    </item>
    <item>
      <title>ok Thank you, now it is clear</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125452#M25200</link>
      <description>&lt;P&gt;ok Thank you, now it is clear.&lt;/P&gt;

&lt;P&gt;BR&lt;/P&gt;

&lt;P&gt;Gianluca&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Jun 2017 06:18:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125452#M25200</guid>
      <dc:creator>Gianluca_G_1</dc:creator>
      <dc:date>2017-06-15T06:18:18Z</dc:date>
    </item>
    <item>
      <title>For developers, please see</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125453#M25201</link>
      <description>&lt;P&gt;For developers, please see the summary post at&lt;/P&gt;

&lt;P&gt;&lt;A href="https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/737444"&gt;https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/737444&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Best Regards,&lt;/P&gt;

&lt;P&gt;Ying&lt;/P&gt;</description>
      <pubDate>Mon, 26 Jun 2017 07:08:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/is-the-implemented-Trust-Region-method-deterministic/m-p/1125453#M25201</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2017-06-26T07:08:16Z</dc:date>
    </item>
  </channel>
</rss>

