127 lines
3.5 KiB
CMake
127 lines
3.5 KiB
CMake
set(PIM_ENABLED 1 BOOL PARENT_SCOPE)
|
|
|
|
set(PIM_SRC_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
set(PIM_BIN_ROOT "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
set(PIM_LIBRARY_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
|
set(PIM_RUNTIME_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
|
set(PIM_INCLUDE_PATH ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
|
|
|
|
set(PIM_ONNX_MLIR_SRC_ROOT ${ONNX_MLIR_SRC_ROOT})
|
|
set(PIM_ONNX_MLIR_BIN_ROOT ${ONNX_MLIR_BIN_ROOT})
|
|
|
|
set(PIM_GENERATED_PATH_SHIM_TARGET "")
|
|
get_filename_component(PIM_BIN_ROOT_NAME "${PIM_BIN_ROOT}" NAME)
|
|
if (PIM_BIN_ROOT_NAME STREQUAL "raptor-external")
|
|
get_filename_component(PIM_GENERATED_PATH_SHIM_ROOT "${PIM_BIN_ROOT}" DIRECTORY)
|
|
set(PIM_GENERATED_PATH_SHIM_OUTPUTS)
|
|
|
|
function(add_pim_generated_path_shim relative_path)
|
|
set(real_file "${PIM_BIN_ROOT}/${relative_path}")
|
|
set(shim_file "${PIM_GENERATED_PATH_SHIM_ROOT}/${relative_path}")
|
|
get_filename_component(shim_dir "${shim_file}" DIRECTORY)
|
|
|
|
add_custom_command(
|
|
OUTPUT "${shim_file}"
|
|
DEPENDS "${real_file}"
|
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${shim_dir}"
|
|
COMMAND "${CMAKE_COMMAND}" -E rm -f "${shim_file}"
|
|
COMMAND "${CMAKE_COMMAND}" -E create_symlink "${real_file}" "${shim_file}"
|
|
VERBATIM
|
|
)
|
|
|
|
list(APPEND PIM_GENERATED_PATH_SHIM_OUTPUTS "${shim_file}")
|
|
set(PIM_GENERATED_PATH_SHIM_OUTPUTS "${PIM_GENERATED_PATH_SHIM_OUTPUTS}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
file(GLOB_RECURSE pim_generated_path_scan_sources
|
|
CONFIGURE_DEPENDS
|
|
"${PIM_SRC_ROOT}/*.cpp"
|
|
"${PIM_SRC_ROOT}/*.hpp"
|
|
)
|
|
|
|
set(pim_generated_path_shims)
|
|
foreach (source_file IN LISTS pim_generated_path_scan_sources)
|
|
file(READ "${source_file}" source_contents)
|
|
string(REGEX MATCHALL "#include \"src/Accelerators/PIM/[^\"]+\\.inc\"" source_inc_matches "${source_contents}")
|
|
|
|
foreach (inc_match IN LISTS source_inc_matches)
|
|
string(REGEX REPLACE "^#include \"src/Accelerators/PIM/(.+)\"$" "\\1" relative_inc_path "${inc_match}")
|
|
list(APPEND pim_generated_path_shims "${relative_inc_path}")
|
|
endforeach ()
|
|
endforeach ()
|
|
|
|
list(REMOVE_DUPLICATES pim_generated_path_shims)
|
|
foreach (relative_inc_path IN LISTS pim_generated_path_shims)
|
|
add_pim_generated_path_shim("${relative_inc_path}")
|
|
endforeach ()
|
|
|
|
add_custom_target(OMPimGeneratedPathShims DEPENDS ${PIM_GENERATED_PATH_SHIM_OUTPUTS})
|
|
set(PIM_GENERATED_PATH_SHIM_TARGET OMPimGeneratedPathShims)
|
|
endif ()
|
|
|
|
set(PIM_PUBLIC_INCLUDE_DIRS
|
|
${ONNX_MLIR_SRC_ROOT}/include
|
|
${ONNX_MLIR_SRC_ROOT}
|
|
${PIM_ONNX_MLIR_SRC_ROOT}
|
|
${PIM_SRC_ROOT}
|
|
${PIM_BIN_ROOT}
|
|
${PIM_INCLUDE_PATH}
|
|
)
|
|
|
|
set(PIM_COMPILER_INCLUDE_DIRS
|
|
${PIM_SRC_ROOT}
|
|
${PIM_BIN_ROOT}
|
|
${PIM_ONNX_MLIR_SRC_ROOT}
|
|
${PIM_ONNX_MLIR_BIN_ROOT}
|
|
)
|
|
|
|
set(PIM_ACCEL_INCLUDE_DIRS
|
|
${PIM_ONNX_MLIR_SRC_ROOT}
|
|
${PIM_ONNX_MLIR_BIN_ROOT}
|
|
)
|
|
|
|
set(PIM_GENERATED_INCLUDE_DIRS
|
|
${PIM_INCLUDE_PATH}
|
|
)
|
|
|
|
function(add_pim_library name)
|
|
add_onnx_mlir_library(${name} STATIC ${ARGN})
|
|
if (PIM_GENERATED_PATH_SHIM_TARGET)
|
|
add_dependencies(${name} ${PIM_GENERATED_PATH_SHIM_TARGET})
|
|
endif ()
|
|
endfunction()
|
|
|
|
add_subdirectory(Dialect)
|
|
add_subdirectory(Common)
|
|
add_subdirectory(Pass)
|
|
add_subdirectory(Compiler)
|
|
add_subdirectory(Conversion)
|
|
|
|
add_pim_library(OMPIMAccel
|
|
PimAccelerator.cpp
|
|
|
|
EXCLUDE_FROM_OM_LIBS
|
|
|
|
INCLUDE_DIRS PUBLIC
|
|
${PIM_PUBLIC_INCLUDE_DIRS}
|
|
|
|
LINK_LIBS PUBLIC
|
|
MLIRSCFDialect
|
|
MLIRSCFTransforms
|
|
onnx
|
|
OMAccelerator
|
|
OMPimCompilerUtils
|
|
OMPimPasses
|
|
OMONNXOps
|
|
SpatialOps
|
|
PimOps
|
|
OMONNXToSpatial
|
|
OMSpatialToGraphviz
|
|
OMSpatialToPim
|
|
OMPimCommon
|
|
OMPimBufferization
|
|
OMPimStaticMemoryCoalescing
|
|
MLIRTensorInferTypeOpInterfaceImpl
|
|
)
|