I used ippiDFT functions from "Intel Parallel Studio XE 2016" on platform Windows 7 x64. For ours purpose we would like to use DFT functions with multi-threaded version. This functions works correctly with different number of threads. So far there is no problem. The problem is, when we compile our application with openmp flag, DFT starts produces garbage when threads number used to calculation is different than 1. I prepared test source codes in attachments. But before that, let me write more details.
1) Scenario 1 - without "openmp" compilation flag
It doesn't matter if I use static or dynamic linking, prepared codes works correctly, and produces correct results for all configuration threads. In my case it is 1...8 Threads. That's fine.
2) Scenario 2 - with "openmp" compilation flag.
Right now linking method have matter. If we compile with dynamic linking, still everything looks correct, and results are correct for each threads configuration. But when I use static linking, DFT produces good results only for one thread. Other thread configuration produces garbage, without reporting any error from function call. This problem occur even function calls are not using omp statements.
- CPU: i7- 4790K
- Windows 7 x64
- Intel Parallel Studio XE 2016, IPP version 9.0.4, build date: Aug 4 2016.
- Visual Studio 2015 Community edition
- Linking method in both scenarios is multi-threaded
Sample code is in attachment.
Is this bug? or there is any reasonable explanation?
Thank you in advance.
Internal threading has been deprecated from the version 8.2 due to issues about interoperability with other threading models.
Please refer this article : https://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-threadin...
It is highly recommended to use the single-threaded version with application level threading.
Thank you for reply! I know that single threaded version is recommended and we will use them. But during our performance test with other libraries we spotted this unusual behavior. I saw before article that you provided, but there is not clear answer for our question. So, we reported it here. Maybe this is not big problem because dynamically linked version works. Interesting thing is that problem occur even when IPP functions are called from one thread. By the way, it means that Intel doesn't provide support for deprecated version?
Yes I'm afraid that we don't provide technical support for deprecated features. Please try using single thread library installation if you encounter the problem by calling only one thread using multi-threading IPP.