|
|
@@ -116,11 +116,18 @@ if(MGE_WITH_CUDA) |
|
|
|
|
|
|
|
set(CUTLASS_GEN_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/cutlass_generator/generator.py) |
|
|
|
set(CUTLASS_GEN_DIR ${CMAKE_CURRENT_BINARY_DIR}/cuda/cutlass/generated) |
|
|
|
function(gen_cutlass_kimpl op type) |
|
|
|
set(CUTLASS_SOURCES "") |
|
|
|
function(gen_cutlass_kimpl op type gen_files) |
|
|
|
set(CURRENT_CUTLASS_STAGE_DIR ${CUTLASS_GEN_DIR}/${op}_${type}.stage) |
|
|
|
set(CURRENT_CUTLASS_GEN_DIR ${CUTLASS_GEN_DIR}/${op}_${type}) |
|
|
|
|
|
|
|
set_directory_properties(PROPERTIES CMAKE_CONFIGURE_DEPENDS ${CUTLASS_GEN_SCRIPT}) |
|
|
|
|
|
|
|
file(REMOVE_RECURSE ${CURRENT_CUTLASS_STAGE_DIR}) |
|
|
|
file(MAKE_DIRECTORY ${CURRENT_CUTLASS_STAGE_DIR}) |
|
|
|
file(MAKE_DIRECTORY ${CURRENT_CUTLASS_GEN_DIR}) |
|
|
|
execute_process( |
|
|
|
COMMAND ${PYTHON3_EXECUTABLE_WITHOUT_VERSION} ${CUTLASS_GEN_SCRIPT} --operations ${op} --type ${type} ${CURRENT_CUTLASS_GEN_DIR} |
|
|
|
COMMAND ${PYTHON3_EXECUTABLE_WITHOUT_VERSION} ${CUTLASS_GEN_SCRIPT} --operations ${op} --type ${type} ${CURRENT_CUTLASS_STAGE_DIR} |
|
|
|
RESULT_VARIABLE gen_cutlass_result |
|
|
|
OUTPUT_FILE ${CURRENT_CUTLASS_GEN_DIR}/gen_cutlass.log |
|
|
|
ERROR_FILE ${CURRENT_CUTLASS_GEN_DIR}/gen_cutlass.log |
|
|
@@ -128,14 +135,27 @@ if(MGE_WITH_CUDA) |
|
|
|
if (NOT gen_cutlass_result EQUAL 0) |
|
|
|
message(FATAL_ERROR "Error generating library instances. See ${CURRENT_CUTLASS_GEN_DIR}/gen_cutlass.log") |
|
|
|
endif() |
|
|
|
file(GLOB CUTLASS_GEN_FILES RELATIVE "${CURRENT_CUTLASS_GEN_DIR}/" "${CURRENT_CUTLASS_GEN_DIR}/*.cu") |
|
|
|
foreach(FILE ${CUTLASS_GEN_FILES}) |
|
|
|
if (NOT EXISTS "${CURRENT_CUTLASS_STAGE_DIR}/${FILE}") |
|
|
|
file(REMOVE "${CURRENT_CUTLASS_GEN_DIR}/${FILE}") |
|
|
|
endif() |
|
|
|
endforeach() |
|
|
|
file(GLOB CUTLASS_GEN_FILES RELATIVE "${CURRENT_CUTLASS_STAGE_DIR}" "${CURRENT_CUTLASS_STAGE_DIR}/*.cu") |
|
|
|
foreach(FILE ${CUTLASS_GEN_FILES}) |
|
|
|
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CURRENT_CUTLASS_STAGE_DIR}/${FILE}" "${CURRENT_CUTLASS_GEN_DIR}") |
|
|
|
endforeach() |
|
|
|
file(REMOVE_RECURSE ${CURRENT_CUTLASS_STAGE_DIR}) |
|
|
|
file(GLOB_RECURSE CUTLASS_GEN_FILES "${CURRENT_CUTLASS_GEN_DIR}/*.cu") |
|
|
|
list(APPEND ${gen_files} ${CUTLASS_GEN_FILES}) |
|
|
|
set(${gen_files} "${${gen_files}}" PARENT_SCOPE) |
|
|
|
endfunction() |
|
|
|
gen_cutlass_kimpl(gemm simt) |
|
|
|
gen_cutlass_kimpl(gemv simt) |
|
|
|
gen_cutlass_kimpl(deconv simt) |
|
|
|
gen_cutlass_kimpl(conv2d simt) |
|
|
|
gen_cutlass_kimpl(conv2d tensorop8816) |
|
|
|
gen_cutlass_kimpl(conv2d tensorop8832) |
|
|
|
file(GLOB_RECURSE CUTLASS_SOURCES ${CUTLASS_GEN_DIR}/*.cu) |
|
|
|
gen_cutlass_kimpl(gemm simt CUTLASS_SOURCES) |
|
|
|
gen_cutlass_kimpl(gemv simt CUTLASS_SOURCES) |
|
|
|
gen_cutlass_kimpl(deconv simt CUTLASS_SOURCES) |
|
|
|
gen_cutlass_kimpl(conv2d simt CUTLASS_SOURCES) |
|
|
|
gen_cutlass_kimpl(conv2d tensorop8816 CUTLASS_SOURCES) |
|
|
|
gen_cutlass_kimpl(conv2d tensorop8832 CUTLASS_SOURCES) |
|
|
|
list(APPEND SOURCES ${CUTLASS_SOURCES}) |
|
|
|
list(APPEND SOURCES ${CUSOURCES}) |
|
|
|
endif() |
|
|
|