Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
6621 Discussions

Problem with ippiNormDiff_L1_16s in IPP 8.2

Alexander_Karsakov
159 Views

Hello,

I have a strange result for ippiNormDiff_L1_16s_C1R function in IPP 8.2. Code for reproducing below:

short a[21*15] = { 10, 8, 7, 2, 3, 3, 6, 2, 2, 4, 7, 10, 8, 8, 6, 7, 5, 10, 7, 7, 3, 2, 3, 2, 6, 2, 6, 2, 9, 9, 9, 2, 4,
                10, 5, 5, 9, 2, 6, 7, 9, 9, 6, 3, 10, 7, 3, 9, 2, 10, 9, 10, 8, 8, 10, 5, 10, 9, 5, 4, 4, 2, 3, 5,
                4, 9, 5, 3, 7, 8, 2, 2, 7, 9, 10, 5, 5, 10, 5, 6, 5, 6, 7, 4, 10, 10, 3, 7, 2, 10, 7, 9, 2, 4, 9, 2,
                6, 6, 6, 6, 8, 3, 7, 10, 5, 5, 2, 4, 4, 7, 8, 10, 2, 8, 4, 2, 10, 3, 6, 4, 10, 9, 6, 10, 8, 5, 7, 8,
                10, 9, 3, 8, 4, 2, 3, 5, 3, 2, 3, 7, 4, 9, 10, 9, 8, 3, 4, 4, 9, 8, 7, 4, 10, 6, 2, 5, 10, 6, 3, 5,
                5, 10, 4, 9, 8, 5, 6, 6, 8, 7, 8, 6, 3, 4, 8, 8, 2, 6, 3, 3, 9, 10, 5, 8, 10, 9, 2, 8, 6, 7, 2, 10,
                7, 2, 8, 10, 5, 6, 4, 10, 9, 3, 6, 9, 2, 9, 10, 9, 8, 10, 5, 4, 10, 5, 10, 4, 4, 7, 10, 6, 8, 4, 7,
                5, 7, 5, 9, 4, 2, 2, 8, 5, 9, 3, 7, 2, 3, 2, 3, 8, 5, 9, 4, 4, 5, 4, 9, 7, 7, 8, 7, 5, 3, 8, 3, 6, 10,
                10, 3, 6, 9, 4, 4, 9, 4, 5, 9, 9, 4, 3, 8, 4, 3, 4, 6, 6, 10, 8, 5, 3, 8, 4, 6, 7, 9, 9, 9, 4, 2, 9,
                8, 5, 2, 10, 3, 4, 10, 5, 6, 3, 6, 10, 3, 5, 5, 5, 8, 6, 7, 8, 5, 3, 2, 2, 10 };

