1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
if (MLIR_ENABLE_CUDA_CONVERSIONS)
set(NVPTX_LIBS
NVPTXCodeGen
NVPTXDesc
NVPTXInfo
)
endif()
if (MLIR_ENABLE_ROCM_CONVERSIONS)
set(AMDGPU_LIBS
IRReader
IPO
linker
MCParser
AMDGPUAsmParser
AMDGPUCodeGen
AMDGPUDesc
AMDGPUInfo
target
)
endif()
add_mlir_dialect_library(MLIRGPUDialect
IR/GPUDialect.cpp
IR/InferIntRangeInterfaceImpls.cpp
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
DEPENDS
MLIRGPUOpsIncGen
MLIRGPUOpsAttributesIncGen
MLIRGPUOpsEnumsGen
MLIRGPUOpInterfacesIncGen
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRDLTIDialect
MLIRInferIntRangeInterface
MLIRIR
MLIRMemRefDialect
MLIRSideEffectInterfaces
MLIRSupport
)
add_mlir_dialect_library(MLIRGPUTransforms
Transforms/AllReduceLowering.cpp
Transforms/AsyncRegionRewriter.cpp
Transforms/GlobalIdRewriter.cpp
Transforms/KernelOutlining.cpp
Transforms/MemoryPromotion.cpp
Transforms/ParallelLoopMapper.cpp
Transforms/ShuffleRewriter.cpp
Transforms/SerializeToBlob.cpp
Transforms/SerializeToCubin.cpp
Transforms/SerializeToHsaco.cpp
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
LINK_COMPONENTS
Core
MC
Target
${NVPTX_LIBS}
${AMDGPU_LIBS}
DEPENDS
MLIRGPUPassIncGen
MLIRParallelLoopMapperEnumsGen
LINK_LIBS PUBLIC
MLIRAffineUtils
MLIRArithDialect
MLIRAsyncDialect
MLIRBuiltinToLLVMIRTranslation
MLIRDataLayoutInterfaces
MLIRExecutionEngineUtils
MLIRGPUDialect
MLIRIR
MLIRIndexDialect
MLIRLLVMDialect
MLIRGPUToLLVMIRTranslation
MLIRLLVMToLLVMIRTranslation
MLIRMemRefDialect
MLIRPass
MLIRSCFDialect
MLIRSideEffectInterfaces
MLIRSupport
MLIRTransformUtils
)
add_subdirectory(TransformOps)
if(MLIR_ENABLE_CUDA_RUNNER)
if(NOT MLIR_ENABLE_CUDA_CONVERSIONS)
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.
target_compile_definitions(obj.MLIRGPUTransforms
PRIVATE
MLIR_GPU_TO_CUBIN_PASS_ENABLE=1
)
# Add CUDA headers includes and the libcuda.so library.
target_include_directories(obj.MLIRGPUTransforms
PRIVATE
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
)
find_library(CUDA_DRIVER_LIBRARY cuda HINTS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES} REQUIRED)
target_link_libraries(MLIRGPUTransforms
PRIVATE
MLIRNVVMToLLVMIRTranslation
${CUDA_DRIVER_LIBRARY}
)
endif()
if(MLIR_ENABLE_ROCM_CONVERSIONS)
if (NOT ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD))
message(SEND_ERROR
"Building mlir with ROCm support requires the AMDGPU backend")
endif()
set(DEFAULT_ROCM_PATH "/opt/rocm" CACHE PATH "Fallback path to search for ROCm installs")
target_compile_definitions(obj.MLIRGPUTransforms
PRIVATE
__DEFAULT_ROCM_PATH__="${DEFAULT_ROCM_PATH}"
MLIR_GPU_TO_HSACO_PASS_ENABLE=1
)
target_link_libraries(MLIRGPUTransforms
PRIVATE
MLIRROCDLToLLVMIRTranslation
)
endif()
|