Math Kernel Library Developer Guide
If you want to integrate oneMKL into your CMake projects, starting with the Intel® oneAPI Math Kernel Library (oneMKL) 2021.3 release, MKLConfig.cmake is provided as part of the package and installation. MKLConfig.cmake supports all oneMKL configurations, compilers, and runtimes, as the oneMKL product itself. Help/usage is provided in the top section of MKLConfig.cmake.
my_test/ |_ build/ <-- Out-of-source build directory |_ CMakeLists.txt <-- User side project's CMakeLists.txt |_ app.c <-- Source file that uses oneMKL API
CmakeLists.txt
cmake_minimum_required(VERSION 3.13) enable_testing() project(oneMKL_Example LANGUAGES C) find_package(MKL CONFIG REQUIRED) #message(STATUS "${MKL_IMPORTED_TARGETS}") #Provides available list of targets based on input add_executable(myapp app.c) target_compile_options(myapp PUBLIC $<TARGET_PROPERTY:MKL::MKL_C,INTERFACE_COMPILE_OPTIONS>) target_include_directories(myapp PUBLIC $<TARGET_PROPERTY:MKL::MKL_C,INTERFACE_INCLUDE_DIRECTORIES>) target_link_libraries(myapp PUBLIC $<LINK_ONLY:MKL::MKL_C>) add_test(NAME mytest COMMAND myapp) if(MKL_ENV) set_tests_properties(mytest PROPERTIES ENVIRONMENT "${MKL_ENV}") endif()
Command line
# Source the compiler and runtime beforehand
build$ cmake .. -DCMAKE_C_COMPILER=icc
build$ cmake --build . && ctest
# If MKLConfig.cmake is not located by CMake automatically, its path can be manually specified by MKL_DIR:
build$ cmake .. -DCMAKE_C_COMPILER=icc -DMKL_DIR=<Full path to MKLConfig.cmake>