Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,11 @@ if(NOT TRITON_BUILD_PYTHON_MODULE)
add_subdirectory(third_party/tle)
flagtree_add_tle_generated_header_dependencies()
endif()
# flagtree backend cmake specialization
if(FLAGTREE_BACKEND)
include(FlagTreeBackendSpec)
flagtree_apply_backend_source_overrides("${FLAGTREE_BACKEND_DIR}")
endif()
endif()

find_package(Threads REQUIRED)
Expand Down
23 changes: 20 additions & 3 deletions cmake/FlagTreeBackendSpec.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,26 @@ function(flagtree_apply_backend_source_overrides backend_root)

list(LENGTH _spec_sources_in_core_root _candidate_count)
if(_candidate_count EQUAL 0)
message(FATAL_ERROR
"Backend spec source ${_spec_source} has no owner target in the "
"configured core roots for mirrored main source ${_relative_path}")
set(_added_owner_targets)
foreach(_index RANGE 0 ${_last_source_index})
list(GET _source_index ${_index} _indexed_source)
if(_indexed_source STREQUAL "${_spec_source}")
list(GET _target_index ${_index} _added_owner_target)
list(APPEND _added_owner_targets "${_added_owner_target}")
endif()
endforeach()
list(REMOVE_DUPLICATES _added_owner_targets)
list(LENGTH _added_owner_targets _added_owner_count)
if(_added_owner_count EQUAL 0)
message(FATAL_ERROR
"Backend spec source ${_spec_source} has no mirrored main source "
"or explicit owner target for ${_relative_path}")
endif()
foreach(_added_owner_target IN LISTS _added_owner_targets)
message(STATUS
"SPEC ADD: ${_relative_path} -> ${_added_owner_target}")
endforeach()
continue()
elseif(_candidate_count GREATER 1)
message(FATAL_ERROR
"Backend spec source ${_spec_source} matches multiple preferred main "
Expand Down
34 changes: 32 additions & 2 deletions cmake/FlagTreeOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,9 @@ macro(flagtree_include_directories root_include_dir)
# flagtree spec include dir
set(BACKEND_SPEC_INCLUDE_DIR ${FLAGTREE_BACKEND_DIR}/spec_cpp/include)
if(FLAGTREE_BACKEND AND EXISTS ${BACKEND_SPEC_INCLUDE_DIR})
include_directories(${BACKEND_SPEC_INCLUDE_DIR})
include_directories(BEFORE
${BACKEND_SPEC_INCLUDE_DIR}
${PROJECT_BINARY_DIR}/third_party/${FLAGTREE_BACKEND}/spec_cpp/include)
endif()

# flagtree third_party include dir
Expand Down Expand Up @@ -158,9 +160,26 @@ macro(flagtree_configure_core_source)
endif()

if(FLAGTREE_BACKEND MATCHES
"^(xpu|cambricon|aipu|tsingmicro|enflame|rpu|thrive|tileir|ppu)$")
"^(xpu|cambricon|aipu|tsingmicro|enflame|rpu|thrive|mthreads|tileir|ppu)$")
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_BINARY_DIR}/include) # Tablegen'd files
if(FLAGTREE_BACKEND STREQUAL "mthreads")
set(_flagtree_mthreads_root
${PROJECT_SOURCE_DIR}/third_party/mthreads)
include_directories(BEFORE
${_flagtree_mthreads_root}/spec_cpp/include
${PROJECT_BINARY_DIR}/third_party/mthreads/spec_cpp/include
${_flagtree_mthreads_root}/spec_cpp
${PROJECT_BINARY_DIR}/third_party/mthreads/spec_cpp
${_flagtree_mthreads_root}
${PROJECT_BINARY_DIR}/third_party/mthreads
${_flagtree_mthreads_root}/musa/include
${PROJECT_BINARY_DIR}/third_party/mthreads/musa/include
${_flagtree_mthreads_root}/tle/dialect/include
${PROJECT_BINARY_DIR}/third_party/mthreads/tle/dialect/include
${_flagtree_mthreads_root}/tle/frontend/include
${PROJECT_BINARY_DIR}/third_party/mthreads/tle/frontend/include)
endif()
if(FLAGTREE_BACKEND STREQUAL "xpu")
include_directories(${PROJECT_SOURCE_DIR}/third_party/nvidia/include)
include_directories(${PROJECT_BINARY_DIR}/third_party/nvidia/include) # Tablegen'd files
Expand Down Expand Up @@ -533,3 +552,14 @@ function(flagtree_spec_td_set output_td td_filename)
endif()
set(${output_td} ${ret} PARENT_SCOPE)
endfunction()


