<?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 Looks like you are calling in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/ThreadPool-and-IPP-decryption/m-p/990908#M22298</link>
    <description>Looks like you are calling openmp in your implementation. You may be getting hung up trying to create native openmp threads in a managed environment. Can you provide a simple example of how you are making your calls in C#?</description>
    <pubDate>Tue, 11 Sep 2012 20:20:47 GMT</pubDate>
    <dc:creator>Chuck_De_Sylva</dc:creator>
    <dc:date>2012-09-11T20:20:47Z</dc:date>
    <item>
      <title>ThreadPool and IPP decryption</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ThreadPool-and-IPP-decryption/m-p/990907#M22297</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I have the following issue -&lt;/P&gt;
&lt;P&gt;When decrypting files, IPPs is spawning multiple worker threads and never clearing/releasing these threads. I end up with hundreds or thousands of threads. Details below:&lt;/P&gt;
&lt;P&gt;Written in C#, I am hosting a remoting service. This remoting service simply accepts a filename and decrypts the file using Ipps (release 5.3, 6.1, doesn't matter..). I have a client application that is calling this remoting service with multiple simultaneous requests. Ipps is set to use 8 threads. When the service gets busier, the number of threads increases.. and increases.. Eventually, it'll get into 1000+. I believe this is happening because .Net uses a thread pool to handle the remoting requests. Since the threads are basically reused, the Ipps worker threads never get released. Even if I close the client application, the threads do not get released.&lt;/P&gt;
&lt;P&gt;In process explorer, I have thousands of threads like 'libguid40.dll!_kmp_launch_worker', or 'libiomp5md_....' if I'm using 6.1.6.&lt;/P&gt;
&lt;P&gt;If I run the exact same code as in the example above in a single standalone application, there is no issue - the Ipps worker threads get released as soon as my thread finishes. It appears that it's the thread pool/remoting that is causing the threads to never get released.&lt;/P&gt;
&lt;P&gt;I know that I can set the number of threads to one. That helps - the threads still grow, but theyr'e growing one at a time instead of 7 or 8 at a time. And, the performance isn't as good.&lt;/P&gt;
&lt;P&gt;Can anyone tell me more precisely why this is happening and what a workaround might be?&lt;/P&gt;
&lt;P&gt;Many Thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2012 00:02:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ThreadPool-and-IPP-decryption/m-p/990907#M22297</guid>
      <dc:creator>CP_H_</dc:creator>
      <dc:date>2012-09-11T00:02:51Z</dc:date>
    </item>
    <item>
      <title>Looks like you are calling</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ThreadPool-and-IPP-decryption/m-p/990908#M22298</link>
      <description>Looks like you are calling openmp in your implementation. You may be getting hung up trying to create native openmp threads in a managed environment. Can you provide a simple example of how you are making your calls in C#?</description>
      <pubDate>Tue, 11 Sep 2012 20:20:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ThreadPool-and-IPP-decryption/m-p/990908#M22298</guid>
      <dc:creator>Chuck_De_Sylva</dc:creator>
      <dc:date>2012-09-11T20:20:47Z</dc:date>
    </item>
  </channel>
</rss>

