Skip to content

Commit

Permalink
STVM, NUPHAR, remove tvm from submodules list, checks pointers are no…
Browse files Browse the repository at this point in the history
…t null. (microsoft#10211)

* STVM, checks pointers are not null.
* removes submodules tvm
* add missing include(FetchContent)
* add target tvm
* fix stvm test
* extend cgmanifest with dependencies of tvm
  • Loading branch information
xadupre authored Jan 27, 2022
1 parent ec4362f commit 481b96d
Show file tree
Hide file tree
Showing 15 changed files with 332 additions and 101 deletions.
6 changes: 0 additions & 6 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
[submodule "cmake/external/onnx"]
path = cmake/external/onnx
url = https://github.com/onnx/onnx.git
[submodule "cmake/external/tvm"]
path = cmake/external/tvm
url = https://github.com/microsoft/onnxruntime-tvm.git
[submodule "cmake/external/date"]
path = cmake/external/date
url = https://github.com/HowardHinnant/date.git
Expand Down Expand Up @@ -78,6 +75,3 @@
[submodule "cmake/external/onnx-tensorrt"]
path = cmake/external/onnx-tensorrt
url = https://github.com/onnx/onnx-tensorrt.git
[submodule "cmake/external/tvm_update"]
path = cmake/external/tvm_update
url = https://github.com/apache/tvm
73 changes: 72 additions & 1 deletion cgmanifests/cgmanifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,78 @@
"git": {
"commitHash": "638d7d2407de27f98f542f61a37a33c90a2e75a9",
"repositoryUrl": "https://github.com/microsoft/onnxruntime-tvm.git"
}
},
"comments": "needed for nuphar"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "7b3a22e465dd6aca4729504a19beb4bc23312755",
"repositoryUrl": "https://github.com/apache/tvm.git"
},
"comments": "needed for EP STVM"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "cabe04d6d6b05356fa8f9741704924788f0dd762",
"repositoryUrl": "https://github.com/agauniyal/rang.git"
},
"comments": "dependency from tvm"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "a3bcc6981d5dad3afb212689e2c7853d1b1ee45d",
"repositoryUrl": "https://github.com/NVIDIA/cutlass.git"
},
"comments": "dependency from tvm"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "08f7c7e69f8ea61a0c4151359bc8023be8e9217b",
"repositoryUrl": "https://github.com/tlc-pack/libbacktrace.git"
},
"comments": "dependency from tvm"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "36a91576edf633479c78649e050f18dd2ddc8103",
"repositoryUrl": "https://github.com/apache/incubator-tvm-vta.git"
},
"comments": "dependency from tvm"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "111c9be5188f7350c2eac9ddaedd8cca3d7bf394",
"repositoryUrl": "https://github.com/kazuho/picojson.git"
},
"comments": "dependency from tvm"
}
},
{
"component": {
"type": "git",
"git": {
"commitHash": "b5e4186d7ab63458e79084842dced166be2ca5b5",
"repositoryUrl": "https://github.com/lammertb/libcrc.git"
},
"comments": "dependency from tvm"
}
},
{
Expand Down
67 changes: 54 additions & 13 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ set(CMAKE_C_STANDARD 99)
include(CheckCXXCompilerFlag)
include(CheckLanguage)
include(CMakeDependentOption)
include(FetchContent)

set(CMAKE_CXX_STANDARD 17)

Expand Down Expand Up @@ -1330,27 +1331,65 @@ endif()

# TVM
if (onnxruntime_USE_TVM)
if (NOT TARGET tvm)
message(STATUS "Include TVM(*).")
include(tvm)
endif()
if (onnxruntime_USE_CUDA)
set(USE_CUDA ON)
if (onnxruntime_USE_STVM)
set(USE_CUDA ${onnxruntime_CUDA_HOME} CACHE BOOL "Only defined for TVM")
set(USE_MKLDNN ON CACHE BOOL "Only defined for TVM")
set(USE_CUDNN ON CACHE BOOL "Only defined for TVM")
endif()
if (onnxruntime_USE_NUPHAR)
set(USE_CUDA ON CACHE BOOL "Only defined for TVM")
endif()
endif()
if (onnxruntime_USE_LLVM)
set(USE_LLVM ON)
set(USE_LLVM ON CACHE BOOL "Only defined for TVM")
add_definitions(-DUSE_TVM_WITH_LLVM)
endif()

add_subdirectory(${PROJECT_SOURCE_DIR}/external/tvm EXCLUDE_FROM_ALL)
set_target_properties(tvm PROPERTIES FOLDER "External/tvm")
set_target_properties(tvm_topi PROPERTIES FOLDER "External/tvm")
set_target_properties(tvm_runtime PROPERTIES FOLDER "External/tvm")
if (onnxruntime_USE_STVM)
set(USE_OPENMP gnu CACHE STRING "Only defined for TVM")
set(USE_MICRO OFF CACHE BOOL "Only defined for TVM")
endif()
message(STATUS "TVM BEFORE USE_LLVM=${USE_LLVM} USE_OPENMP=${USE_OPENMP} USE_MICRO=${USE_MICRO} CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} USE_CUDA=${USE_CUDA} USE_GTEST=${USE_GTEST} CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
message(STATUS "tvm_SOURCE_DIR=${tvm_SOURCE_DIR}")
message(STATUS "tvm_BINARY_DIR=${tvm_BINARY_DIR}")
add_subdirectory(${tvm_SOURCE_DIR} ${tvm_BINARY_DIR} EXCLUDE_FROM_ALL)
message(STATUS "TVM AFTER USE_LLVM=${USE_LLVM} USE_OPENMP=${USE_OPENMP} USE_MICRO=${USE_MICRO} CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} USE_CUDA=${USE_CUDA} USE_GTEST=${USE_GTEST} CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")

if (onnxruntime_USE_NUPHAR)
set_target_properties(tvm PROPERTIES FOLDER ${tvm_SOURCE_DIR})
set_target_properties(tvm_topi PROPERTIES FOLDER ${tvm_SOURCE_DIR})
set_target_properties(tvm_runtime PROPERTIES FOLDER ${tvm_SOURCE_DIR})

set(TVM_INCLUDES ${tvm_SOURCE_DIR}/include
${tvm_SOURCE_DIR}/3rdparty/dmlc-core/include
${tvm_SOURCE_DIR}/3rdparty/dlpack/include
$<TARGET_PROPERTY:tvm,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:tvm_topi,INTERFACE_INCLUDE_DIRECTORIES>)
endif()

if (onnxruntime_USE_STVM)
set_target_properties(tvm PROPERTIES FOLDER ${tvm_SOURCE_DIR})

set(TVM_INCLUDES ${tvm_SOURCE_DIR}/include
${tvm_SOURCE_DIR}/3rdparty/dmlc-core/include
${tvm_SOURCE_DIR}/3rdparty/dlpack/include
$<TARGET_PROPERTY:tvm,INTERFACE_INCLUDE_DIRECTORIES>)
endif()

set(TVM_INCLUDES ${PROJECT_SOURCE_DIR}/external/tvm/include
${PROJECT_SOURCE_DIR}/external/tvm/3rdparty/dmlc-core/include
${PROJECT_SOURCE_DIR}/external/tvm/3rdparty/dlpack/include
$<TARGET_PROPERTY:tvm,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:tvm_topi,INTERFACE_INCLUDE_DIRECTORIES>)
add_definitions(-DUSE_TVM)

set(onnxruntime_tvm_libs onnxruntime_codegen_tvm)
if (onnxruntime_USE_NUPHAR)
set(onnxruntime_tvm_libs onnxruntime_codegen_tvm)
endif()
if (onnxruntime_USE_STVM)
set(onnxruntime_tvm_libs onnxruntime_providers_stvm)
endif()

# needs to link with stdc++fs in Linux
if (UNIX)
if (NOT APPLE)
Expand Down Expand Up @@ -1683,7 +1722,9 @@ if (onnxruntime_USE_TVM)
list(APPEND DISABLED_WARNINGS_FOR_TVM "-Wno-error=catch-value")
endif()
endif()
include(onnxruntime_codegen.cmake)
if (onnxruntime_USE_NUPHAR)
include(onnxruntime_codegen.cmake)
endif()
endif()

if (onnxruntime_ENABLE_MICROSOFT_INTERNAL)
Expand Down
1 change: 0 additions & 1 deletion cmake/external/tvm
Submodule tvm deleted from 9ec2b9
38 changes: 38 additions & 0 deletions cmake/external/tvm.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
if (onnxruntime_USE_STVM)
message(STATUS "onnxruntime_USE_STVM: Fetch tvm for STVM.")

FetchContent_Declare(
tvm
GIT_REPOSITORY https://github.com/apache/tvm.git
GIT_TAG v0.8.0
)

FetchContent_GetProperties(tvm)
if(NOT tvm_POPULATED)
FetchContent_Populate(tvm)
endif()

set(tvm_INCLUDE_DIRS ${tvm_SOURCE_DIR}/include)
set(onnxruntime_STVM_HOME ${tvm_SOURCE_DIR})
message(STATUS "Define onnxruntime_STVM_HOME.")
message(STATUS ${onnxruntime_STVM_HOME})

endif()

if (onnxruntime_USE_NUPHAR)
message(STATUS "onnxruntime_USE_NUPHAR: Fetch onnxruntime-tvm for NUPHAR.")

FetchContent_Declare(
tvm
GIT_REPOSITORY https://github.com/microsoft/onnxruntime-tvm.git
GIT_TAG 9ec2b92d180dff8877e402018b97baa574031b8b
)

FetchContent_GetProperties(tvm)
if(NOT tvm_POPULATED)
FetchContent_Populate(tvm)
endif()

set(tvm_INCLUDE_DIRS ${tvm_SOURCE_DIR}/include)

endif()
1 change: 0 additions & 1 deletion cmake/external/tvm_update
Submodule tvm_update deleted from 094a73
12 changes: 6 additions & 6 deletions cmake/onnxruntime_providers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1275,6 +1275,10 @@ if (onnxruntime_USE_ROCM)
endif()

if (onnxruntime_USE_STVM)
if (NOT TARGET tvm)
message(STATUS "Include TVM.")
include(tvm)
endif()
add_definitions(-DUSE_STVM=1)

file (GLOB_RECURSE onnxruntime_providers_stvm_cc_srcs CONFIGURE_DEPENDS
Expand All @@ -1293,20 +1297,16 @@ if (onnxruntime_USE_STVM)
${onnxruntime_STVM_HOME}/3rdparty/dlpack/include
${onnxruntime_STVM_HOME}/3rdparty/dmlc-core/include
${PYTHON_INLCUDE_DIRS})
onnxruntime_add_include_to_target(onnxruntime_providers_stvm onnxruntime_common onnx)
onnxruntime_add_include_to_target(onnxruntime_providers_stvm onnxruntime_common onnx tvm)

add_dependencies(onnxruntime_providers_stvm ${onnxruntime_EXTERNAL_DEPENDENCIES})

target_link_libraries(onnxruntime_providers_stvm PRIVATE
onnx
tvm
onnxruntime_common
onnxruntime_framework
)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
target_link_libraries(onnxruntime_providers_stvm PRIVATE ${onnxruntime_STVM_HOME}/build/libtvm.dylib)
else()
target_link_libraries(onnxruntime_providers_stvm PRIVATE ${onnxruntime_STVM_HOME}/build/libtvm.so)
endif()

set_target_properties(onnxruntime_providers_stvm PROPERTIES FOLDER "ONNXRuntime")
set_target_properties(onnxruntime_providers_stvm PROPERTIES LINKER_LANGUAGE CXX)
Expand Down
26 changes: 20 additions & 6 deletions cmake/onnxruntime_python.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -643,19 +643,16 @@ if (onnxruntime_USE_ROCM)
)
endif()

if (onnxruntime_USE_TVM)
if (onnxruntime_USE_NUPHAR)
add_custom_command(
TARGET onnxruntime_pybind11_state POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:tvm>
$<TARGET_FILE_DIR:${build_output_target}>/onnxruntime/capi/
)
endif()

if (onnxruntime_USE_NUPHAR)
file(GLOB onnxruntime_python_nuphar_python_srcs CONFIGURE_DEPENDS
"${ONNXRUNTIME_ROOT}/core/providers/nuphar/scripts/*"
)
"${ONNXRUNTIME_ROOT}/core/providers/nuphar/scripts/*"
)
add_custom_command(
TARGET onnxruntime_pybind11_state POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:${build_output_target}>/onnxruntime/nuphar
Expand All @@ -679,7 +676,24 @@ if (onnxruntime_USE_STVM)
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:onnxruntime_providers_stvm>
$<TARGET_FILE_DIR:${build_output_target}>/onnxruntime/capi/
COMMAND ${CMAKE_COMMAND} -E copy
${tvm_BINARY_DIR}/libtvm*
${tvm_SOURCE_DIR}/python/tvm
)