# FLAGTREE SPEC MLIR DOC FUNC
function(flagtree_spec_add_mlir_doc
doc_filename output_file output_directory command)
flagtree_spec_td_set(_flagtree_doc_td "${doc_filename}.td")
string(REGEX REPLACE "\\.td$" "" _flagtree_doc_stem "${_flagtree_doc_td}")
add_mlir_doc(
"${_flagtree_doc_stem}" "${output_file}" "${output_directory}"
"${command}" ${ARGN})
endfunction()
2 changes: 1 addition & 1 deletion include/triton/Dialect/Gluon/Transforms/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
set(LLVM_TARGET_DEFINITIONS Passes.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS Passes.td)
mlir_tablegen(Passes.h.inc -gen-pass-decls -name Gluon)
add_public_tablegen_target(GluonTransformsIncGen)
6 changes: 3 additions & 3 deletions include/triton/Dialect/Triton/IR/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(OpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(OpsEnums.cpp.inc -gen-enum-defs)
add_mlir_doc(TritonOps TritonOps dialects/ -gen-op-doc)
flagtree_spec_add_mlir_doc(TritonOps TritonOps dialects/ -gen-op-doc)

set(LLVM_TARGET_DEFINITIONS TritonDialect.td)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls)
mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs)
add_mlir_doc(TritonDialect TritonDialect dialects/ -gen-dialect-doc)

set(LLVM_TARGET_DEFINITIONS TritonTypes.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonTypes.td)
mlir_tablegen(Types.h.inc -gen-typedef-decls)
mlir_tablegen(Types.cpp.inc -gen-typedef-defs)

set(LLVM_TARGET_DEFINITIONS TritonInterfaces.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonInterfaces.td)
mlir_tablegen(AttrInterfaces.h.inc -gen-attr-interface-decls)
mlir_tablegen(AttrInterfaces.cpp.inc -gen-attr-interface-defs)

Expand Down
6 changes: 3 additions & 3 deletions include/triton/Dialect/TritonGPU/IR/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})

set(LLVM_TARGET_DEFINITIONS TritonGPUOps.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonGPUOps.td)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls -dialect=ttg)
mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs -dialect=ttg)
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(Types.h.inc -gen-typedef-decls -typedefs-dialect=ttg)
mlir_tablegen(Types.cpp.inc -gen-typedef-defs -typedefs-dialect=ttg)
add_mlir_doc(TritonGPUDialect TritonGPUDialect dialects/ -gen-dialect-doc)
add_mlir_doc(TritonGPUOps TritonGPUOps dialects/ -gen-op-doc)
flagtree_spec_add_mlir_doc(TritonGPUOps TritonGPUOps dialects/ -gen-op-doc)
add_public_tablegen_target(TritonGPUTableGen)

flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonGPUAttrDefs.td)
Expand All @@ -18,7 +18,7 @@ mlir_tablegen(AttrDefs.h.inc -gen-attrdef-decls)
mlir_tablegen(OpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(OpsEnums.cpp.inc -gen-enum-defs)

set(LLVM_TARGET_DEFINITIONS TritonGPUAttrImpls.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonGPUAttrImpls.td)
mlir_tablegen(AttrDefs.cpp.inc -gen-attrdef-defs)
add_public_tablegen_target(TritonGPUAttrDefsIncGen)

Expand Down
4 changes: 2 additions & 2 deletions include/triton/Dialect/TritonInstrument/IR/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ mlir_tablegen(Dialect.h.inc -gen-dialect-decls -dialect=tti)
mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs -dialect=tti)
add_mlir_doc(TritonInstrumentDialect TritonInstrumentDialect dialects/ -gen-dialect-doc)

set(LLVM_TARGET_DEFINITIONS TritonInstrumentOps.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonInstrumentOps.td)
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(OpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(OpsEnums.cpp.inc -gen-enum-defs)
add_mlir_doc(TritonInstrumentOps TritonInstrumentOps dialects/ -gen-op-doc)
flagtree_spec_add_mlir_doc(TritonInstrumentOps TritonInstrumentOps dialects/ -gen-op-doc)

add_public_tablegen_target(TritonInstrumentTableGen)
10 changes: 5 additions & 5 deletions include/triton/Dialect/TritonNvidiaGPU/IR/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})

set(LLVM_TARGET_DEFINITIONS TritonNvidiaGPUOps.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonNvidiaGPUOps.td)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls -dialect=ttng)
mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs -dialect=ttng)
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
add_mlir_doc(TritonNvidiaGPUDialect TritonNvidiaGPUDialect dialects/ -gen-dialect-doc)
add_mlir_doc(TritonNvidiaGPUOps TritonNvidiaGPUOps dialects/ -gen-op-doc)
flagtree_spec_add_mlir_doc(TritonNvidiaGPUDialect TritonNvidiaGPUDialect dialects/ -gen-dialect-doc)
flagtree_spec_add_mlir_doc(TritonNvidiaGPUOps TritonNvidiaGPUOps dialects/ -gen-op-doc)
add_public_tablegen_target(TritonNvidiaGPUTableGen)

