diff --git a/core/util/macros.h b/core/util/macros.h index 7c6c12d8d2..ee3858c781 100644 --- a/core/util/macros.h +++ b/core/util/macros.h @@ -25,6 +25,19 @@ #define LOG_ERROR_OWN(l,s) TRTORCH_LOG(l, core::util::logging::LogLevel::kERROR, s) #define LOG_INTERNAL_ERROR_OWN(l,s) TRTORCH_LOG(l, core::util::logging::LogLevel::kINTERNAL_ERROR, s) +#ifdef _MSC_VER + +#define EXPAND( x ) x + +#define LOG_GRAPH(...) EXPAND(GET_MACRO(__VA_ARGS__, LOG_GRAPH_OWN, LOG_GRAPH_GLOBAL)(__VA_ARGS__)) +#define LOG_DEBUG(...) EXPAND(GET_MACRO(__VA_ARGS__, LOG_DEBUG_OWN, LOG_DEBUG_GLOBAL)(__VA_ARGS__)) +#define LOG_INFO(...) EXPAND(GET_MACRO(__VA_ARGS__, LOG_INFO_OWN, LOG_INFO_GLOBAL)(__VA_ARGS__)) +#define LOG_WARNING(...) EXPAND(GET_MACRO(__VA_ARGS__, LOG_WARNING_OWN, LOG_WARNING_GLOBAL)(__VA_ARGS__)) +#define LOG_ERROR(...) EXPAND(GET_MACRO(__VA_ARGS__, LOG_ERROR_OWN, LOG_ERROR_GLOBAL)(__VA_ARGS__)) +#define LOG_INTERNAL_ERROR(...) EXPAND(GET_MACRO(__VA_ARGS__, LOG_INTERNAL_ERROR_OWN, LOG_INTERNAL_ERROR_GLOBAL)(__VA_ARGS__)) + +#else + #define LOG_GRAPH(...) GET_MACRO(__VA_ARGS__, LOG_GRAPH_OWN, LOG_GRAPH_GLOBAL)(__VA_ARGS__) #define LOG_DEBUG(...) GET_MACRO(__VA_ARGS__, LOG_DEBUG_OWN, LOG_DEBUG_GLOBAL)(__VA_ARGS__) #define LOG_INFO(...) GET_MACRO(__VA_ARGS__, LOG_INFO_OWN, LOG_INFO_GLOBAL)(__VA_ARGS__) @@ -32,6 +45,7 @@ #define LOG_ERROR(...) GET_MACRO(__VA_ARGS__, LOG_ERROR_OWN, LOG_ERROR_GLOBAL)(__VA_ARGS__) #define LOG_INTERNAL_ERROR(...) GET_MACRO(__VA_ARGS__, LOG_INTERNAL_ERROR_OWN, LOG_INTERNAL_ERROR_GLOBAL)(__VA_ARGS__) +#endif // ---------------------------------------------------------------------------- // Error reporting macros // ---------------------------------------------------------------------------- diff --git a/cpp/api/include/trtorch/trtorch.h b/cpp/api/include/trtorch/trtorch.h index 152769971d..8e2757ad3b 100644 --- a/cpp/api/include/trtorch/trtorch.h +++ b/cpp/api/include/trtorch/trtorch.h @@ -90,7 +90,7 @@ struct TRTORCH_API ExtraInfo { * This class is compatable with c10::DataTypes (but will check for TRT support) * so there should not be a reason that you need to use this type explictly. */ - class DataType { + class TRTORCH_API DataType { public: /** * Underlying enum class to support the DataType Class diff --git a/cpp/trtorchc/main.cpp b/cpp/trtorchc/main.cpp index cd971f8d8e..b37e2a53e9 100644 --- a/cpp/trtorchc/main.cpp +++ b/cpp/trtorchc/main.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #ifdef linux #include @@ -9,6 +8,14 @@ #define PATH_MAX 260 #endif +#if defined(_WIN32) +#include +#define getcwd _getcwd +#define realpath(N,R) _fullpath((R),(N),PATH_MAX) +#else +#include +#endif + #include "NvInfer.h" #include "third_party/args/args.hpp" #include "torch/torch.h" @@ -366,4 +373,4 @@ int main(int argc, char** argv) { } return 0; -} \ No newline at end of file +} diff --git a/third_party/cuda/BUILD b/third_party/cuda/BUILD index 5f9216cf47..c49afcc132 100644 --- a/third_party/cuda/BUILD +++ b/third_party/cuda/BUILD @@ -8,12 +8,22 @@ config_setting( ], ) +config_setting( + name = "windows", + constraint_values = [ + "@platforms//os:windows", + ], +) + cc_library( name = "cudart", srcs = select({ ":aarch64_linux": [ "targets/aarch64-linux/lib/libcudart.so", ], + ":windows": [ + "lib/x64/cudart.lib", + ], "//conditions:default": [ "targets/x86_64-linux/lib/libcudart.so", ], @@ -32,6 +42,9 @@ cc_library( ":aarch64_linux": [ "targets/aarch64-linux/lib/libnvToolsExt.so.1", ], + ":windows": [ + "bin/nvToolsExt64_1.dll", + ], "//conditions:default": [ "targets/x86_64-linux/lib/libnvToolsExt.so.1", ], @@ -44,6 +57,9 @@ cc_library( ":aarch64_linux": glob([ "targets/aarch64-linux/lib/**/lib*.so", ]), + ":windows": [ + "bin/*.dll", + ], "//conditions:default": glob([ "targets/x86_64-linux/lib/**/lib*.so", ]), @@ -59,9 +75,17 @@ cc_library( cc_library( name = "cublas", - srcs = glob([ - "lib/**/*libcublas.so", - ]), + srcs = select({ + ":aarch64_linux": glob([ + "lib/**/*libcublas.so", + ]), + ":windows": glob([ + "lib/x64/cublas.lib", + ]), + "//conditions:default": glob([ + "lib/**/*libcublas.so", + ]), + }), hdrs = glob([ "include/**/*cublas*.h", "include/**/*.hpp", diff --git a/third_party/cudnn/local/BUILD b/third_party/cudnn/local/BUILD index b9c154b09d..8c3983731b 100644 --- a/third_party/cudnn/local/BUILD +++ b/third_party/cudnn/local/BUILD @@ -8,6 +8,13 @@ config_setting( ], ) +config_setting( + name = "windows", + constraint_values = [ + "@platforms//os:windows", + ], +) + cc_library( name = "cudnn_headers", hdrs = ["include/cudnn.h"] + glob(["include/cudnn+.h"]), @@ -19,6 +26,7 @@ cc_import( name = "cudnn_lib", shared_library = select({ ":aarch64_linux": "lib/aarch64-linux-gnu/libcudnn.so", + ":windows": glob(["bin/cudnn64_*.dll"])[0], "//conditions:default": "lib/x86_64-linux-gnu/libcudnn.so", }), visibility = ["//visibility:private"], diff --git a/third_party/libtorch/BUILD b/third_party/libtorch/BUILD index 9d8e7f2d11..e776864edc 100644 --- a/third_party/libtorch/BUILD +++ b/third_party/libtorch/BUILD @@ -1,5 +1,12 @@ package(default_visibility = ["//visibility:public"]) +config_setting( + name = "windows", + constraint_values = [ + "@platforms//os:windows", + ], +) + cc_library( name = "libtorch", deps = [ @@ -18,12 +25,20 @@ cc_library( ) + glob([ 'include/torch/csrc/api/include/**/*.h' ]), - srcs = [ - 'lib/libtorch.so', - 'lib/libtorch_cuda.so', - 'lib/libtorch_cpu.so', - 'lib/libtorch_global_deps.so', - ], + srcs = select({ + ":windows": [ + 'lib/torch.lib', + 'lib/torch_cuda.lib', + 'lib/torch_cpu.lib', + 'lib/torch_global_deps.dll', + ], + "//conditions:default": [ + 'lib/libtorch.so', + 'lib/libtorch_cuda.so', + 'lib/libtorch_cpu.so', + 'lib/libtorch_global_deps.so', + ], + }), deps = [ ":ATen", ":c10_cuda", @@ -39,7 +54,10 @@ cc_library( hdrs = glob([ 'include/c10/**/*.h' ]), - srcs = ["lib/libc10_cuda.so"], + srcs = select({ + ":windows": ["lib/c10_cuda.lib"], + "//conditions:default": ["lib/libc10_cuda.so"], + }), strip_include_prefix = "include", deps = [ ":c10" @@ -51,7 +69,10 @@ cc_library( hdrs = glob([ 'include/c10/**/*.h' ]), - srcs = ["lib/libc10.so"], + srcs = select({ + ":windows": ["lib/c10.lib"], + "//conditions:default": ["lib/libc10.so"], + }), strip_include_prefix = "include", ) @@ -68,11 +89,18 @@ cc_library( hdrs = glob([ 'include/caffe2/**/*.h' ]), - srcs = [ - 'lib/libcaffe2_nvrtc.so', - 'lib/libcaffe2_detectron_ops_gpu.so', - 'lib/libcaffe2_observers.so', - 'lib/libcaffe2_module_test_dynamic.so' - ], + srcs = select({ + ":windows": [ + 'lib/caffe2_nvrtc.lib', + 'lib/caffe2_detectron_ops_gpu.lib', + 'lib/caffe2_module_test_dynamic.lib' + ], + "//conditions:default": [ + 'lib/libcaffe2_nvrtc.so', + 'lib/libcaffe2_detectron_ops_gpu.so', + 'lib/libcaffe2_observers.so', + 'lib/libcaffe2_module_test_dynamic.so' + ], + }), strip_include_prefix = "include", ) \ No newline at end of file diff --git a/third_party/tensorrt/local/BUILD b/third_party/tensorrt/local/BUILD index 867f755d9e..e512a36f22 100644 --- a/third_party/tensorrt/local/BUILD +++ b/third_party/tensorrt/local/BUILD @@ -8,6 +8,13 @@ config_setting( ], ) +config_setting( + name = "windows", + constraint_values = [ + "@platforms//os:windows", + ], +) + cc_library( name = "nvinfer_headers", hdrs = select({ @@ -22,6 +29,17 @@ cc_library( "include/aarch64-linux-gnu/NvInferPluginUtils.h", ], ), + ":windows": [ + "include/NvUtils.h", + ] + glob( + [ + "include/NvInfer*.h", + ], + exclude = [ + "include/NvInferPlugin.h", + "include/NvInferPluginUtils.h", + ], + ), "//conditions:default": [ "include/x86_64-linux-gnu/NvUtils.h", ] + glob( @@ -36,6 +54,7 @@ cc_library( }), includes = select({ ":aarch64_linux": ["include/aarch64-linux-gnu"], + ":windows": ["include/"], "//conditions:default": ["include/x86_64-linux-gnu/"], }), visibility = ["//visibility:private"], @@ -45,6 +64,7 @@ cc_import( name = "nvinfer_lib", shared_library = select({ ":aarch64_linux": "lib/aarch64-linux-gnu/libnvinfer.so", + ":windows": "lib/nvinfer.dll", "//conditions:default": "lib/x86_64-linux-gnu/libnvinfer.so", }), visibility = ["//visibility:private"], @@ -52,6 +72,7 @@ cc_import( cc_library( name = "nvinfer", + srcs = select({ ":windows": [ "lib/nvinfer.lib" ] }), deps = [ "nvinfer_headers", "nvinfer_lib", @@ -68,6 +89,7 @@ cc_import( name = "nvparsers_lib", shared_library = select({ ":aarch64_linux": "lib/aarch64-linux-gnu/libnvparsers.so", + ":windows": "lib/nvparsers.dll", "//conditions:default": "lib/x86_64-linux-gnu/libnvparsers.so", }), visibility = ["//visibility:private"], @@ -84,6 +106,13 @@ cc_library( "include/aarch64-linux-gnu/NvOnnxConfig.h", "include/aarch64-linux-gnu/NvUffParser.h" ], + ":windows": [ + "include/NvCaffeParser.h", + "include/NvOnnxParser.h", + "include/NvOnnxParserRuntime.h", + "include/NvOnnxConfig.h", + "include/NvUffParser.h" + ], "//conditions:default": [ "include/x86_64-linux-gnu/NvCaffeParser.h", "include/x86_64-linux-gnu/NvOnnxParser.h", @@ -94,6 +123,7 @@ cc_library( }), includes = select({ ":aarch64_linux": ["include/aarch64-linux-gnu"], + ":windows": ["include/"], "//conditions:default": ["include/x86_64-linux-gnu/"], }), visibility = ["//visibility:private"], @@ -115,6 +145,7 @@ cc_import( name = "nvonnxparser_lib", shared_library = select({ ":aarch64_linux": "lib/aarch64-linux-gnu/libnvonnxparser.so", + ":windows": "lib/nvonnxparser.dll", "//conditions:default": "lib/x86_64-linux-gnu/libnvonnxparser.so", }), visibility = ["//visibility:private"], @@ -128,6 +159,11 @@ cc_library( "include/aarch64-linux-gnu/NvOnnxParserRuntime.h", "include/aarch64-linux-gnu/NvOnnxConfig.h" ], + ":windows": [ + "include/NvOnnxParser.h", + "include/NvOnnxParserRuntime.h", + "include/NvOnnxConfig.h" + ], "//conditions:default": [ "include/x86_64-linux-gnu/NvOnnxParser.h", "include/x86_64-linux-gnu/NvOnnxParserRuntime.h", @@ -136,6 +172,7 @@ cc_library( }), includes = select({ ":aarch64_linux": ["include/aarch64-linux-gnu"], + ":windows": ["include/"], "//conditions:default": ["include/x86_64-linux-gnu/"], }), visibility = ["//visibility:private"], @@ -157,6 +194,7 @@ cc_import( name = "nvonnxparser_runtime_lib", shared_library = select({ ":aarch64_linux": "lib/x86_64-linux-gnu/libnvonnxparser_runtime.so", + ":windows": "lib/nvonnxparser_runtime.dll", "//conditions:default": "lib/x86_64-linux-gnu/libnvonnxparser_runtime.so", }), visibility = ["//visibility:public"], @@ -168,12 +206,16 @@ cc_library( ":aarch64_linux": [ "include/aarch64-linux-gnu/NvOnnxParserRuntime.h", ], + ":windows": [ + "include/NvOnnxParserRuntime.h", + ], "//conditions:default": [ "include/x86_64-linux-gnu/NvOnnxParserRuntime.h", ] }), includes = select({ ":aarch64_linux": ["include/aarch64-linux-gnu"], + ":windows": ["include/"], "//conditions:default": ["include/x86_64-linux-gnu/"], }), visibility = ["//visibility:private"], @@ -195,6 +237,7 @@ cc_import( name = "nvcaffeparser_lib", shared_library = select({ ":aarch64_linux": "lib/aarch64-linux-gnu/libnvcaffe_parsers.so", + ":windows": "lib/nvcaffe_parsers.dll", "//conditions:default": "lib/x86_64-linux-gnu/libnvcaffe_parsers.so", }), visibility = ["//visibility:private"], @@ -206,12 +249,16 @@ cc_library( ":aarch64_linux": [ "include/aarch64-linux-gnu/NvCaffeParser.h", ], + ":windows": [ + "include/NvCaffeParser.h", + ], "//conditions:default": [ "include/x86_64-linux-gnu/NvCaffeParser.h", ] }), includes = select({ ":aarch64_linux": ["include/aarch64-linux-gnu"], + ":windows": ["include/"], "//conditions:default": ["include/x86_64-linux-gnu/"], }), visibility = ["//visibility:private"], @@ -233,6 +280,7 @@ cc_import( name = "nvinferplugin_lib", shared_library = select({ ":aarch64_linux": "lib/x86_64-linux-gnu/libnvinfer_plugin.so", + ":windows": "lib/nvinfer_plugin.dll", "//conditions:default": "lib/x86_64-linux-gnu/libnvinfer_plugin.so", }), visibility = ["//visibility:private"], @@ -242,10 +290,12 @@ cc_library( name = "nvinferplugin_headers", hdrs = select({ ":aarch64_linux": glob(["include/aarch64-linux-gnu/NvInferPlugin*.h"]), + ":windows": glob(["include/NvInferPlugin*.h"]), "//conditions:default": glob(["include/x86_64-linux-gnu/NvInferPlugin*.h"]) }), includes = select({ ":aarch64_linux": ["include/aarch64-linux-gnu"], + ":windows": ["include/"], "//conditions:default": ["include/x86_64-linux-gnu/"], }), visibility = ["//visibility:private"],