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

ippsDiv_32f() function changed (ever so slightly) after IPP 9.0.2

Warner__Mark
Beginner
1,193 Views

Some time after IPP 9 update 2, the ippsDiv_32f() function changed (ever so slightly).  It does appear to stablize in 2018, 2019 and 2020.

What was the nature of the change ?

Is ippsDiv_32f() anything like ippsDiv_32f_A11(), ippsDiv_32_A21f() or ippsDiv_32_A24f() ? How does it differ ?

0 Kudos
8 Replies
Gennady_F_Intel
Moderator
1,193 Views

regarding _A11,_A_21 and _A24 modes - these are related to the fixed-accuracy implementation. Please refer more details follow this documentation - https://software.intel.com/en-us/ipp-dev-reference-fixed-accuracy-arithmetic-functions

0 Kudos
Pavel_B_Intel1
Employee
1,193 Views

Hello,

I see absolutely the same code in IPP 9.0 and in IPP 2020 for the function. What changes do you see? Could you give more details?

Pavel

0 Kudos
Warner__Mark
Beginner
1,193 Views
I'm seeing the LSBs of the mantissa portion of the float varying by 0-2 (i.e. bottom 2 bits, except a handful of carry situations) between IPP9.0.2 and IPP2020.0 for most (i.e. >50%) of the results. Intel (R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz IPP version 9.0.2 (r49912) targetCpu: e9 IPP version 2020.0.0 Gold (r0x0f66e7e3) targetCpu: e9 dividend / divisor= quotient divisor dividend quotient (9.0.2) (2020.0) 0x499853D7 0x48B28250 0x3E96000D 0x3E96000E 0x4977F349 0x49D50ABA 0x3FDBF551 0x3FDBF550 0x497B12B0 0x49E034F9 0x3FE49B52 0x3FE49B51 0x491FE6B2 0x496BC276 0x3FBCB96A 0x3FBCB96B hex equivalent of Ipp32f
0 Kudos
Warner__Mark
Beginner
1,193 Views

I understand the precision of ippsDiv_32f_A11(), ippsDiv_32f_A21() or ippsDiv_32f_A24(), but, given an IEEE 32-bit float has a mantissa of 23-bit plus an assumed leading 1.0, there can't be anything better than ippsDiv_32f_A24() quality but ippsDiv_32f() returns a different value than any of the A11, A21 or A24 divide routines.  In fact, all 4 routines tend to return a different value for the same operation.

 

The differences I'm seeing in ippsDiv_32f() between the 9.0.2 and the 2020.0 results look much like a change in rounding.

0 Kudos
Pavel_B_Intel1
Employee
1,193 Views

Hello Mark,

thanks for data, we will investigate it. Somebody from the IPP team will report here investigation results.

Pavel

0 Kudos
Warner__Mark
Beginner
1,195 Views

I check IPP 2017.0.3 and it is the same as IPP 9.0.2, so the change occurs between 2017.0.3 and 2018.0.4

0 Kudos
Alena_E_Intel
Employee
1,195 Views

Hello, Mark.

The ippsDiv_32f function in version 9.0.2, when optimizing the AVX-512, worked worse than on the AVX2, therefore, since version 2018, for the sake of performance, the accuracy has been reduced.
First of all, our functions are focused on performance, and not on detailed accuracy.

Alena

0 Kudos
Warner__Mark
Beginner
1,195 Views

Thanx for the info

0 Kudos
Reply