short b[21*15] = { 1358, -1177, 167, -1533, 62, -1416, -1002, 216, -844, 970, 1228, -663, 1503, 403,
                347, 621, -760, -920, 999, 1684, 809, 1507, -1383, -860, 1043, 1539, -1332, -437,
                54, -1033, 475, 183, -1401, 77, -963, 208, 1424, 21, 1295, 285, -69, -132, -204,
                884, 154, -1467, 1004, -1366, 1461, -190, 1564, 493, -238, 495, 853, -1316, 1057,
                -1534, 1107, 72, -284, -643, -1171, 509, 116, 1112, 177, 108, -402, 1422, -219,
                1163, -848, -502, 97, -1296, -498, 18, -185, 1438, -780, -1207, 1451, 1064, 876,
                -814, -483, 716, -1408, 1693, 1030, 228, -610, 486, 1076, 1540, 848, 1384, -831,
                -865, 452, -562, -611, 429, -740, 160, -8, 220, 1421, -1193, 860, -1422, 422,
                -1519, 1641, -1512, -251, 1151, -490, 150, 246, 1119, -822, -1057, 991, 979, 571,
                -692, 1399, -32, 1306, 1542, 1568, -1095, 1346, -736, -895, 1427, 1067, 488,
                -1430, 314, -85, -808, 672, 461, 960, 1117, 993, 729, -348, 1510, 1658, 1151, 570,
                -847, 704, 1219, -1103, -1176, 1590, -991, 893, -432, -194, -719, 811, -286, 1266,
                592, 895, -1321, -1531, 1051, -1352, -1355, -1109, -37, -1300, 875, 912, -1181,
                -339, 1431, 579, -1048, 752, 314, -1416, 1070, -1111, 911, -679, 1648, 340, 751,
                -1070, 758, 261, -1365, 681, 1505, -632, 1702, 705, -1001, 925, -736, 1432, -904,
                301, -1246, -448, 1177, 342, 1500, 1015, 767, 486, -812, -970, 999, -700, 571, 452,
                512, 802, -313, 1625, -184, 830, 1175, 894, 1233, -1317, 958, 98, 974, 1289, 947,
                -1449, -206, -109, 1332, -226, -190, 1247, 725, 227, -167, 1083, -1180, 789, -697,
                -683, -1440, -283, -1, -804, -217, 927, -90, 1321, 139, -166, 1015, -14, 1583,
                -682, 373, 1504, -1248, 1456, 215, 1105, -1338, -322, -389, 682, 694, 642, 1253,
                1306, 605, 468, 1296, 669, -417, -360, -479, 551, -476, -664, -301, -1476, 1603,
                229, -43, -1280, 1668, 1550, 556, 407, 853, 1516, -665, -1324, -366, 510, 1589,
                1248, 330, 1371, 1545, -147 };

IppiSize size = { 21, 15 };
Ipp64f res1;
ippiNormDiff_L1_16s_C1R(a, 21*sizeof(short), b, 21*sizeof(short), size, &res1);

double res2 = 0;
for (int i=0; i<21*15; i++)
    res2 += abs(a - b);

printf("IPP result = %f, my result = %f\n", res1, res2);

The result is:

IPP result = 263390.000000, my result = 263381.000000

Please look at this problem.

Best regards,

Alexander.

0 Kudos
1 Solution
Igor_A_Intel
Employee
159 Views

Hi Alexander,

thank you for your report/finding - I've reproduced the issue - it exists only in AVX2 code version - will be fixed in the next IPP version.

regards, Igor

View solution in original post

5 Replies
Alexander_Karsakov
159 Views

My configuration:

  • OS: Windows 7 HB
  • Compiler: VC 17
  • Processor: Intel Core i5 4570
  • Intel® Parallel Studio XE Composer Edition for C++ Windows, package ID: w_ccompxe_2015.0.108.
Igor_A_Intel
Employee
160 Views

Hi Alexander,

thank you for your report/finding - I've reproduced the issue - it exists only in AVX2 code version - will be fixed in the next IPP version.

regards, Igor

Alexander_Karsakov
159 Views

Hi Igor,

In IPPICV 8.2.1 we still have problems with ippiNormDiff_L1_16s_C1R. Now it failed another case (code for reproducing in attachment). Could you please take a look?

Best regards,

Alexander.

 

Igor_A_Intel
Employee
159 Views

Hi Alexander,

got your message - will take a look and then answer - guess in 1 or 2 days.

regards, Igor

Gennady_F_Intel
Moderator
159 Views

hello!

the fix of the issue has been incorporated into IPP v.9.0 beta released recently.  You may evaluate the beta version and let us know how it will work. Here is the output which received with this version. 

ippIP AVX2 (l9 threaded) 9.0.0 Beta (r45861)
SSE    :Y
SSE2   :Y
SSE3   :Y
SSSE3  :Y
SSE41  :Y
SSE42  :Y
AVX    :Y
AVX2   :Y
----------
OS Enabled AVX :Y
AES            :Y
CLMUL          :Y
RDRAND         :Y
F16C           :Y
IPP = 29802861.000000, reference result = 29802861.000000
Press any key to continue . . .

Reply