From 1d9b586ac23de54161a9ff14068abf7d5ed46c77 Mon Sep 17 00:00:00 2001 From: Robin Kahlow Date: Sun, 29 Mar 2020 22:36:51 +0100 Subject: [PATCH 1/3] expose directml provider to python --- .../python/onnxruntime_pybind_state.cc | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/onnxruntime/python/onnxruntime_pybind_state.cc b/onnxruntime/python/onnxruntime_pybind_state.cc index c50b762cf4974..54c8781f0bf71 100644 --- a/onnxruntime/python/onnxruntime_pybind_state.cc +++ b/onnxruntime/python/onnxruntime_pybind_state.cc @@ -79,7 +79,13 @@ #define BACKEND_OPENBLAS "" #endif -#define BACKEND_DEVICE BACKEND_PROC BACKEND_DNNL BACKEND_MKLML BACKEND_NGRAPH BACKEND_OPENVINO BACKEND_NUPHAR BACKEND_OPENBLAS +#if USE_DML +#define BACKEND_DML "-DML" +#else +#define BACKEND_DML "" +#endif + +#define BACKEND_DEVICE BACKEND_PROC BACKEND_DNNL BACKEND_MKLML BACKEND_NGRAPH BACKEND_OPENVINO BACKEND_NUPHAR BACKEND_OPENBLAS BACKEND_DML #include "core/session/onnxruntime_cxx_api.h" #include "core/providers/providers.h" #include "core/providers/cpu/cpu_execution_provider.h" @@ -107,6 +113,9 @@ std::string nuphar_settings; #ifdef USE_BRAINSLICE #include "core/providers/brainslice/brainslice_provider_factory.h" #endif +#ifdef USE_DML +#include "core/providers/dml/dml_provider_factory.h" +#endif namespace onnxruntime { std::shared_ptr CreateExecutionProviderFactory_CPU(int use_arena); @@ -117,6 +126,7 @@ std::shared_ptr CreateExecutionProviderFactory_NGraph std::shared_ptr CreateExecutionProviderFactory_OpenVINO(const char* device); std::shared_ptr CreateExecutionProviderFactory_Nuphar(bool, const char*); std::shared_ptr CreateExecutionProviderFactory_BrainSlice(uint32_t ip, int, int, bool, const char*, const char*, const char*); +std::shared_ptr CreateExecutionProviderFactory_DML(int device_id); } // namespace onnxruntime #if defined(_MSC_VER) @@ -293,6 +303,9 @@ const std::vector& GetAvailableProviders() { #endif #ifdef USE_BRAINSLICE available_providers.push_back(kBrainSliceExecutionProvider); +#endif +#ifdef USE_DML + available_providers.push_back(kDmlExecutionProvider); #endif return available_providers; }; @@ -333,6 +346,10 @@ void RegisterExecutionProviders(InferenceSession* sess, const std::vector Date: Sun, 29 Mar 2020 23:22:32 +0100 Subject: [PATCH 2/3] add -dml to package name when use_dml is specified --- setup.py | 4 ++++ tools/ci_build/build.py | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 34d77b699f96c..d7c5f01cb9618 100644 --- a/setup.py +++ b/setup.py @@ -46,6 +46,10 @@ package_name = 'onnxruntime-nuphar' sys.argv.remove('--use_nuphar') +elif '--use_dml' in sys.argv: + package_name = 'onnxruntime-dml' + sys.argv.remove('--use_dml') + if '--nightly_build' in sys.argv: package_name = 'ort-nightly' nightly_build = True diff --git a/tools/ci_build/build.py b/tools/ci_build/build.py index e52165689fa3c..1192382df6484 100755 --- a/tools/ci_build/build.py +++ b/tools/ci_build/build.py @@ -782,7 +782,7 @@ def nuphar_run_python_tests(build_dir, configs): run_subprocess([sys.executable, 'onnxruntime_test_python_nuphar.py'], cwd=cwd, dll_path=dll_path) -def build_python_wheel(source_dir, build_dir, configs, use_cuda, use_ngraph, use_dnnl, use_tensorrt, use_openvino, use_nuphar, nightly_build = False): +def build_python_wheel(source_dir, build_dir, configs, use_cuda, use_ngraph, use_dnnl, use_tensorrt, use_openvino, use_nuphar, use_dml, nightly_build = False): for config in configs: cwd = get_config_build_dir(build_dir, config) if is_windows(): @@ -802,6 +802,8 @@ def build_python_wheel(source_dir, build_dir, configs, use_cuda, use_ngraph, use args.append('--use_openvino') elif use_nuphar: args.append('--use_nuphar') + elif use_dml: + args.append('--use_dml') run_subprocess(args, cwd=cwd) def build_protoc_for_host(cmake_path, source_dir, build_dir, args): @@ -1051,7 +1053,7 @@ def main(): if args.build: if args.build_wheel: nightly_build = bool(os.getenv('NIGHTLY_BUILD') == '1') - build_python_wheel(source_dir, build_dir, configs, args.use_cuda, args.use_ngraph, args.use_dnnl, args.use_tensorrt, args.use_openvino, args.use_nuphar, nightly_build) + build_python_wheel(source_dir, build_dir, configs, args.use_cuda, args.use_ngraph, args.use_dnnl, args.use_tensorrt, args.use_openvino, args.use_nuphar, args.use_dml, nightly_build) if args.gen_doc and (args.build or args.test): generate_documentation(source_dir, build_dir, configs) From dae9a6fee917c9ce96252b222c38ffe3466a00e2 Mon Sep 17 00:00:00 2001 From: Robin Kahlow Date: Tue, 5 May 2020 23:45:10 +0100 Subject: [PATCH 3/3] fixed typo (wrong argument order in build_python_wheel for dml) --- tools/ci_build/build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci_build/build.py b/tools/ci_build/build.py index 0b6062c06972c..cc0e17573170f 100755 --- a/tools/ci_build/build.py +++ b/tools/ci_build/build.py @@ -1343,7 +1343,7 @@ def nuphar_run_python_tests(build_dir, configs): def build_python_wheel( source_dir, build_dir, configs, use_cuda, use_ngraph, use_dnnl, - use_tensorrt, use_openvino, use_nuphar, wheel_name_suffix, use_dml, + use_tensorrt, use_openvino, use_nuphar, use_dml, wheel_name_suffix, use_acl, nightly_build=False, featurizers_build=False):