在调用mkl库时,发现了这样一个bug:
如果MKL_Set_Threading_Layer函数放在fftw_malloc函数之后,该函数调用失败,除非是将该函数放在fftw_malloc函数之前。
例如:
d=(fftw_complex*)fftw_malloc(1024*sizeof(fftw_complex));
MKL_Set_Threading_Layer(MKL_THREADING_SEQUENTIAL);
这样code时,mkl库计算将无法启动单线程,仍然按照多线程进行矩阵运算。
但是将上述两个函数位置前后颠倒后,就可以执行了:
MKL_Set_Threading_Layer(MKL_THREADING_SEQUENTIAL);
d=(fftw_complex*)fftw_malloc(1024*sizeof(fftw_complex));
这是怎么一回事呢