173 lines
4 KiB
Text
173 lines
4 KiB
Text
|
if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD)
|
||
|
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
|
||
|
MLIRGPUCompilationAttrInterfacesIncGen
|
||
|
|
||
|
LINK_LIBS PUBLIC
|
||
|
MLIRArithDialect
|
||
|
MLIRDLTIDialect
|
||
|
MLIRControlFlowInterfaces
|
||
|
MLIRFunctionInterfaces
|
||
|
MLIRInferIntRangeInterface
|
||
|
MLIRIR
|
||
|
MLIRMemRefDialect
|
||
|
MLIRSideEffectInterfaces
|
||
|
MLIRSupport
|
||
|
)
|
||
|
|
||
|
add_mlir_dialect_library(MLIRGPUTransforms
|
||
|
Transforms/AllReduceLowering.cpp
|
||
|
Transforms/AsyncRegionRewriter.cpp
|
||
|
Transforms/BufferDeallocationOpInterfaceImpl.cpp
|
||
|
Transforms/DecomposeMemrefs.cpp
|
||
|
Transforms/EliminateBarriers.cpp
|
||
|
Transforms/GlobalIdRewriter.cpp
|
||
|
Transforms/KernelOutlining.cpp
|
||
|
Transforms/MemoryPromotion.cpp
|
||
|
Transforms/ModuleToBinary.cpp
|
||
|
Transforms/NVVMAttachTarget.cpp
|
||
|
Transforms/ParallelLoopMapper.cpp
|
||
|
Transforms/ROCDLAttachTarget.cpp
|
||
|
Transforms/SerializeToBlob.cpp
|
||
|
Transforms/SerializeToCubin.cpp
|
||
|
Transforms/SerializeToHsaco.cpp
|
||
|
Transforms/ShuffleRewriter.cpp
|
||
|
Transforms/SPIRVAttachTarget.cpp
|
||
|
Transforms/SubgroupReduceLowering.cpp
|
||
|
Transforms/Utils.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
|
||
|
MLIRBufferizationDialect
|
||
|
MLIRBuiltinToLLVMIRTranslation
|
||
|
MLIRDataLayoutInterfaces
|
||
|
MLIRExecutionEngineUtils
|
||
|
MLIRGPUDialect
|
||
|
MLIRIR
|
||
|
MLIRIndexDialect
|
||
|
MLIRLLVMDialect
|
||
|
MLIRGPUToLLVMIRTranslation
|
||
|
MLIRLLVMToLLVMIRTranslation
|
||
|
MLIRMemRefDialect
|
||
|
MLIRNVVMTarget
|
||
|
MLIRPass
|
||
|
MLIRSCFDialect
|
||
|
MLIRSideEffectInterfaces
|
||
|
MLIRSPIRVTarget
|
||
|
MLIRSupport
|
||
|
MLIRROCDLTarget
|
||
|
MLIRTransformUtils
|
||
|
MLIRVectorDialect
|
||
|
)
|
||
|
|
||
|
add_subdirectory(TransformOps)
|
||
|
add_subdirectory(Pipelines)
|
||
|
|
||
|
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}
|
||
|
)
|
||
|
|
||
|
# Add link path for the cuda driver library.
|
||
|
find_library(CUDA_DRIVER_LIBRARY cuda HINTS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES} REQUIRED)
|
||
|
get_filename_component(CUDA_DRIVER_LIBRARY_PATH "${CUDA_DRIVER_LIBRARY}" DIRECTORY)
|
||
|
target_link_directories(MLIRGPUTransforms PRIVATE ${CUDA_DRIVER_LIBRARY_PATH})
|
||
|
|
||
|
target_link_libraries(MLIRGPUTransforms
|
||
|
PRIVATE
|
||
|
MLIRNVVMToLLVMIRTranslation
|
||
|
cuda
|
||
|
)
|
||
|
|
||
|
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()
|