<?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 and why is bufsize *= mxnthr; in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040655#M23793</link>
    <description>&lt;P&gt;and why is bufsize *= mxnthr; bufSize is already for complete image roi&lt;/P&gt;</description>
    <pubDate>Thu, 30 Oct 2014 14:51:10 GMT</pubDate>
    <dc:creator>steffenroeber</dc:creator>
    <dc:date>2014-10-30T14:51:10Z</dc:date>
    <item>
      <title>Parallelize single threaded IPP functions</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040648#M23786</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;is there any description available that describes how to use single threaded IPP functions in a multithreaded environment?&lt;/P&gt;

&lt;P&gt;'Simple' functions such as ippiHSVToRGB_8u_C3R that do not use buffers, specs or borders are no problem. Each thread works on its own roi. But what about roi sizes (cpu caches, memory alignment and so on).&lt;/P&gt;

&lt;P&gt;And how do I use filters with borders (ippiFilterScharrHorizMaskBorder_8u16s_C1R) , or fft with a spec (ippiFFTFwd_RToPack_32f_C1R), or others using a buffer (ippiFastMarching_8u32f_C1R)?&lt;/P&gt;</description>
      <pubDate>Wed, 29 Oct 2014 13:55:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040648#M23786</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-10-29T13:55:21Z</dc:date>
    </item>
    <item>
      <title> </title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040649#M23787</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Hello,&amp;nbsp;&lt;BR /&gt;
	Can you a check on the following IPP sample, it provides some example showing how to calling IPP function with external threading:&amp;nbsp;&lt;BR /&gt;
	ipp\examples\ipp-examples.zip&lt;/P&gt;

&lt;P&gt;The&amp;nbsp;examples\ipp-examples\examples\ipp_thread provide the example code for filter and other functions. &amp;nbsp;The document folder at that example has the steps to build and run the sample code.&amp;nbsp;&lt;BR /&gt;
	&lt;BR /&gt;
	Thanks,&lt;BR /&gt;
	Chao&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2014 08:40:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040649#M23787</guid>
      <dc:creator>Chao_Y_Intel</dc:creator>
      <dc:date>2014-10-30T08:40:38Z</dc:date>
    </item>
    <item>
      <title>please see another example</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040650#M23788</link>
      <description>&lt;P&gt;please see another example shows how to call FilterSchar from multithreading environment&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2014 11:43:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040650#M23788</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2014-10-30T11:43:47Z</dc:date>
    </item>
    <item>
      <title>WHat are the border flags</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040651#M23789</link>
      <description>&lt;P&gt;WHat are the border flags ippBorderInMemTop and ippBorderInMemBottom used for?&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2014 12:49:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040651#M23789</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-10-30T12:49:29Z</dc:date>
    </item>
    <item>
      <title>In function</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040652#M23790</link>
      <description>&lt;P&gt;In function ippiFilterScharrHorizMaskBorderGetBufferSize_mt of your example:&lt;/P&gt;

&lt;P&gt;what's the logic of:&lt;/P&gt;

&lt;P&gt;bufsize = (bufsize + 63) &amp;amp; ~63;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2014 12:55:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040652#M23790</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-10-30T12:55:36Z</dc:date>
    </item>
    <item>
      <title>Quote:steffenroeber wrote:</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040653#M23791</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;steffenroeber wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;In function ippiFilterScharrHorizMaskBorderGetBufferSize_mt of your example:&lt;/P&gt;

&lt;P&gt;what's the logic of:&lt;/P&gt;

&lt;P&gt;bufsize = (bufsize + 63) &amp;amp; ~63;&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;It's finding nearest value greater than bufsize&amp;nbsp;and divisible by 64. Like "bufsize += 64 - bufsize % 64;"&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2014 13:30:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040653#M23791</guid>
      <dc:creator>Sergey_K_Intel</dc:creator>
      <dc:date>2014-10-30T13:30:36Z</dc:date>
    </item>
    <item>
      <title>Ok. Wrong question. Why must</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040654#M23792</link>
      <description>&lt;P&gt;Ok. Wrong question. Why must the bufSize divisible by 64?&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2014 14:32:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040654#M23792</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-10-30T14:32:02Z</dc:date>
    </item>
    <item>
      <title>and why is bufsize *= mxnthr;</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040655#M23793</link>
      <description>&lt;P&gt;and why is bufsize *= mxnthr; bufSize is already for complete image roi&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2014 14:51:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040655#M23793</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-10-30T14:51:10Z</dc:date>
    </item>
    <item>
      <title>1.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040656#M23794</link>
      <description>&lt;P&gt;1.&lt;/P&gt;

