Build an Intel® MKL program on Mac OS* with Intel® Fortran Compiler,
For example, compilers_and_libraries_2017.0.065,
> ifort main. f -o main -L$(MKLPATH) -I$(MKLINCLUDE) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lpthread
get compiler warning:
ld64 warning: indirect library libiomp5.dylib could not be loaded: file not found: libiomp5.dylib
Or runtime error:
dyld: Library not loaded: libiomp5.dylib
Referenced from: @rpath/libmkl_intel_thread.dylib
Reason: image not found
Root Cause :
Since MKL 11.2, the MKL libraries for Mac OS* have been integrated into Intel® C++/Fortran Compiler Professional Edition or Intel® C++/Fortran Composer XE for Mac OS* X. The default path of MKL libraries were changed from
for MKL version 11.0-11.1, please refer to "/opt/intel/Compiler/11.x/0xx/Frameworks/mkl/"
for MKL version 10.*, please refer to "/Library/Frameworks/Intel_MKL.framework/Versions/10.0.x.xxx/"
At the same time, the default OpenMP libraries (libiomp5.dylib, libiomp5.a) used by MKL are not in <MKL Libraries>/lib directory as in previous versions. They are under the Intel compiler lib directory now.
for instance, /opt/intel/compilers_and_libraries_2017.0.065/mac/compiler/lib
If you use openMP in c++ application and build with Intel C++ compiler, please firstly make sure you have enable the option "ICC Intel® C++ 17.*.***-Language" » "Process OpenMp Directives".
IPP is the same, please see the article XCode link error: "file not found: libiomp5.dylib"
For compiler warning:
Please refer to the MKL link line advisor.
the command line could be
>ifort main. f -o main -L$(MKLPATH) -I$(MKLINCLUDE) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -openmp -lpthread
ifort main. f -o main -L$(MKLPATH) -I$(MKLINCLUDE) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -L/opt/intel/compilers_and_libraries_2017.0.065/mac/compiler/lib -liomp5 -lpthread
Get runtime error:
like dyld: Library not loaded: @rpath/lib[mkl|ipp]_x.dylib
You did not set environment variables of MKL/IPP path or did not link your application to MKL/IPP path.
Please add the path of lib<product>.dylib in system environment before run binary (The <product> could be "mkl" or "ipp"). There are two methods to realize the solution:
In Xcode 7.3.1 Development Environment:
Click solution/application, select "All" and "Combined", then find "Linking", add "Runpath search path" like following:
If after set the MKL library and Compiler library, you still got the error dyld: Library not loaded: @rpath/libimp5.dylib,
please consider the solutions provided in https://software.intel.com/en-us/forums/intel-c-compiler/topic/698021
install_name_tool -change @rpath/libiomp5.dylib /opt/intel/compilers_and_libraries_2017.4.xxx/mac/compiler/lib/libiomp5.dylib yourapplication
adding -Wl,-rpath,@executable_path options to your build command line.
Before this solution, you must make sure you have already use Intel C++/Fortran compiler and set "Header Search Path" and "Library Search Path" and "Other Link Flags".
Learn more information about linking and compiling Intel MKL in Mac OS*, please see:
Compiling and linking MKL with Xcode*
How to link application against Intel MKL using XCode IDE
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804