2021-05-22 22:25:38 +08:00
|
|
|
if (MLIR_ENABLE_CUDA_CONVERSIONS)
|
2021-03-11 16:56:00 +08:00
|
|
|
set(NVPTX_LIBS
|
|
|
|
NVPTXCodeGen
|
|
|
|
NVPTXDesc
|
|
|
|
NVPTXInfo
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2021-05-22 22:25:38 +08:00
|
|
|
if (MLIR_ENABLE_ROCM_CONVERSIONS)
|
2021-03-19 15:22:50 +08:00
|
|
|
set(AMDGPU_LIBS
|
|
|
|
MCParser
|
|
|
|
AMDGPUAsmParser
|
|
|
|
AMDGPUCodeGen
|
|
|
|
AMDGPUDesc
|
|
|
|
AMDGPUInfo
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2021-06-23 12:47:46 +08:00
|
|
|
add_mlir_dialect_library(MLIRGPUOps
|
2019-04-29 18:00:25 +08:00
|
|
|
IR/GPUDialect.cpp
|
2021-06-23 12:47:46 +08:00
|
|
|
|
|
|
|
ADDITIONAL_HEADER_DIRS
|
|
|
|
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
|
|
|
|
|
|
|
|
DEPENDS
|
|
|
|
MLIRGPUOpsIncGen
|
|
|
|
MLIRGPUOpInterfacesIncGen
|
|
|
|
|
|
|
|
LINK_LIBS PUBLIC
|
|
|
|
MLIRDLTI
|
|
|
|
MLIRIR
|
|
|
|
MLIRMemRef
|
|
|
|
MLIRSideEffectInterfaces
|
|
|
|
MLIRSupport
|
2021-07-29 02:36:22 +08:00
|
|
|
MLIRLLVMIR
|
2021-06-23 12:47:46 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
add_mlir_dialect_library(MLIRGPUTransforms
|
[mlir] Add in-dialect lowering of gpu.all_reduce.
Reviewers: ftynse, nicolasvasilache, herhut
Reviewed By: ftynse, herhut
Subscribers: liufengdb, aartbik, herhut, merge_guards_bot, mgorny, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72129
2020-01-20 20:30:24 +08:00
|
|
|
Transforms/AllReduceLowering.cpp
|
2020-10-30 01:13:01 +08:00
|
|
|
Transforms/AsyncRegionRewriter.cpp
|
2019-05-23 17:16:18 +08:00
|
|
|
Transforms/KernelOutlining.cpp
|
2020-01-08 03:00:54 +08:00
|
|
|
Transforms/MemoryPromotion.cpp
|
2020-02-21 23:18:22 +08:00
|
|
|
Transforms/ParallelLoopMapper.cpp
|
2021-03-10 17:35:20 +08:00
|
|
|
Transforms/SerializeToBlob.cpp
|
2021-03-11 16:56:00 +08:00
|
|
|
Transforms/SerializeToCubin.cpp
|
2021-03-19 15:22:50 +08:00
|
|
|
Transforms/SerializeToHsaco.cpp
|
2019-04-29 18:00:25 +08:00
|
|
|
|
|
|
|
ADDITIONAL_HEADER_DIRS
|
2019-07-25 15:40:48 +08:00
|
|
|
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
|
2020-02-21 02:48:51 +08:00
|
|
|
|
2021-03-10 17:35:20 +08:00
|
|
|
LINK_COMPONENTS
|
|
|
|
Core
|
|
|
|
MC
|
2021-03-11 16:56:00 +08:00
|
|
|
${NVPTX_LIBS}
|
2021-03-19 15:22:50 +08:00
|
|
|
${AMDGPU_LIBS}
|
2021-03-10 17:35:20 +08:00
|
|
|
|
2020-02-21 02:48:51 +08:00
|
|
|
DEPENDS
|
2020-04-01 16:49:01 +08:00
|
|
|
MLIRGPUPassIncGen
|
2020-03-25 06:55:36 +08:00
|
|
|
MLIRParallelLoopMapperAttrGen
|
|
|
|
MLIRParallelLoopMapperEnumsGen
|
2020-05-05 03:41:43 +08:00
|
|
|
|
|
|
|
LINK_LIBS PUBLIC
|
2020-12-03 17:08:08 +08:00
|
|
|
MLIRAsync
|
2021-03-22 21:58:26 +08:00
|
|
|
MLIRDataLayoutInterfaces
|
2021-06-23 12:47:46 +08:00
|
|
|
MLIRGPUOps
|
2020-03-01 03:50:45 +08:00
|
|
|
MLIRIR
|
|
|
|
MLIRLLVMIR
|
2021-03-11 16:56:00 +08:00
|
|
|
MLIRLLVMToLLVMIRTranslation
|
2021-06-23 12:47:46 +08:00
|
|
|
MLIRMemRef
|
2020-03-01 03:51:04 +08:00
|
|
|
MLIRPass
|
2021-06-23 12:47:46 +08:00
|
|
|
MLIRSCF
|
2020-10-01 08:47:25 +08:00
|
|
|
MLIRStandard
|
2020-03-01 03:50:45 +08:00
|
|
|
MLIRSupport
|
|
|
|
MLIRTransformUtils
|
2020-02-21 02:48:51 +08:00
|
|
|
)
|
2021-03-11 16:56:00 +08:00
|
|
|
|
2021-05-22 22:25:38 +08:00
|
|
|
if(MLIR_ENABLE_CUDA_RUNNER)
|
|
|
|
if(NOT MLIR_ENABLE_CUDA_CONVERSIONS)
|
2021-03-11 16:56:00 +08:00
|
|
|
message(SEND_ERROR
|
|
|
|
"Building mlir with cuda support requires the NVPTX backend")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Configure CUDA language 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 mlir with cuda support requires a working CUDA install")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Enable gpu-to-cubin pass.
|
2021-06-23 12:47:46 +08:00
|
|
|
target_compile_definitions(obj.MLIRGPUTransforms
|
2021-03-11 16:56:00 +08:00
|
|
|
PRIVATE
|
|
|
|
MLIR_GPU_TO_CUBIN_PASS_ENABLE=1
|
|
|
|
)
|
|
|
|
|
|
|
|
# Add CUDA headers includes and the libcuda.so library.
|
2021-06-23 12:47:46 +08:00
|
|
|
target_include_directories(obj.MLIRGPUTransforms
|
2021-03-11 16:56:00 +08:00
|
|
|
PRIVATE
|
|
|
|
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
|
|
|
|
)
|
|
|
|
|
|
|
|
find_library(CUDA_DRIVER_LIBRARY cuda)
|
|
|
|
|
2021-06-23 12:47:46 +08:00
|
|
|
target_link_libraries(MLIRGPUTransforms
|
2021-03-11 16:56:00 +08:00
|
|
|
PRIVATE
|
|
|
|
MLIRNVVMToLLVMIRTranslation
|
|
|
|
${CUDA_DRIVER_LIBRARY}
|
|
|
|
)
|
|
|
|
|
|
|
|
endif()
|
2021-03-19 15:22:50 +08:00
|
|
|
|
2021-05-22 22:25:38 +08:00
|
|
|
if(MLIR_ENABLE_ROCM_RUNNER)
|
2021-03-19 15:22:50 +08:00
|
|
|
if (NOT ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD))
|
|
|
|
message(SEND_ERROR
|
|
|
|
"Building mlir with ROCm support requires the AMDGPU backend")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Ensure lld is enabled.
|
|
|
|
if (NOT "lld" IN_LIST LLVM_ENABLE_PROJECTS)
|
|
|
|
message(SEND_ERROR "lld is not enabled. Please revise LLVM_ENABLE_PROJECTS")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# 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()
|
|
|
|
|
2021-06-23 12:47:46 +08:00
|
|
|
target_compile_definitions(obj.MLIRGPUOps
|
2021-03-19 15:22:50 +08:00
|
|
|
PRIVATE
|
|
|
|
__HIP_PLATFORM_HCC__
|
|
|
|
__ROCM_PATH__="${ROCM_PATH}"
|
|
|
|
MLIR_GPU_TO_HSACO_PASS_ENABLE=1
|
|
|
|
)
|
|
|
|
|
2021-06-23 12:47:46 +08:00
|
|
|
target_include_directories(obj.MLIRGPUOps
|
2021-03-19 15:22:50 +08:00
|
|
|
PRIVATE
|
|
|
|
${MLIR_SOURCE_DIR}/../lld/include
|
|
|
|
${HIP_PATH}/include
|
|
|
|
${ROCM_PATH}/include
|
|
|
|
)
|
|
|
|
|
2021-06-23 12:47:46 +08:00
|
|
|
target_link_libraries(MLIRGPUOps
|
2021-03-19 15:22:50 +08:00
|
|
|
PRIVATE
|
|
|
|
lldELF
|
|
|
|
MLIRROCDLToLLVMIRTranslation
|
|
|
|
)
|
|
|
|
|
|
|
|
# Link lldELF also to libmlir.so. Create an alias that starts with LLVM
|
|
|
|
# because LINK_COMPONENTS elements are implicitly prefixed with LLVM.
|
|
|
|
add_library(LLVMAliasTolldELF ALIAS lldELF)
|
|
|
|
set_property(GLOBAL APPEND PROPERTY MLIR_LLVM_LINK_COMPONENTS AliasTolldELF)
|
|
|
|
|
|
|
|
endif()
|