<?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 Igor, You could try to in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923312#M15908</link>
    <description>Igor, You could try to comment &lt;STRONG&gt;ippInit&lt;/STRONG&gt; in your test case.

&amp;gt;&amp;gt;... we'll check how to avoid re-loading for reinitialization to the same state (in your case - default)...

That would be nice and a consolidated set of events is as follows:

Start App -&amp;gt; (L) ippcore-7.1.dll -&amp;gt; (L) ippi-7.1.dll -&amp;gt; (L) ipps-7.1.dll -&amp;gt; (L) ippie9-7.1.dll -&amp;gt; (L) ippse9-7.1.dll -&amp;gt; main -&amp;gt; ippInit -&amp;gt; (U) ippie9-7.1.dll -&amp;gt; (L) ippie9-7.1.dll -&amp;gt; (U) ippse9-7.1.dll -&amp;gt; (L) ippse9-7.1.dll

&lt;STRONG&gt;Note:&lt;/STRONG&gt; (L) - load DLL / (U) - unload DLL</description>
    <pubDate>Sun, 07 Apr 2013 18:10:01 GMT</pubDate>
    <dc:creator>SergeyKostrov</dc:creator>
    <dc:date>2013-04-07T18:10:01Z</dc:date>
    <item>
      <title>Load and Unload issues with Waterfall DLLs ( Instruction Set specific )</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923309#M15905</link>
      <description>&lt;P&gt;I detected an issue related to Loading&amp;nbsp;and Unloading&amp;nbsp;steps&amp;nbsp;for Waterfall DLLs ( Instruction Set specific ).&lt;/P&gt;
&lt;P&gt;Let's say I've compiled an&amp;nbsp;application ( 64-bit / Dynamic linking of IPP libraries&amp;nbsp;)&amp;nbsp;that could work on CPUs that&amp;nbsp;support &lt;STRONG&gt;AVX&lt;/STRONG&gt; Instruction Set ( code &lt;STRONG&gt;e9&lt;/STRONG&gt; for Waterfall DLLs ). A test case&amp;nbsp;starts with a call to &lt;STRONG&gt;ippInit&lt;/STRONG&gt; function in &lt;STRONG&gt;main&lt;/STRONG&gt; function:&lt;/P&gt;
&lt;P&gt;[ &lt;STRONG&gt;Source codes&lt;/STRONG&gt; ]&lt;BR /&gt;...&lt;BR /&gt;int &lt;STRONG&gt;main&lt;/STRONG&gt;()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;ippInit&lt;/STRONG&gt;();&lt;BR /&gt;&amp;nbsp;...&lt;BR /&gt;}&lt;BR /&gt;...&lt;/P&gt;
&lt;P&gt;However, before&amp;nbsp;&lt;STRONG&gt;ippInit&lt;/STRONG&gt; was called I was able to see&amp;nbsp;in VS&amp;nbsp;debugger&amp;nbsp;that &lt;STRONG&gt;ippie9-7.1.dll&lt;/STRONG&gt; and &lt;STRONG&gt;ippse9-7.1.dll&lt;/STRONG&gt; already loaded ( see lines &lt;STRONG&gt;(4)&lt;/STRONG&gt; and &lt;STRONG&gt;(5)&lt;/STRONG&gt; ). Now, take a look at a VS debugger output:&lt;/P&gt;
&lt;P&gt;[ &lt;STRONG&gt;VS Output Window&lt;/STRONG&gt; ]&lt;BR /&gt;...&lt;BR /&gt;(0)'IccTestApp64D.exe': Loaded '..\x64\Debug\IccTestApp64D.exe', ...&lt;BR /&gt;...&lt;BR /&gt;(1)'IccTestApp64D.exe': Loaded '..\x64\ippcore-7.1.dll', ...&lt;BR /&gt;(2)'IccTestApp64D.exe': Loaded '..\x64\ippi-7.1.dll', ...&lt;BR /&gt;(3)'IccTestApp64D.exe': Loaded '..\x64\ipps-7.1.dll', ...&lt;BR /&gt;...&lt;BR /&gt;&lt;STRONG&gt;(4)&lt;/STRONG&gt;'IccTestApp64D.exe': &lt;STRONG&gt;Loaded '..\x64\ippie9-7.1.dll'&lt;/STRONG&gt;, ...&lt;BR /&gt;&lt;STRONG&gt;(5)&lt;/STRONG&gt;'IccTestApp64D.exe': &lt;STRONG&gt;Loaded '..\x64\ippse9-7.1.dll'&lt;/STRONG&gt;, ...&lt;BR /&gt;...&lt;BR /&gt;...Note: &lt;STRONG&gt;main&lt;/STRONG&gt;() called&lt;BR /&gt;...&lt;BR /&gt;...Note: &lt;STRONG&gt;ippInit&lt;/STRONG&gt;() called&lt;BR /&gt;...&lt;BR /&gt;&lt;STRONG&gt;(6)&lt;/STRONG&gt;'IccTestApp64D.exe': &lt;STRONG&gt;Unloaded '..\x64\ippie9-7.1.dll'&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;(7)&lt;/STRONG&gt;'IccTestApp64D.exe': &lt;STRONG&gt;Loaded '..\x64\ippie9-7.1.dll'&lt;/STRONG&gt;, ...&lt;BR /&gt;&lt;STRONG&gt;(8)&lt;/STRONG&gt;'IccTestApp64D.exe': &lt;STRONG&gt;Unloaded '..\x64\ippse9-7.1.dll'&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;(9)&lt;/STRONG&gt;'IccTestApp64D.exe': &lt;STRONG&gt;Loaded '..\x64\ippse9-7.1.dll'&lt;/STRONG&gt;, ...&lt;BR /&gt;...&lt;BR /&gt;processing continues...&lt;/P&gt;
&lt;P&gt;As you can see as soon as &lt;STRONG&gt;ippInit&lt;/STRONG&gt; is called both DLLs are unloaded and than loaded again ( see lines &lt;STRONG&gt;(6)&lt;/STRONG&gt;, &lt;STRONG&gt;(7)&lt;/STRONG&gt;, &lt;STRONG&gt;(8)&lt;/STRONG&gt; and &lt;STRONG&gt;(9)&lt;/STRONG&gt; ). Please take a look and investigate if something is wrong.&lt;/P&gt;
&lt;P&gt;Thanks in advance.&lt;/P&gt;</description>
      <pubDate>Sat, 06 Apr 2013 04:49:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923309#M15905</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-04-06T04:49:24Z</dc:date>
    </item>
    <item>
      <title>Sergey, what is the purpose</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923310#M15906</link>
      <description>&lt;P&gt;Sergey, what is the purpose of calling Init() for dynamic linking? - initialization is done in dllmain().&lt;/P&gt;
