| # Exclude these from libMLIR.so because the JIT infrastructure |
| # is a big dependency which most don't need. |
| |
| set(LLVM_OPTIONAL_SOURCES |
| AsyncRuntime.cpp |
| CRunnerUtils.cpp |
| CudaRuntimeWrappers.cpp |
| SparseTensorUtils.cpp |
| ExecutionEngine.cpp |
| RocmRuntimeWrappers.cpp |
| RunnerUtils.cpp |
| OptUtils.cpp |
| JitRunner.cpp |
| ) |
| |
| add_mlir_library(MLIRExecutionEngine |
| ExecutionEngine.cpp |
| OptUtils.cpp |
| |
| EXCLUDE_FROM_LIBMLIR |
| |
| ADDITIONAL_HEADER_DIRS |
| ${MLIR_MAIN_INCLUDE_DIR}/mlir/ExecutionEngine |
| |
| DEPENDS |
| intrinsics_gen |
| |
| LINK_COMPONENTS |
| ${LLVM_NATIVE_ARCH}AsmParser |
| Core |
| Coroutines |
| ExecutionEngine |
| Object |
| OrcJIT |
| JITLink |
| Analysis |
| AggressiveInstCombine |
| InstCombine |
| MC |
| ScalarOpts |
| Target |
| Vectorize |
| TransformUtils |
| nativecodegen |
| IPO |
| |
| LINK_LIBS PUBLIC |
| MLIRLLVMIR |
| MLIRLLVMToLLVMIRTranslation |
| MLIRTargetLLVMIRExport |
| ) |
| |
| get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS) |
| add_mlir_library(MLIRJitRunner |
| JitRunner.cpp |
| |
| EXCLUDE_FROM_LIBMLIR |
| |
| DEPENDS |
| intrinsics_gen |
| |
| LINK_COMPONENTS |
| Core |
| OrcJIT |
| JITLink |
| |
| LINK_LIBS PUBLIC |
| ${dialect_libs} |
| MLIRExecutionEngine |
| MLIRIR |
| MLIRParser |
| MLIRStandard |
| MLIRLLVMToLLVMIRTranslation |
| MLIRTargetLLVMIRExport |
| MLIRTransforms |
| MLIRStandardToLLVM |
| MLIRSupport |
| ) |
| |
| add_mlir_library(mlir_c_runner_utils |
| SHARED |
| CRunnerUtils.cpp |
| SparseTensorUtils.cpp |
| |
| EXCLUDE_FROM_LIBMLIR |
| ) |
| set_property(TARGET mlir_c_runner_utils PROPERTY CXX_STANDARD 11) |
| target_compile_definitions(mlir_c_runner_utils PRIVATE mlir_c_runner_utils_EXPORTS) |
| |
| add_mlir_library(mlir_runner_utils |
| SHARED |
| RunnerUtils.cpp |
| |
| EXCLUDE_FROM_LIBMLIR |
| ) |
| target_compile_definitions(mlir_runner_utils PRIVATE mlir_runner_utils_EXPORTS) |
| |
| add_mlir_library(mlir_async_runtime |
| SHARED |
| AsyncRuntime.cpp |
| |
| EXCLUDE_FROM_LIBMLIR |
| |
| LINK_LIBS PUBLIC |
| ${LLVM_PTHREAD_LIB} |
| ) |
| set_property(TARGET mlir_async_runtime PROPERTY CXX_VISIBILITY_PRESET hidden) |
| target_compile_definitions(mlir_async_runtime PRIVATE mlir_async_runtime_EXPORTS) |
| |
| if(MLIR_ENABLE_CUDA_RUNNER) |
| # Configure CUDA support. Using check_language first allows us to give a |
| # custom error message. |
| include(CheckLanguage) |
| check_language(CUDA) |
| if (CMAKE_CUDA_COMPILER) |
| enable_language(CUDA) |
| else() |
| message(SEND_ERROR |
| "Building the mlir cuda runner requires a working CUDA install") |
| endif() |
| |
| # We need the libcuda.so library. |
| find_library(CUDA_RUNTIME_LIBRARY cuda) |
| |
| add_mlir_library(mlir_cuda_runtime |
| SHARED |
| CudaRuntimeWrappers.cpp |
| |
| EXCLUDE_FROM_LIBMLIR |
| ) |
| set_property(TARGET mlir_cuda_runtime PROPERTY CXX_STANDARD 14) |
| target_include_directories(mlir_cuda_runtime |
| PRIVATE |
| ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} |
| ) |
| target_link_libraries(mlir_cuda_runtime |
| PRIVATE |
| ${CUDA_RUNTIME_LIBRARY} |
| ) |
| endif() |
| |
| if(MLIR_ENABLE_ROCM_RUNNER) |
| # Configure ROCm support. |
| if (NOT DEFINED ROCM_PATH) |
| if (NOT DEFINED ENV{ROCM_PATH}) |
| set(ROCM_PATH "/opt/rocm" CACHE PATH "Path to which ROCm has been installed") |
| else() |
| set(ROCM_PATH $ENV{ROCM_PATH} CACHE PATH "Path to which ROCm has been installed") |
| endif() |
| set(HIP_PATH "${ROCM_PATH}/hip" CACHE PATH "Path to which HIP has been installed") |
| endif() |
| set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH}) |
| find_package(HIP) |
| if (NOT HIP_FOUND) |
| message(SEND_ERROR "Building mlir with ROCm support requires a working ROCm and HIP install") |
| else() |
| message(STATUS "ROCm HIP version: ${HIP_VERSION}") |
| endif() |
| |
| # Locate HIP runtime library. |
| find_library(ROCM_RUNTIME_LIBRARY amdhip64 |
| PATHS "${HIP_PATH}/lib") |
| if (NOT ROCM_RUNTIME_LIBRARY) |
| message(SEND_ERROR "Could not locate ROCm HIP runtime library") |
| else() |
| message(STATUS "ROCm HIP runtime lib: ${ROCM_RUNTIME_LIBRARY}") |
| endif() |
| |
| if (NOT DEFINED ROCM_TEST_CHIPSET) |
| execute_process(COMMAND "${ROCM_PATH}/bin/rocm_agent_enumerator" |
| OUTPUT_VARIABLE AGENTS_STRING |
| ERROR_VARIABLE AGENTS_STRING |
| RESULT_VARIABLE AGENT_ENUMERATOR_RESULT) |
| |
| if (NOT AGENT_ENUMERATOR_RESULT EQUAL 0) |
| message(SEND_ERROR "Could not run rocm_agent_enumerator and ROCM_TEST_CHIPSET is not defined") |
| set(AGENTS_STRING "") |
| endif() |
| string(STRIP AGENTS_STRING ${AGENTS_STRING}) |
| string(REPLACE "\n" ";" AGENTS_LIST ${AGENTS_STRING}) |
| list(FILTER AGENTS_LIST EXCLUDE REGEX "gfx000") |
| if (AGENTS_LIST STREQUAL "") |
| message(SEND_ERROR "No non-CPU ROCm agents found on the system, and ROCM_TEST_CHIPSET is not defined") |
| else() |
| list(GET AGENTS_LIST 0 FIRST_AGENT) |
| set(ROCM_TEST_CHIPSET ${FIRST_AGENT} CACHE STRING "Chipset for which to compile ROCm integration tests") |
| message(STATUS "Compiling integration tests for ${ROCM_TEST_CHIPSET}") |
| endif() |
| endif() |
| |
| add_mlir_library(mlir_rocm_runtime |
| SHARED |
| RocmRuntimeWrappers.cpp |
| |
| EXCLUDE_FROM_LIBMLIR |
| ) |
| target_compile_definitions(mlir_rocm_runtime |
| PRIVATE |
| __HIP_PLATFORM_HCC__ |
| ) |
| target_include_directories(mlir_rocm_runtime |
| PRIVATE |
| ${HIP_PATH}/include |
| ${ROCM_PATH}/include |
| ) |
| set_property(TARGET mlir_rocm_runtime |
| PROPERTY INSTALL_RPATH_USE_LINK_PATH ON) |
| |
| target_link_libraries(mlir_rocm_runtime |
| PUBLIC |
| ${ROCM_RUNTIME_LIBRARY} |
| ) |
| endif() |