Hi,
I’m struggling to get Intel IPP working with JUCE via Projucer & VS2022/Clang on Windows 11, which I’m pursuing in order to potentially accelerate dsp::convolution inside my VST3 plugins.
Could somebody please help me out with a clue as to what I’ve missed?
I haven’t yet found a consolidated step-by-step guide to activating IPP, but in a game of trial and error I’ve tried several combinations of the below steps that I found around the web (including from this thread):
- Installing the Intel [oneAPI Base Toolkit]. (Download the Intel® oneAPI Base Toolkit)
- Adding #include “ipp.h” in PluginProcessor.h
- Setting Projucer/Exporters/VS2022/Use IPP Library (oneAPI) = Static Library
- Setting Projucer/Exporters/VS2022/(deprecated) Use IPP Library = Single-Threaded Static Library
- Setting Projucer/Exporters/VS2022/Release/Header Search Paths = C:\Program Files (x86)\Intel\oneAPI\ipp\latest\include\ipp
- Setting Projucer/Exporters/VS2022/Release/Extra Library Search Paths = C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib
- Setting Projucer/Exporters/VS2022/Extra Preprocessor Definitions = DEFINE _IPP_SEQUENTIAL_STATIC 1 (h/t @PeterRoos)
- Alternatively adding atop my PluginProcessor.h #define _IPP_SEQUENTIAL_STATIC 1
- Checking for success by trying to hit a debugger breakpoint inside juce_FFT.cpp just before line 824 (in JUCE v7.0.9): static IntelPerformancePrimitivesFFT* create (const int order)
Note, my dsp::convolution code works OK with the normal JUCE FFT, i.e. without IPP.
Using step 8, I can build but I don’t encounter the breakpoint upon execution (per step 9).
Using step 7, building produces 28 errors “macro name must be an identifier”, almost all in line 9 of “MyPlugin_SharedCode”. I can’t find a source file of this name, but my build folder does contain a MyPlugin_SharedCode.log file, which is basically a copy of my VS2022 Output window, except each instance of the error is appended with “In file included from (built-in):422:”
I found this post discussing the “macro name must be an identifier” error, and tried setting Projucer/Settings/Use Global AppConfig Header = Enabled (h/t @reuk), which unfortunately didn’t help.
Any guidance much appreciated!