&lt;P&gt;WHat are the border flags ippBorderInMemTop and ippBorderInMemBottom used for?&lt;/P&gt;

&lt;P&gt;In this example source image is cut into stripes.&amp;nbsp;In&amp;nbsp;top stripe (which is processed by thread #0) bottom&amp;nbsp;border is real pixels, so border type must be&amp;nbsp; ippBorderInMemBottom. Vice versa in bottom stripe (which is processed by thread #(max_nums_thread-1)) top border is real pixels, so border&amp;nbsp; type for this stripe must be ippBorderInMemTop. For this reason for other stripes border type must be ippBorderInMemTop+ippBorderInMemBottom.&lt;/P&gt;

&lt;P&gt;2.&lt;/P&gt;

&lt;P&gt;Why must the bufSize divisible by 64?&lt;/P&gt;

&lt;P&gt;For every thread separate buffer is needed. This bufSize defines buffer size for one thread. If bufSize is divisible by 64 then buffers for all threads will be aligned by 64 (it is important for performance).&lt;/P&gt;

&lt;P&gt;3.&lt;/P&gt;

&lt;P&gt;why is bufsize *= mxnthr; bufSize is already for complete image roi&lt;/P&gt;

&lt;P&gt;Yes, there is mistake. Thanks for&amp;nbsp;notice.&lt;/P&gt;

&lt;P&gt;Below the code is better: For this case there is memory saving.&lt;/P&gt;

&lt;P&gt;void ippiFilterScharrHorizMaskBorderGetBufferSize_mt(IppiSize dstRoiSize, IppiMaskSize mask, IppDataType srcDataType, IppDataType dstDataType, int numChannels, int *pBufferSize, int *bufStep, int *numthr)&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int bufsize;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int mxnthr = 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if (*numthr &amp;lt;= 1) {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ippiFilterScharrHorizMaskBorderGetBufferSize(dstRoiSize, mask, srcDataType, dstDataType, numChannels, &amp;amp;bufsize);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *bufStep = bufsize;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int hd;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int hr;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxnthr = omp_get_max_threads();&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mxnthr &amp;gt; *numthr) {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mxnthr = *numthr;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; omp_set_num_threads(mxnthr);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hd = dstRoiSize.height / mxnthr;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = dstRoiSize.height % mxnthr;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dstRoiSize.height = hd + hr;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ippiFilterScharrHorizMaskBorderGetBufferSize(dstRoiSize, mask, srcDataType, dstDataType, numChannels, &amp;amp;bufsize);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufsize = (bufsize + 63) &amp;amp; ~63;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *bufStep = bufsize;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bufsize *= mxnthr;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; *pBufferSize = bufsize;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; *numthr = mxnthr;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;Thanks!&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 31 Oct 2014 08:35:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040656#M23794</guid>
      <dc:creator>Ivan_Z_Intel</dc:creator>
      <dc:date>2014-10-31T08:35:20Z</dc:date>
    </item>
    <item>
      <title>Thank  you for that</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040657#M23795</link>
      <description>&lt;P&gt;Thank&amp;nbsp; you for that explanation. Now it works.&lt;/P&gt;

&lt;P&gt;But next questions:&lt;/P&gt;

&lt;P&gt;What about linear transformations? For example: &lt;SPAN class="kwd"&gt;ippiFFTInit_R_32f. There are&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="kwd"&gt;IppiFFTSpec_R_32f* &lt;/SPAN&gt;&lt;SPAN class="var"&gt;pFFTSpec&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="kwd"&gt;Ipp8u* pMemInit&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;can that be shared in threads?&lt;/P&gt;

&lt;P&gt;Is it possible to parallelize ippiHoughLine_Region_8u32f_C1R and similars?&lt;/P&gt;</description>
      <pubDate>Fri, 31 Oct 2014 08:48:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040657#M23795</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-10-31T08:48:56Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040658#M23796</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;You can't share a single pMemInit buffer in multiple threads, but you can share FFTSpec.&lt;BR /&gt;
	If you need to run the same type and size of FFT in multiple threads, you can initialize FFTSpec only once, and then free pMemInit after initialization. Once you initialize FFTSpec (IppiFFTSpec_R_32f), you can share it between multiple threads since it is not modified by ippiFFT processing functions. But you will need a separate work buffer (pBuffer) for each ippiFFT function running in its own thread.&lt;/P&gt;

&lt;P&gt;You can find an example for ippiFFTInit_R_32f here:&lt;BR /&gt;
	&lt;A href="https://software.intel.com/en-us/node/504249"&gt;https://software.intel.com/en-us/node/504249&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Best regards,&lt;BR /&gt;
	Alexey&lt;/P&gt;</description>
      <pubDate>Fri, 31 Oct 2014 15:34:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040658#M23796</guid>
      <dc:creator>Alexey_Tyndyuk</dc:creator>
      <dc:date>2014-10-31T15:34:28Z</dc:date>
    </item>
    <item>
      <title>What about the ippiHoughLine</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040659#M23797</link>
      <description>&lt;P&gt;What about the ippiHoughLine_Region_8u32f_C1R?&lt;/P&gt;</description>
      <pubDate>Wed, 05 Nov 2014 06:25:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040659#M23797</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-11-05T06:25:16Z</dc:date>
    </item>
    <item>
      <title>Quote:steffenroeber wrote:</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040660#M23798</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;steffenroeber wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Hi Steffen.&lt;/P&gt;
&lt;P&gt;is there any description available that describes how to use single threaded IPP functions in a multithreaded environment?&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;I am&amp;nbsp;attaching example&amp;nbsp;of threading morphology functions. You can compile it and run to undestand how it works.&lt;/P&gt;
&lt;P&gt;Thanks for&amp;nbsp;using&amp;nbsp;IPP.&lt;/P&gt;</description>
      <pubDate>Wed, 05 Nov 2014 12:31:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040660#M23798</guid>
      <dc:creator>Andrey_B_Intel</dc:creator>
      <dc:date>2014-11-05T12:31:45Z</dc:date>
    </item>
    <item>
      <title>Quote:steffenroeber wrote:</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040661#M23799</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;steffenroeber wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;What about the ippiHoughLine_Region_8u32f_C1R?&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;The result of this function is sorted list of lines. &amp;nbsp;You can split region by angles and process them in parallel. But you need to keep in mind following:&lt;/P&gt;
&lt;P&gt;For example single threaded version&amp;nbsp;returns 10 lines sorted by&amp;nbsp;weight from whole image.&lt;/P&gt;
&lt;P&gt;In parallel mode every thread returns 10 lines too&amp;nbsp; so total number of lines is 10*(N of threads)). After finishing multi-threaded version you need to analyze these 50 lines and&amp;nbsp;select the first 10 strongest lines. They will be equal the result of single-threaded function.&amp;nbsp; For example you can calculate number of pixels at every returned line. Of course it is overhead but unfortunately current API does not provide infomation about weight of line.&lt;/P&gt;</description>
      <pubDate>Wed, 05 Nov 2014 12:43:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040661#M23799</guid>
      <dc:creator>Andrey_B_Intel</dc:creator>
      <dc:date>2014-11-05T12:43:00Z</dc:date>
    </item>
    <item>
      <title>Wjat do you mean with "split</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040662#M23800</link>
      <description>&lt;P&gt;Wjat do you mean with "split region by angles"?&lt;/P&gt;</description>
      <pubDate>Thu, 06 Nov 2014 06:51:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040662#M23800</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-11-06T06:51:52Z</dc:date>
    </item>
    <item>
      <title>Quote:steffenroeber wrote:</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040663#M23801</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;steffenroeber wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Wjat do you mean with "split region by angles"?&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Look please at description&amp;nbsp;of function in manual&lt;/P&gt;
&lt;P align="left"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;IppStatus ippiHoughLine_Region_8u32f_C1R(const Ipp8u* &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;pSrc&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, int &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;srcStep&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, IppiSize &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;roiSize&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, IppPointPolar* &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;pLine&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, IppPointPolar &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;dstRoi[2]&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, int &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;maxLineCount&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, int*&lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;pLineCount&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, IppPointPolar &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;delta&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, int &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;threshold&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;&lt;FONT size="2" face="CourierNewPSMT"&gt;, Ipp8u* &lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;&lt;FONT lang="JA" size="2" face="CourierNewPS-ItalicMT"&gt;pBuffer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT size="1" face="CourierNewPSMT"&gt;&lt;FONT size="1" face="CourierNewPSMT"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align="left"&gt;&lt;EM&gt;"dstRoi Specifies the range of parameters of straight lines to be detected." &lt;/EM&gt;It means that function return only lines&amp;nbsp;which have angles from dstRoi[0].theta to dstRoi[1].theta.&amp;nbsp;For&amp;nbsp;multithreaded version you can split region by N parts with angle step (dstRoi[1].theta-dstRoi[0].theta)/N and call every thread with its own dstRoi parameter. The code could be:&lt;/P&gt;
&lt;P align="left"&gt;deltaTheta = (dstRoiST[1].theta-dstRoiST[0].theta)/N;&lt;/P&gt;
&lt;P align="left"&gt;for(n=0;n&amp;lt;N;n++){&lt;/P&gt;
&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp; dstRoiMT&lt;N&gt;&amp;nbsp;[0].rho=dstRoiST&amp;nbsp;[0].rho;&lt;/N&gt;&lt;/P&gt;
&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp; dstRoiMT&lt;N&gt;&amp;nbsp;[1].rho=dstRoiST&amp;nbsp;[1].rho;&lt;/N&gt;&lt;/P&gt;
&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp; dstRoiMT&lt;N&gt;&amp;nbsp;[0].theta=dstRoiST&amp;nbsp;[0].theta+n*deltaTheta;&lt;/N&gt;&lt;/P&gt;
&lt;P align="left"&gt;&amp;nbsp;&amp;nbsp; dstRoiMT&lt;N&gt;&amp;nbsp;[1].theta=dstRoiST&amp;nbsp;[1].theta+(n+1)*deltaTheta;&lt;/N&gt;&lt;/P&gt;
&lt;P align="left"&gt;}&lt;/P&gt;</description>
      <pubDate>Thu, 06 Nov 2014 11:34:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040663#M23801</guid>
      <dc:creator>Andrey_B_Intel</dc:creator>
      <dc:date>2014-11-06T11:34:36Z</dc:date>
    </item>
    <item>
      <title>Ok. This function alwo works.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040664#M23802</link>
      <description>&lt;P&gt;Ok. This function alwo works. Now next one: ippiHoughLine_8u32f_C1R&lt;/P&gt;

&lt;P&gt;Here I have a roi. Can I use that for parallelization?&lt;/P&gt;</description>
      <pubDate>Thu, 06 Nov 2014 13:01:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040664#M23802</guid>
      <dc:creator>steffenroeber</dc:creator>
      <dc:date>2014-11-06T13:01:18Z</dc:date>
    </item>
    <item>
      <title>Quote:steffenroeber wrote:</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040665#M23803</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;steffenroeber wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Ok. This function alwo works. Now next one: ippiHoughLine_8u32f_C1R&lt;/P&gt;
&lt;P&gt;Here I have a roi. Can I use that for parallelization?&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Sorry, but I don't undestand question&lt;/P&gt;
&lt;P&gt;You cannot parallelize&amp;nbsp;ippiHoughLine_8u32f_C1R and ippiHoughLine_Region_8u32f_C1R&amp;nbsp;by splitting on tiles in roi. The both function use pixels of whole image&amp;nbsp;so for correct parallelization&amp;nbsp;you can split&amp;nbsp;Hough space only.&amp;nbsp;Therefore ippiHoughLine_8u32f_C1R cannot be parallelized because it does not have API for splitting Hough space. But you&amp;nbsp;can replace ippiHoughLine_8u32f_C1R with ippiHoughLine_Region_8u32f_C1R with&amp;nbsp;lines&amp;nbsp;from diapasone [0..2PI]&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 07 Nov 2014 11:54:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Parallelize-single-threaded-IPP-functions/m-p/1040665#M23803</guid>
      <dc:creator>Andrey_B_Intel</dc:creator>
      <dc:date>2014-11-07T11:54:00Z</dc:date>
    </item>
  </channel>
</rss>

