Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Problem with ippiNormDiff_L1_16s in IPP 8.2

Alexander_Karsakov
Einsteiger
1.741Aufrufe

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 Lösung
Igor_A_Intel
Mitarbeiter
1.741Aufrufe

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

Lösung in ursprünglichem Beitrag anzeigen

5 Antworten
Alexander_Karsakov
Einsteiger
1.741Aufrufe

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
Mitarbeiter
1.742Aufrufe

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
Einsteiger
1.741Aufrufe

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
Mitarbeiter
1.741Aufrufe

Hi Alexander,

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

regards, Igor

Gennady_F_Intel
Moderator
1.741Aufrufe

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 . . .

Antworten