I would like to use both TBB and MKL in the same project. The problem is MKL comes with its own tbb binary.
I see that there is a tbb binary (libtbb.so / tbb.dll) included with MKL and there is a standalone TBB distribution which is included into "Intel® Performance Libraries". My guess is those are compatible as long as they come from the same version of "Intel® Performance Libraries", .e.g 2018.0.3.
But there is also open source TBB. When compiled it produced its own "tbb.dll". Can it be used in the same project with MKL and MKL supplied tbb.dll?
I see another potential incompatibility when using C++11. According to this page problem doesn't exist when using GCC 4.8 or later. Is it OK to replace "libtbb.so" from MKL with one compiled from the latest open source version?
Any TBB version is binary backward compatible with all previous versions of TBB (see similar question: Binary backwards compatibility). As for C++ standard library version, the idea is similar: any TBB version built with newer C++ standard library version is compatible with the same (or older) TBB version built with the same or older C++ standard library version. However, pay attention that newer TBB version built with older C++ standard library version is not compatible with older TBB version built with newer C++ standard library version.