set(LLVM_TARGET_DEFINITIONS TritonNvidiaGPUAttrDefs.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonNvidiaGPUAttrDefs.td)
mlir_tablegen(TritonNvidiaGPUAttrDefs.h.inc -gen-attrdef-decls)
mlir_tablegen(TritonNvidiaGPUAttrDefs.cpp.inc -gen-attrdef-defs)
mlir_tablegen(OpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(OpsEnums.cpp.inc -gen-enum-defs)
add_public_tablegen_target(TritonNvidiaGPUAttrDefsIncGen)

set(LLVM_TARGET_DEFINITIONS TritonNvidiaGPUOpInterfaces.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS TritonNvidiaGPUOpInterfaces.td)
mlir_tablegen(TritonNvidiaGPUOpInterfaces.h.inc -gen-op-interface-decls)
mlir_tablegen(TritonNvidiaGPUOpInterfaces.cpp.inc -gen-op-interface-defs)
add_public_tablegen_target(TritonNvidiaGPUOpInterfacesIncGen)
2 changes: 1 addition & 1 deletion lib/Dialect/Triton/Transforms/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
set(LLVM_TARGET_DEFINITIONS Combine.td)
flagtree_spec_td_set(LLVM_TARGET_DEFINITIONS Combine.td)
mlir_tablegen(TritonCombine.inc -gen-rewriters)
add_public_tablegen_target(TritonCombineIncGen)

Expand Down
59 changes: 55 additions & 4 deletions third_party/mthreads/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/spec_cpp)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/spec_cpp)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/spec_cpp/include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/spec_cpp/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/musa/include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/musa/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tle/dialect/include)
Expand All @@ -19,9 +21,58 @@ if(FLAGTREE_MTHREADS_TLE)
${CMAKE_SOURCE_DIR}/third_party/tle/dialect/lib/IR
${CMAKE_BINARY_DIR}/third_party/tle/dialect/lib/IR)
add_subdirectory(tle)
add_dependencies(TritonToTritonGPU MUSATLETableGen)
target_link_libraries(TritonToTritonGPU PUBLIC MUSATLEIR)
endif()
add_subdirectory(include)
add_subdirectory(lib)

add_subdirectory(spec_cpp/include/triton/Dialect/Triton/IR)
add_subdirectory(spec_cpp/include/triton/Dialect/TritonGPU/IR)
add_subdirectory(spec_cpp/include/triton/Dialect/TritonNvidiaGPU/IR)
add_subdirectory(spec_cpp/include/triton/Dialect/NVGPU/IR)
add_subdirectory(spec_cpp/include/triton/Dialect/NVWS/IR)
add_subdirectory(spec_cpp/include/triton/Dialect/NVWS/Transforms)

add_subdirectory(spec_cpp/lib/Dialect/NVGPU/IR)
add_subdirectory(spec_cpp/lib/Dialect/NVWS/IR)
add_subdirectory(spec_cpp/lib/Dialect/NVWS/Transforms)

set(MTHREADS_SPEC_CPP_LIB
${CMAKE_CURRENT_SOURCE_DIR}/spec_cpp/lib)

target_sources(TritonAnalysis PRIVATE
${MTHREADS_SPEC_CPP_LIB}/Analysis/BufferRegion.cpp)
target_sources(TritonGPUToLLVM PRIVATE
${MTHREADS_SPEC_CPP_LIB}/Conversion/TritonGPUToLLVM/WarpSpecializeUtility.cpp)
target_sources(TritonGPUTransforms PRIVATE
${MTHREADS_SPEC_CPP_LIB}/Dialect/TritonGPU/Transforms/WarpSpecialization/PartitionSchedulingUtility.cpp)
target_sources(TritonNvidiaGPUTransforms PRIVATE
${MTHREADS_SPEC_CPP_LIB}/Dialect/TritonNvidiaGPU/Transforms/ProxyFenceInsertion.cpp)
target_sources(TritonLLVMIR PRIVATE
${MTHREADS_SPEC_CPP_LIB}/Target/LLVMIR/LLVMDIUtils.cpp)
target_sources(TritonTools PRIVATE
${MTHREADS_SPEC_CPP_LIB}/Tools/PluginUtils.cpp)

set_source_files_properties(
${PROJECT_SOURCE_DIR}/lib/Dialect/TritonGPU/Transforms/ProcessSharedMemoryHint.cpp
TARGET_DIRECTORY TritonGPUTransforms
PROPERTIES HEADER_FILE_ONLY ON)
set_source_files_properties(
${PROJECT_SOURCE_DIR}/lib/Dialect/TritonNvidiaGPU/Transforms/ProxFenceInsertion.cpp
TARGET_DIRECTORY TritonNvidiaGPUTransforms
PROPERTIES HEADER_FILE_ONLY ON)

add_dependencies(TritonTableGen TritonTypeInterfacesIncGen)
add_dependencies(TritonGPUTableGen TritonGPUOpsEnumsIncGen)
add_dependencies(TritonGPUAttrDefsIncGen
TritonGPUCGAAttrIncGen
TritonGPUOpsEnumsIncGen)
add_dependencies(TritonNvidiaGPUTableGen TritonNvidiaGPUTypesIncGen)

if(TARGET PrintLoadStoreMemSpaces)
set_target_properties(PrintLoadStoreMemSpaces
PROPERTIES EXCLUDE_FROM_ALL TRUE)
endif()

add_subdirectory(musa)
if(TRITON_BUILD_PYTHON_MODULE)
if(FLAGTREE_MTHREADS_TLE)
Expand Down
1 change: 0 additions & 1 deletion third_party/mthreads/include/CMakeLists.txt

This file was deleted.

Loading
Loading