&lt;P&gt;Anyway you are right - we'll check how to avoid re-loading for reinitialization to the same state (in your case - default).&lt;/P&gt;
&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Sun, 07 Apr 2013 08:48:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923310#M15906</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2013-04-07T08:48:00Z</dc:date>
    </item>
    <item>
      <title>Usually when some dll is</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923311#M15907</link>
      <description>&lt;P&gt;Usually when some dll is loaded and unloaded there could be issue related to different versions of the same dynamic library conflicts when the&amp;nbsp; location is resolved and loaded from different paths.It could be also case of reinitialization when the code referenced from ippInit() is loaded from those two dlls.The recommended method for troubleshooting such a issues(for advanced users) is to enable in gflags.exe "show loader snaps" option and monitor the NtLoader process when it is called for loading various referrenced dlls.&lt;/P&gt;</description>
      <pubDate>Sun, 07 Apr 2013 09:44:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923311#M15907</guid>
      <dc:creator>Bernard</dc:creator>
      <dc:date>2013-04-07T09:44:57Z</dc:date>
    </item>
    <item>
      <title>Igor, You could try to</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923312#M15908</link>
      <description>Igor, You could try to comment &lt;STRONG&gt;ippInit&lt;/STRONG&gt; in your test case.

&amp;gt;&amp;gt;... we'll check how to avoid re-loading for reinitialization to the same state (in your case - default)...

That would be nice and a consolidated set of events is as follows:

Start App -&amp;gt; (L) ippcore-7.1.dll -&amp;gt; (L) ippi-7.1.dll -&amp;gt; (L) ipps-7.1.dll -&amp;gt; (L) ippie9-7.1.dll -&amp;gt; (L) ippse9-7.1.dll -&amp;gt; main -&amp;gt; ippInit -&amp;gt; (U) ippie9-7.1.dll -&amp;gt; (L) ippie9-7.1.dll -&amp;gt; (U) ippse9-7.1.dll -&amp;gt; (L) ippse9-7.1.dll

