Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pytorch runner #27

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 28 additions & 13 deletions CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,23 @@ set(protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED)
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED)
find_package(Torch REQUIRED)

set(CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
${CMAKE_MODULE_PATH}
)
message("CMAKE Module path: ${CMAKE_MODULE_PATH}")


set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib CACHE PATH "Output directory for static libraries")

include_directories(${Protobuf_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fPIC")

# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")

set (CMAKE_CXX_STANDARD 17)

option(LLVM_MLBRIDGE "MLCompilerBridge install for LLVM" OFF)
Expand Down Expand Up @@ -65,10 +71,12 @@ if(LLVM_MLBRIDGE)
LINK_LIBS
ModelRunnerLib
SerDesLib
)
)

target_link_libraries(LLVMMLBridge PRIVATE "${TORCH_LIBRARIES}")

target_include_directories(LLVMMLBridge SYSTEM PUBLIC ${Protobuf_INCLUDE_DIRS} ${TENSORFLOW_AOT_PATH}/include)
target_include_directories(LLVMMLBridge PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(LLVMMLBridge SYSTEM PRIVATE ${Protobuf_INCLUDE_DIRS} ${TENSORFLOW_AOT_PATH}/include)
target_include_directories(LLVMMLBridge PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
install(TARGETS LLVMMLBridge DESTINATION lib)
add_custom_command(TARGET LLVMMLBridge
POST_BUILD
Expand All @@ -79,28 +87,35 @@ else()
llvm_map_components_to_libnames(llvm_libs support core irreader analysis TransformUtils)

add_library(MLCompilerBridge STATIC tools.cpp)
target_link_libraries(MLCompilerBridge PUBLIC SerDesLib ModelRunnerLib ONNXModelRunnerLib ${llvm_libs})
target_link_libraries(MLCompilerBridge PRIVATE SerDesLib ModelRunnerLib ONNXModelRunnerLib ${llvm_libs})
target_link_libraries(MLCompilerBridge PRIVATE "${TORCH_LIBRARIES}")
set_target_properties(MLCompilerBridge PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set_property(TARGET MLCompilerBridge PROPERTY POSITION_INDEPENDENT_CODE 1)
install(TARGETS MLCompilerBridge DESTINATION lib)


add_library(MLCompilerBridgeC STATIC $<TARGET_OBJECTS:ModelRunnerCWrapper>)
target_link_libraries(MLCompilerBridgeC PUBLIC SerDesCLib ModelRunnerCLib ONNXModelRunnerLib ${llvm_libs})
target_include_directories(MLCompilerBridgeC PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${LLVM_INCLUDE_DIRS})
target_link_libraries(MLCompilerBridgeC PRIVATE SerDesCLib ModelRunnerCLib ONNXModelRunnerLib ${llvm_libs})

target_include_directories(MLCompilerBridgeC PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${LLVM_INCLUDE_DIRS})
target_compile_features(MLCompilerBridgeC PRIVATE cxx_std_17)
target_compile_definitions(MLCompilerBridgeC PRIVATE C_LIBRARY)
set_property(TARGET MLCompilerBridgeC PROPERTY POSITION_INDEPENDENT_CODE 1)
set_target_properties(MLCompilerBridgeC PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
install(TARGETS MLCompilerBridgeC DESTINATION lib)
if(MLBRIDGE_ENABLE_TEST)
add_executable(MLCompilerBridgeTest $<TARGET_OBJECTS:MLBridgeCPPTest>)
target_link_libraries(MLCompilerBridgeTest PUBLIC MLCompilerBridge)
set_target_properties(MLCompilerBridgeTest PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
install(TARGETS MLCompilerBridgeTest DESTINATION bin)
endif()
endif(LLVM_MLBRIDGE)
add_executable(MLCompilerBridgeTest $<TARGET_OBJECTS:MLBridgeCPPTest>)
target_link_libraries(MLCompilerBridgeTest PRIVATE MLCompilerBridge)
set_target_properties(MLCompilerBridgeTest PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
install(TARGETS MLCompilerBridgeTest DESTINATION bin)
endif()
endif(LLVM_MLBRIDGE)

install(DIRECTORY include/ DESTINATION include)
install(DIRECTORY CompilerInterface DESTINATION MLModelRunner/CompilerInterface)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/CompilerInterface DESTINATION ${CMAKE_BINARY_DIR}/MLModelRunner/)
set_property(TARGET MLCompilerBridge PROPERTY CXX_STANDARD 17)



message(STATUS "TensorFlow HH version: ${TensorFlow_VERSION}")
4 changes: 3 additions & 1 deletion MLModelRunner/C/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
find_package(Torch REQUIRED)
add_library(ModelRunnerCWrapper OBJECT PipeModelRunnerCWrapper.cpp ONNXModelRunnerCWrapper.cpp)
target_include_directories(ModelRunnerCWrapper PUBLIC ${TENSORFLOW_AOT_PATH}/include)
target_include_directories(ModelRunnerCWrapper PRIVATE ${TENSORFLOW_AOT_PATH}/include)
target_link_libraries(ModelRunnerCWrapper PRIVATE "${TORCH_LIBRARIES}")
9 changes: 6 additions & 3 deletions MLModelRunner/CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
find_package(Torch REQUIRED)
add_subdirectory(Utils)
set(PROTOS_DIRECTORY "" CACHE PATH "Path to the directory containing the proto files")
if(NOT PROTOS_DIRECTORY STREQUAL "")
Expand Down Expand Up @@ -35,7 +36,7 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "")
endif()

add_library(ModelRunnerCLib OBJECT PipeModelRunner.cpp)
target_link_libraries(ModelRunnerCLib PUBLIC ModelRunnerCUtils ONNXModelRunnerLib)
target_link_libraries(ModelRunnerCLib PRIVATE ModelRunnerCUtils ONNXModelRunnerLib)
target_compile_definitions(ModelRunnerCLib PRIVATE C_LIBRARY)

if(LLVM_MLBRIDGE)
Expand All @@ -44,9 +45,11 @@ else()
add_library(ModelRunnerLib OBJECT PipeModelRunner.cpp)
endif(LLVM_MLBRIDGE)

target_link_libraries(ModelRunnerLib PUBLIC ModelRunnerUtils ONNXModelRunnerLib)
target_link_libraries(ModelRunnerLib PRIVATE ModelRunnerUtils ONNXModelRunnerLib "${TORCH_LIBRARIES}")


if(NOT PROTOS_DIRECTORY STREQUAL "")
target_link_libraries(ModelRunnerLib PUBLIC gRPCModelRunnerLib)
target_link_libraries(ModelRunnerLib PRIVATE gRPCModelRunnerLib)
endif()
set_property(TARGET ModelRunnerLib PROPERTY POSITION_INDEPENDENT_CODE 1)
set_property(TARGET ModelRunnerLib PROPERTY CXX_STANDARD 17)
31 changes: 17 additions & 14 deletions MLModelRunner/ONNXModelRunner/CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -DORT_NO_EXCEPTIONS")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -DORT_NO_EXCEPTIONS")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra")

find_package(Onnxruntime REQUIRED)
Expand All @@ -13,30 +13,30 @@ option(onnxruntime_USE_TENSORRT "Build with TensorRT support" OFF)

set(ONNXRUNTIME_ROOTDIR "" CACHE PATH "Directory that contains ONNXRuntime" )
if(NOT ONNXRUNTIME_ROOTDIR)
message( FATAL_ERROR "Set path to Onnx runtime in -DONNXRUNTIME_ROOTDIR variable" )
message( FATAL_ERROR "Set path to Onnx runtime in -DONNXRUNTIME_ROOTDIR variable" )
endif()

if(onnxruntime_USE_CUDA)
add_definitions(-DUSE_CUDA)
add_definitions(-DUSE_CUDA)
endif()
if(onnxruntime_USE_OPENVINO)
add_definitions(-DUSE_OPENVINO)
add_definitions(-DUSE_OPENVINO)
endif()
if(onnxruntime_USE_NNAPI_BUILTIN)
add_definitions(-DUSE_NNAPI)
add_definitions(-DUSE_NNAPI)
endif()
if(onnxruntime_USE_DNNL)
add_definitions(-DUSE_DNNL)
add_definitions(-DUSE_DNNL)
endif()
if(onnxruntime_USE_NUPHAR)
add_definitions(-DUSE_NUPHAR)
add_definitions(-DUSE_NUPHAR)
endif()
if(onnxruntime_USE_TENSORRT)
add_definitions(-DUSE_TENSORRT)
add_definitions(-DUSE_TENSORRT)
endif()
if(onnxruntime_USE_DML)
message("Enabling DML")
add_definitions(-DUSE_DML)
message("Enabling DML")
add_definitions(-DUSE_DML)
endif()

if(LLVM_MLBRIDGE)
Expand All @@ -47,10 +47,13 @@ ONNXModelRunner.cpp
)
else()
add_library(ONNXModelRunnerLib OBJECT onnx.cpp
agent.cpp
ONNXModelRunner.cpp
)
agent.cpp
ONNXModelRunner.cpp
)
endif(LLVM_MLBRIDGE)

target_link_libraries(ONNXModelRunnerLib PRIVATE Onnxruntime::Onnxruntime)
target_include_directories(ONNXModelRunnerLib PUBLIC ${TENSORFLOW_AOT_PATH}/include)
target_include_directories(ONNXModelRunnerLib PRIVATE ${TENSORFLOW_AOT_PATH}/include)
find_package(Torch REQUIRED)
target_link_libraries(ONNXModelRunnerLib PRIVATE ${TORCH_LIBRARIES})

Empty file modified MLModelRunner/ONNXModelRunner/ONNXModelRunner.cpp
100755 → 100644
Empty file.
Empty file modified MLModelRunner/ONNXModelRunner/agent.cpp
100755 → 100644
Empty file.
7 changes: 7 additions & 0 deletions MLModelRunner/PTModelRunner.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
//=== PTModelRunner.cpp - PTModelRunner Implementation ---*- C++ -*-===//
//
// Part of the MLCompilerBridge Project
//
//===------------------===//

#include "MLModelRunner/PTModelRunner.h"
2 changes: 1 addition & 1 deletion MLModelRunner/Utils/CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ if(LLVM_MLBRIDGE)
add_llvm_component_library(ModelRunnerUtils
MLConfig.cpp
)
target_include_directories(ModelRunnerUtils PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
target_include_directories(ModelRunnerUtils PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include)

else()
add_library(ModelRunnerCUtils OBJECT MLConfig.cpp)
Expand Down
7 changes: 5 additions & 2 deletions MLModelRunner/gRPCModelRunner/CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
set(protobuf_MODULE_COMPATIBLE TRUE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(Torch REQUIRED)
find_package(Protobuf CONFIG REQUIRED)
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
set(_REFLECTION gRPC::grpc++_reflection)
Expand All @@ -12,7 +13,7 @@ endif()
# Find gRPC installation
# Looks for gRPCConfig.cmake file installed by gRPC's cmake installation.

find_package(gRPC 1.58.0 EXACT CONFIG REQUIRED)
find_package(gRPC 1.34.0 EXACT CONFIG REQUIRED)
message(STATUS "Using gRPC ${gRPC_VERSION}")

set(_GRPC_GRPCPP gRPC::grpc++)
Expand Down Expand Up @@ -96,9 +97,11 @@ target_link_libraries(gRPCModelRunnerLib
PRIVATE ${_REFLECTION}
${_GRPC_GRPCPP}
${_PROTOBUF_LIBPROTOBUF}
"${TORCH_LIBRARIES}"
)

target_include_directories(gRPCModelRunnerLib
PRIVATE ${CMAKE_BINARY_DIR}/include/Service
PUBLIC ${Protobuf_INCLUDE_DIRS}
PRIVATE ${Protobuf_INCLUDE_DIRS}
)
set_property(TARGET gRPCModelRunnerLib PROPERTY CXX_STANDARD 17)
31 changes: 20 additions & 11 deletions SerDes/CMakeLists.txt
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED)
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED)


if(LLVM_MLBRIDGE)
add_llvm_library(SerDesLib
TensorSpec.cpp
jsonSerDes.cpp
bitstreamSerDes.cpp
protobufSerDes.cpp
tensorflowSerDes.cpp
)
target_compile_definitions(SerDesLib PRIVATE LLVM_MLBRIDGE)
add_llvm_library(SerDesLib
TensorSpec.cpp
jsonSerDes.cpp
bitstreamSerDes.cpp
protobufSerDes.cpp
pytorchSerDes.cpp
tensorflowSerDes.cpp
)
target_compile_definitions(SerDesLib PRIVATE LLVM_MLBRIDGE)
else()
add_library(SerDesLib OBJECT TensorSpec.cpp jsonSerDes.cpp bitstreamSerDes.cpp protobufSerDes.cpp tensorflowSerDes.cpp)
# add_library(SerDesLib OBJECT TensorSpec.cpp jsonSerDes.cpp bitstreamSerDes.cpp protobufSerDes.cpp tensorflowSerDes.cpp pytorchSerDes.cpp)
add_library(SerDesLib OBJECT TensorSpec.cpp jsonSerDes.cpp bitstreamSerDes.cpp pytorchSerDes.cpp)


add_library(SerDesCLib OBJECT TensorSpec.cpp jsonSerDes.cpp bitstreamSerDes.cpp)
add_library(SerDesCLib OBJECT TensorSpec.cpp jsonSerDes.cpp bitstreamSerDes.cpp )
endif()
target_include_directories(SerDesLib PUBLIC ${TENSORFLOW_AOT_PATH}/include)
target_include_directories(SerDesLib PRIVATE ${TENSORFLOW_AOT_PATH}/include)
# find_package(Torch REQUIRED)
target_link_libraries(SerDesLib PRIVATE tf_xla_runtime)
target_link_libraries(SerDesLib PRIVATE ${TORCH_LIBRARIES})
set_property(TARGET SerDesLib PROPERTY CXX_STANDARD 17)
2 changes: 2 additions & 0 deletions SerDes/protobufSerDes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
#include <type_traits>
#include <vector>

using namespace google::protobuf;

namespace MLBridge {
inline void ProtobufSerDes::setFeature(const std::string &name,
const int value) {
Expand Down
Loading