Hello,
I am dealing with the problem of different results for the same input data. These differences depends on PC type. After analysis of the problem it turned out the differences come from ippiFFTFwd_CToC_32fc_C1R function.
For example for the same source data and fft spec IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate:
- on PC with cpu Intel Core 2 Quad Q8400 (ippGetCpuType returns ippCpuPenryn, ippi version y8) one of element in destination array is: re=244466.937500 im=-545828.250000
- on PC with cpu Intel Xeon E5-1660 (ippGetCpuType returns ippCpuAVX, ippi version e9) the seme element in destination array is: re=244466.812500 im=-545828.250000
It gives difference in real values > 0.1. Is it normal?
I prepared sample program (proof of concept) working as follows:
1. ippInitCpu(ippCpuPenryn);
2. do FFTFwd: source -> destPenryn
3. ippInitCpu(ippCpuAVX);
4. do FFTFwd: source -> destAVX
5. compare elements in destPenryn and destAVX and print out differences where abs > 0.001
Then I ran it on Intel Xeon E5-1660 and got a lots of differences.
There is one more note: this problem occurred on x64 version. When I built this program on 32-bit platform destPenryn and destAVX were exactly the same (ippi versions respectively p8 for Penryn and g9 for AVX).
I have put this sample program in attachments just in case you'd find it useful (VS2012).
My IPP version is 7.1 (ippi 7.1.0 r36264).
Could you confirm this is bug or normal working? Is it related to floating-point operations? Then what accuracy is guaranteed and why it depends on platform type?
Tkank you in advance.
Best regards,
Kamil Żukowski