add_custom_command(
TARGET onnxruntime_pybind11_state POST_BUILD
WORKING_DIRECTORY ${tvm_SOURCE_DIR}/python
COMMAND ${Python_EXECUTABLE} setup.py build_ext --inplace
COMMAND ${CMAKE_COMMAND} -E rm
${tvm_SOURCE_DIR}/python/tvm/*.so
COMMAND ${CMAKE_COMMAND} -E env TVM_LIBRARY_PATH=${tvm_BINARY_DIR}
${Python_EXECUTABLE} setup.py bdist_wheel
COMMAND ${CMAKE_COMMAND} -E copy
${tvm_BINARY_DIR}/libtvm*
${tvm_SOURCE_DIR}/python/tvm
)

endif()

if (onnxruntime_USE_DML)
Expand Down
12 changes: 6 additions & 6 deletions cmake/onnxruntime_unittests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -459,12 +459,12 @@ if(onnxruntime_USE_COREML)
endif()
endif()

file(GLOB_RECURSE onnxruntime_test_tvm_src CONFIGURE_DEPENDS
"${TEST_SRC_DIR}/tvm/*.h"
"${TEST_SRC_DIR}/tvm/*.cc"
)

if(onnxruntime_USE_NUPHAR)
file(GLOB_RECURSE onnxruntime_test_tvm_src CONFIGURE_DEPENDS
"${TEST_SRC_DIR}/tvm/*.h"
"${TEST_SRC_DIR}/tvm/*.cc"
)

list(APPEND onnxruntime_test_framework_src_patterns ${TEST_SRC_DIR}/framework/nuphar/*)
list(APPEND onnxruntime_test_framework_libs onnxruntime_providers_nuphar)
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_nuphar)
Expand Down Expand Up @@ -644,7 +644,7 @@ if (onnxruntime_ENABLE_TRAINING)
list(APPEND all_tests ${onnxruntime_test_training_src})
endif()

if (onnxruntime_USE_TVM)
if (onnxruntime_USE_NUPHAR)
list(APPEND all_tests ${onnxruntime_test_tvm_src})
endif()

Expand Down
Loading

0 comments on commit 481b96d

Please sign in to comment.