<?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 release still include debug code - No, it does not in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-release-still-include-debug-code/m-p/778264#M1321</link>
    <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1333499357062="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=261903" href="https://community.intel.com/en-us/profile/261903/" class="basic"&gt;sschaem@adobe.com&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;Bold statement but when I profile IPP code, a large portion is spent just checking if paramters are NULL and not doing actual work. &lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;This level of &lt;SPAN style="text-decoration: underline;"&gt;paramter check is fine for debuging&lt;/SPAN&gt; and high level OS function, &lt;SPAN style="text-decoration: underline;"&gt;but is unnaceptable&lt;/SPAN&gt; in a release build...&lt;/DIV&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;In overall, I reallydefend these verifications and for many kinds ofapplications, not just real-time or&lt;BR /&gt;mission critical,&lt;SPAN style="text-decoration: underline;"&gt;they are needed&lt;/SPAN&gt;.&lt;BR /&gt;&lt;BR /&gt;Verification of all input parameters, regardless of Debug or Release configurations, is a commonpractice and&lt;BR /&gt;&lt;SPAN style="text-decoration: underline;"&gt;it guarantees that a processing inside of a functionstarts with all right values&lt;/SPAN&gt;.&lt;STRONG&gt;Intel&lt;/STRONG&gt;'s approach is right and a stability&lt;BR /&gt;of an application that uses &lt;STRONG&gt;IPP&lt;/STRONG&gt;isa Top-Priority for &lt;STRONG&gt;Intel&lt;/STRONG&gt;, I think.&lt;BR /&gt;&lt;BR /&gt;Do these verificationsaffect aperformance of your computations?&lt;BR /&gt;&lt;BR /&gt;Ifsome software crashesbecause oflack of verifications, for example &lt;STRONG&gt;Adobe&lt;/STRONG&gt;,many userswill be unhappy.&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;/P&gt;</description>
    <pubDate>Wed, 04 Apr 2012 00:53:27 GMT</pubDate>
    <dc:creator>SergeyKostrov</dc:creator>
    <dc:date>2012-04-04T00:53:27Z</dc:date>
    <item>
      <title>IPP release still include debug code</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-release-still-include-debug-code/m-p/778263#M1320</link>
      <description>Bold statement but when I profile IPP code, a large portion is spent just checking if paramters are NULL and not doing actual work.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;This level of paramter check is fine for debuging and high level OS function, but is unnaceptable in a release build.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Case in point Huffman decoding. A full decoder spend 8% of its time dispatching instead of doing actualy work.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Calling&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1()&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Dispatch to&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;y8_ownpj_ippiDecodeHuffman8x8_JPEG_1u16s_C1()&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;And here is a copy of the dispatch code. This does nothing but callsy8_ownpj_ippiDecodeHuffman8x8_JPEG_1u16s_C1() after checking if any of the 9 parameter is NULL....&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Any reason why IPP include debug code in release builds, this is really slowing performance down...&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;y8_ownpj_ippiDecodeHuffman8x8_JPEG_1u16s_C1 &amp;lt;&amp;lt; this code just calls the internal version we dont have access to.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B70"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1:  push   rbx"	""	"21"	"31"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B71"	""	"  push   rsi"	""	"42"	"12"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B72"	""	"  push   rdi"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B73"	""	"  push   r12"	""	"4"	"1"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B75"	""	"  push   r13"	""	"7"	"24"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B77"	""	"  push   r14"	""	"39"	"7"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B79"	""	"  push   r15"	""	"2"	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B7B"	""	"  push   rbp"	""	"7"	"7"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B7C"	""	"  sub   rsp, 0x58h"	""	"14"	"15"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B80"	""	"  mov   rbp, rcx"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B83"	""	"  mov   r12, r9"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B86"	""	"  mov   rdi, r8"	""	"10"	"13"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B89"	""	"  mov   esi, edx"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B8B"	""	"  test   rbp, rbp"	""	""	"1"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B8E"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B94"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x24:  test   esi, esi"	""	"6"	"20"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B96"	""	"  jnge   y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x331"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B9C"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x2c:  test   rdi, rdi"	""	"5"	"6"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106B9F"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BA5"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x35:  test   r12, r12"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BA8"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BAE"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x3e:  mov   r14, QWORD PTR [rsp+0c0h]"	""	""	"1"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BB6"	""	"  test   r14, r14"	""	"15"	"26"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BB9"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BBF"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x4f:  mov   rax, QWORD PTR [rsp+0c8h]"	""	"1"	"1"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BC7"	""	"  test   rax, rax"	""	"2"	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BCA"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BD0"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x60:  mov   r15, QWORD PTR [rsp+0d0h]"	""	"1"	"1"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BD8"	""	"  test   r15, r15"	""	"8"	"21"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BDB"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BE1"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x71:  mov   rax, QWORD PTR [rsp+0d8h]"	""	"2"	"8"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BE9"	""	"  test   rax, rax"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BEC"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BF2"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x82:  mov   rbx, QWORD PTR [rsp+0e0h]"	""	"11"	"21"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BFA"	""	"  test   rbx, rbx"	""	"2"	"2"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106BFD"	""	"  je    y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x31b"	""	""	"1"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C03"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0x93:  mov   rax, QWORD PTR [rsp+0c8h]"	""	"2"	"4"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C0B"	""	"  mov   rcx, rbp"	""	"5"	"21"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C0E"	""	"  mov   r10, QWORD PTR [rsp+0d8h]"	""	""	"3"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C16"	""	"  mov   edx, esi"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C18"	""	"  mov   r8, rdi"	""	"1"	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C1B"	""	"  mov   r9, r12"	""	"9"	"20"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C1E"	""	"  mov   QWORD PTR [rsp+020h], r14"	""	"3"	"1"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C23"	""	"  mov   r13d, 0x40h"	""	"4"	"8"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C29"	""	"  mov   QWORD PTR [rsp+028h], rax"	""	"29"	"5"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C2E"	""	"  mov   QWORD PTR [rsp+030h], r15"	""	"12"	"18"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C33"	""	"  mov   QWORD PTR [rsp+038h], r10"	""	"3"	"2"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C38"	""	"  mov   QWORD PTR [rsp+040h], rbx"	""	"5"	"2"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C3D"	""	"  call   y8_ownpj_DecodeHuffman8x8_JPEG_1u16s_C1"	""	"37"	"15"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C42"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0xd2:  test   eax, eax"	""	"13"	"13"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C44"	""	"  jnz   y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0xe9"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C46"	""	"y8_ippiDecodeHuffman8x8_JPEG_1u16s_C1+0xd6:  xor   eax, eax"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C48"	""	"  add   rsp, 0x58h"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C4C"	""	"  pop   rbp"	""	"15"	"11"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C4D"	""	"  pop   r15"	""	""	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C4F"	""	"  pop   r14"	""	"1"	""	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C51"	""	"  pop   r13"	""	"6"	"3"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C53"	""	"  pop   r12"	""	"5"	"6"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C55"	""	"  pop   rdi"	""	"11"	"3"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C56"	""	"  pop   rsi"	""	"12"	"4"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C57"	""	"  pop   rbx"	""	"8"	"3"	""&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;"0x106C58"	""	"  ret   "	""	"7"	"8"	""&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 03 Apr 2012 21:46:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-release-still-include-debug-code/m-p/778263#M1320</guid>
      <dc:creator>sschaem</dc:creator>
      <dc:date>2012-04-03T21:46:44Z</dc:date>
    </item>
    <item>
      <title>IPP release still include debug code - No, it does not</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-release-still-include-debug-code/m-p/778264#M1321</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1333499357062="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=261903" href="https://community.intel.com/en-us/profile/261903/" class="basic"&gt;sschaem@adobe.com&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;Bold statement but when I profile IPP code, a large portion is spent just checking if paramters are NULL and not doing actual work. &lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;This level of &lt;SPAN style="text-decoration: underline;"&gt;paramter check is fine for debuging&lt;/SPAN&gt; and high level OS function, &lt;SPAN style="text-decoration: underline;"&gt;but is unnaceptable&lt;/SPAN&gt; in a release build...&lt;/DIV&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;In overall, I reallydefend these verifications and for many kinds ofapplications, not just real-time or&lt;BR /&gt;mission critical,&lt;SPAN style="text-decoration: underline;"&gt;they are needed&lt;/SPAN&gt;.&lt;BR /&gt;&lt;BR /&gt;Verification of all input parameters, regardless of Debug or Release configurations, is a commonpractice and&lt;BR /&gt;&lt;SPAN style="text-decoration: underline;"&gt;it guarantees that a processing inside of a functionstarts with all right values&lt;/SPAN&gt;.&lt;STRONG&gt;Intel&lt;/STRONG&gt;'s approach is right and a stability&lt;BR /&gt;of an application that uses &lt;STRONG&gt;IPP&lt;/STRONG&gt;isa Top-Priority for &lt;STRONG&gt;Intel&lt;/STRONG&gt;, I think.&lt;BR /&gt;&lt;BR /&gt;Do these verificationsaffect aperformance of your computations?&lt;BR /&gt;&lt;BR /&gt;Ifsome software crashesbecause oflack of verifications, for example &lt;STRONG&gt;Adobe&lt;/STRONG&gt;,many userswill be unhappy.&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;/P&gt;</description>
      <pubDate>Wed, 04 Apr 2012 00:53:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-release-still-include-debug-code/m-p/778264#M1321</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-04-04T00:53:27Z</dc:date>
    </item>
    <item>
      <title>IPP release still include debug code - No, it does not</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-release-still-include-debug-code/m-p/778265#M1322</link>
      <description>&lt;P&gt;Hi Sergey, &lt;BR /&gt;&lt;BR /&gt;Thanks for the comments. I checked with our developer. Theymade a similar point: &lt;/P&gt;&lt;P&gt;"IPP release still include debug code - No, it does not.the verficationare needed."&lt;BR /&gt;&lt;BR /&gt;Best Regards,&lt;BR /&gt;Ying &lt;/P&gt;</description>
      <pubDate>Fri, 06 Apr 2012 08:55:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-release-still-include-debug-code/m-p/778265#M1322</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2012-04-06T08:55:25Z</dc:date>
    </item>
  </channel>
</rss>

