<?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 IPP and dlopen() in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-and-dlopen/m-p/994137#M22674</link>
    <description>&lt;P&gt;Hi, I`m quite new to IPP. While I`ve been reading docs about linking against IPP one question emerged.&lt;BR /&gt;For educational purposes I`ve written code that uses dlopen() interface to obtain IPP routines.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::string ippcore ("/opt/intel/ipp/lib/ia32/libippcore.so.7.1");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;std::string ipps ("/opt/intel/ipp/lib/ia32/libipps.so.7.1");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; typedef IppStatus (*ippsFFTGetSize_C_64fc_t)(int, int, IppHintAlgorithm, int*, int*, int*);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; char *error;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; void *handle = dlopen (ipps.c_str(), RTLD_LAZY);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if (!handle) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; fputs (dlerror(), stderr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; exit(1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ippsFFTGetSize_C_64fc_t ptr_ippsFFTGetSize_C_64fc= (ippsFFTGetSize_C_64fc_t)dlsym(handle, "ippsFFTGetSize_C_64fc");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if ((error = dlerror()) != NULL)&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; fputs(error, stderr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; exit(1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (ptr_ippsFFTGetSize_C_64fc(logN_samples, IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate, &amp;amp;specSize, &amp;amp;specBufferSize, &amp;amp;workBufferSize) != ippStsNoErr)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;std::cout&amp;lt;&amp;lt;"ERROR: Cannot retrieve FFT structures sizes\n"&amp;lt;&amp;lt;std::endl;&lt;/P&gt;
&lt;P&gt;My questions are:&lt;/P&gt;
&lt;P&gt;1. Is it proper way of using IPP?&lt;/P&gt;
&lt;P&gt;2. When calling ptr_ippsFFTGetSize_C_64fc, is the called routine C-optimized or CPU-optizmied?&lt;/P&gt;</description>
    <pubDate>Mon, 24 Sep 2012 11:39:37 GMT</pubDate>
    <dc:creator>wwalas</dc:creator>
    <dc:date>2012-09-24T11:39:37Z</dc:date>
    <item>
      <title>IPP and dlopen()</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-and-dlopen/m-p/994137#M22674</link>
      <description>&lt;P&gt;Hi, I`m quite new to IPP. While I`ve been reading docs about linking against IPP one question emerged.&lt;BR /&gt;For educational purposes I`ve written code that uses dlopen() interface to obtain IPP routines.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::string ippcore ("/opt/intel/ipp/lib/ia32/libippcore.so.7.1");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;std::string ipps ("/opt/intel/ipp/lib/ia32/libipps.so.7.1");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; typedef IppStatus (*ippsFFTGetSize_C_64fc_t)(int, int, IppHintAlgorithm, int*, int*, int*);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; char *error;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; void *handle = dlopen (ipps.c_str(), RTLD_LAZY);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if (!handle) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; fputs (dlerror(), stderr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; exit(1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ippsFFTGetSize_C_64fc_t ptr_ippsFFTGetSize_C_64fc= (ippsFFTGetSize_C_64fc_t)dlsym(handle, "ippsFFTGetSize_C_64fc");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if ((error = dlerror()) != NULL)&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; fputs(error, stderr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; exit(1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (ptr_ippsFFTGetSize_C_64fc(logN_samples, IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate, &amp;amp;specSize, &amp;amp;specBufferSize, &amp;amp;workBufferSize) != ippStsNoErr)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;std::cout&amp;lt;&amp;lt;"ERROR: Cannot retrieve FFT structures sizes\n"&amp;lt;&amp;lt;std::endl;&lt;/P&gt;
&lt;P&gt;My questions are:&lt;/P&gt;
&lt;P&gt;1. Is it proper way of using IPP?&lt;/P&gt;
&lt;P&gt;2. When calling ptr_ippsFFTGetSize_C_64fc, is the called routine C-optimized or CPU-optizmied?&lt;/P&gt;</description>
      <pubDate>Mon, 24 Sep 2012 11:39:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-and-dlopen/m-p/994137#M22674</guid>
      <dc:creator>wwalas</dc:creator>
      <dc:date>2012-09-24T11:39:37Z</dc:date>
    </item>
    <item>
      <title>Hi!</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-and-dlopen/m-p/994138#M22675</link>
      <description>Hi!
For me - i don't know the dispatcher well -  it's hard to say for sure. I would suppose, that CPU-omptimized functions will be called anyway.
But, you can make the same experiment with ippsGetLibVersion function and printout the library version string returned.
Regards,
Sergey</description>
      <pubDate>Thu, 27 Sep 2012 04:49:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-and-dlopen/m-p/994138#M22675</guid>
      <dc:creator>Sergey_K_Intel</dc:creator>
      <dc:date>2012-09-27T04:49:42Z</dc:date>
    </item>
  </channel>
</rss>