&lt;STRONG&gt;Note:&lt;/STRONG&gt; (L) - load DLL / (U) - unload DLL</description>
      <pubDate>Sun, 07 Apr 2013 18:10:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923312#M15908</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-04-07T18:10:01Z</dc:date>
    </item>
    <item>
      <title>Igor,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923313#M15909</link>
      <description>&lt;P&gt;Igor,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;does ippInit() reference code located in ippie7.1.dll and ippie9-7.1.dll?&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2013 06:29:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923313#M15909</guid>
      <dc:creator>Bernard</dc:creator>
      <dc:date>2013-04-08T06:29:01Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...What is the purpose of</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923314#M15910</link>
      <description>&amp;gt;&amp;gt;...What is the purpose of calling Init() for dynamic linking?..

The main purpose, even if it doesn't look right in case of Dynamic linking of IPP, is to demonstrate that &lt;STRONG&gt;loaded&lt;/STRONG&gt; Waterfall DLLs are &lt;STRONG&gt;unloaded&lt;/STRONG&gt; and &lt;STRONG&gt;loaded&lt;/STRONG&gt; again.</description>
      <pubDate>Mon, 08 Apr 2013 12:30:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923314#M15910</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-04-08T12:30:25Z</dc:date>
    </item>
    <item>
      <title>Ok, it is a bug, will be</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923315#M15911</link>
      <description>&lt;P&gt;Ok, it is a bug, will be fixed in the next major release. ippInit() is called from each "stub" dll in dllmain function. When you call ippInit from your app - it doesn't check already registered/loaded dlls and restarts warterfall procedure - so corresponding check will be added.&lt;/P&gt;
&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2013 20:16:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923315#M15911</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2013-04-09T20:16:08Z</dc:date>
    </item>
    <item>
      <title>Sergey, here is the # of the</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923316#M15912</link>
      <description>&lt;P&gt;Sergey, here is the # of the issue -&amp;nbsp; DPD200332902 &amp;nbsp;for your reference. when the problem will be fixed we will inform you asap.&lt;/P&gt;</description>
      <pubDate>Wed, 10 Apr 2013 09:50:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923316#M15912</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2013-04-10T09:50:23Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...here is the # of the</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923317#M15913</link>
      <description>&amp;gt;&amp;gt;...here is the # of the issue - &lt;STRONG&gt;DPD200332902&lt;/STRONG&gt; for your reference...

Thank you.

Note: It is Not important now but I'm interested to know how old is the problem?..</description>
      <pubDate>Wed, 10 Apr 2013 12:14:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923317#M15913</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-04-10T12:14:59Z</dc:date>
    </item>
    <item>
      <title>who knows how old it is... to</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923318#M15914</link>
      <description>&lt;P&gt;who knows how old it is... to aswer this question we need to check all versions starting from the first one - IPP 2.0.Guess now it doesn't matter as they can't be fixed. So let's wait for the next one - fixed one...&lt;/P&gt;
&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Fri, 12 Apr 2013 07:10:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923318#M15914</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2013-04-12T07:10:27Z</dc:date>
    </item>
    <item>
      <title>Hello,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923319#M15915</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;this is normal situation for IPP dynamic dispatcher. A developer can manage optimization variant by ippInitCpu() function, a developer can put only part of IPP DLLs in his package, etc. So every time when ippInit() or ippInitCpu() is called all IPP DLL's are unloaded and appropriate optimization veriats are loaded.&lt;/P&gt;

&lt;P&gt;I agree it is possible to make the dispatcher more smart and without unnecessary reloading, but IPP DLL's are deprecated in IPP 8.0 at all. Much better to use IPP static libraries or build own custom DLL (small size and contains only necessary functionality instead of many huge size IPP DLLs)&lt;/P&gt;

&lt;P&gt;Pavel&lt;/P&gt;</description>
      <pubDate>Tue, 17 Dec 2013 17:53:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Load-and-Unload-issues-with-Waterfall-DLLs-Instruction-Set/m-p/923319#M15915</guid>
      <dc:creator>Pavel_B_Intel1</dc:creator>
      <dc:date>2013-12-17T17:53:50Z</dc:date>
    </item>
  </channel>
</rss>

