Problems with DSP module and MKL lib

I cant get MKL working with the new dsp module in Windows with JUCE 5.3.2 and VS 2017

jucer Header Search Path: “C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.3.210\windows\mkl\include”
jucer Extra library search path: “C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.3.210\windows\mkl\lib\ia32_win”

I get:
1>------ Build started: Project: Plugin_VST, Configuration: Release32 Win32 ------
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiCreateDescriptor_d_md
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiSetValue
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiCreateDescriptor
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiFreeDescriptor
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiComputeForward
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiCommitDescriptor
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiCreateDescriptor_s_md
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiComputeBackward
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiCreateDescriptor_d_1d
1>Plugin.lib(include_juce_dsp.obj) : error LNK2001: unresolved external symbol _DftiCreateDescriptor_s_1d

Any help?

Are you actually linking the library? What is the content of the “External Libraries to Link” field? What does the compilation link line look like?

Hi t0m, I was able to link it, but I do not notice any improvement in performance compared with native juce.
The External libs to link in projucer are:

mkl_intel_c.lib 
mkl_sequential.lib
mkl_core.lib

I don’t know if MKL is working now, (it’s activated from dsp_module, and the compiler and linker do not throw any errors)

Put breakpoints in the Juce code where the MKL stuff is called…

maybe I misunderstood, I use the dsp module only for oversampling, I thought that the filters were processed by mkl, but not <?>

I guess you didn’t get performance improvements as you choose the wrong CPU architecture. Bascially all modern conventional CPU use 64 bit architecture, so the right commands to add the MKL frameworks are:


If you want further performance increase by parallelizing the FFT, you have to replace mkl_sequential.lib with mkl_tbb_thread.lib and also libiomp5md.lib (which is another folder, so the \compiler\lib\intel64_win folder has to be added too to the extra library search paths).

See more here what librariers to correctly link: https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor
https://software.intel.com/en-us/mkl-developer-reference-c-examples-of-using-openmp-threading-for-fft-computation