We saw an issue in method ippsFIR64f_32f() (IPP 6.0.1.070). We use this method for real-time data filtering. We saw that after changing data length from 1600 samples to 1601 samples computer processor usage changes from 2% to near 100%. Whole test project for Visual Studio 2010 is attached.
Link Copied
#ifdef _OPENMP
#include
#define STRT_OMP_DIR_R 1600
#define STRT_OMP_FFT_R 1600
#define STRT_OMP_DIR_C 800
#ifdef FIR_OPT_HT
#define STRT_OMP_FFT_C 800
#else
#define STRT_OMP_FFT_C 800
#endif
#endif
so you see - there is one more implementation - FIR via FFT and different criterion for HT - we can't overload documentation with all this stuff...
100% CPU load isan issue of OMP version used -try to set the blocktime at the beginning of the application via either environment variable or API call, e.g.
set KMP_BLOCKTIME=200
or
kmp_set_defaults("KMP_BLOCKTIME=200");
or
kmp_set_blocktime(200);
this should decrease CPU usage. There is no oversubscription - nested threading is disabled by default.
Regards,
Igor
First of all we need to understand that the issue is really connected with blocktime - so could you try to set the environment variable
set KMP_BLOCKTIME=200
- if it solves your issue - then we can think on how to call OMP runtime functions from C#
Regards,
Igor
# if defined(_WIN32)
# define __KAI_KMPC_CONVENTION __cdecl
# else
# define __KAI_KMPC_CONVENTION
# endif
extern void __KAI_KMPC_CONVENTION kmp_set_blocktime (int);For more complete information about compiler optimizations, see our Optimization Notice.