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
초급자
1,740 조회수

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 포인트
1 솔루션
Igor_A_Intel
직원
1,740 조회수

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

원본 게시물의 솔루션 보기

0 포인트
5 응답
Alexander_Karsakov
초급자
1,740 조회수

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.
0 포인트
Igor_A_Intel
직원
1,741 조회수

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

0 포인트
Alexander_Karsakov
초급자
1,740 조회수

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.

 

0 포인트
Igor_A_Intel
직원
1,740 조회수

Hi Alexander,

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

regards, Igor

0 포인트
Gennady_F_Intel
중재자
1,740 조회수

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

0 포인트
응답