This change adds a new execution provider powered by [DirectML](https://aka.ms/DirectML).
DirectML is a high-performance, hardware-accelerated DirectX 12 library for machine learning on Windows. DirectML provides GPU acceleration for common machine learning tasks across a broad range of supported hardware and drivers.
The DirectML execution provider is capable of greatly improving evaluation time of models using commodity GPU hardware, without sacrificing broad hardware support or requiring vendor-specific extensions to be installed.
**Note** that the DML EP code was moved verbatim from the existing WindowsAI project, which is why it doesn't yet conform to the onnxruntime coding style. This is something that can be fixed later; we would like to keep formatting/whitespace changes to a minimum for the time being to make it easier to port fixes from WindowsAI to ORT during this transition.
Summary of changes:
* Initial commit of DML EP files under onnxruntime/core/providers/dml
* Add cmake entries for building the DML EP and for pulling down the DirectML redist using nuget
* Add a submodule dependency on the Windows Implementation Library (WIL)
* Add docs under docs/execution_providers/DirectML-ExecutionProvider.md
* Add support for DML EP to provider tests and perf tests
* Add support for DML EP to fns_candy_style_transfer sample
* Add entries to the C ABI for instantiating the DML EP
1. remove sudo from the cleanup step for Linux so that we don't need the sudo access for vstsagent build user
2. a minor fix in the install_ubuntu.sh to make the image smaller for openvino
1. Add openvino GPU nightly build pipeline, this test is running on Intel Up square Edge device. The device are host locally not from Azure VM. We persist a smaller model test data on Edge device.
2. Update the build condition for openvino GPU so it works for GPU_FP32, GPU_FP16
3. add option to install_ubuntu.sh to exclude the package used for nuphar, so that we can save some disk space as the Edge device usually have limited disk space.
Enable Nuphar EP docker build
Revert back to LLVM 6.0.1
Reinstate disabled Softmax tests caused by LLVM 8.0.1
Reinstate Nuphar Python test due to stale sympy version
Increase build timeout of Linux CI
Python script and necessary changes in the azure-pipelines yaml file to post the binary size data from NuGet package build. Currently only posted from CPU pipeline. GPU and other pipelines may be added as necessary.
* Add arm64 nocontribops pipeline
* minor fix
* Added new template for arm build -- disable all tests
* fix build command
* add arm64 flag for msbuild
* add arm leg as upstream dependency
* update platform to arm64 for msbuild
* remove test task from arm build
* remove ESRP signing of C# dlls in arm build
* Updated to work for both --arm and --arm64
* Make the cross compiling cmake flags symmetric
* Add dynamic check for /Wno-error flag, instead of extra build option
* remove extra full-stop
* Simplify linux gpu pipeline
* Refactor win-gpu-ci-pipeline.yml
* Set cuda environment variables for testing and version
* Remove variables from starter script
* minor fix
* Add GPU Nuget pipeline
* Set DisableContribOps environment variable for Linux package tests
* Add ESRP tasks
* Add ESRP signing templates
* Test out hardcode value of ERSP
* Test out hardcode value of ERSP
* Test out hardcode value of ERSP
* Test out hardcode value of ERSP
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test out variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* test variable expansion
* update cpu pipeline to conditionally esrp sign
* Set C# GPU tests to run only if env var is set
* Refactor for easy parameter passing
* refactored esrp templates
* remove variables from template
* Add packaging variables back to pipelines
* update C# for cuda 10
* Merge vars ana parameters for gpu pipeline
* remove vars from mklml pipeline
* display envvars on terminal
* Clean up C# cuda tests, and upgrade to Cuda10
* Introduce CUDNN_PATH pipeline varaible
* YAML variable are always uppercased (not true with classic)
* Update C# GPU test to be more meaningful
* remove macos from gpu tests
* remove debugging info for DisableContribOps option
* Remove DisableContrib ops parameters -- use variables only
* Fix typo from = to -
* remove debug steps
* fix typo
* remove unused variable TESTONGPU from some templates
* clean up CUDA env setup scripts
* Remove CUDNN_PATH from setup_env_cuda.bat
- Added Python script to post the code coverage data to the MySQL table used for dashboard
- Added a build job to run a windows cpu debug build on every merge on master, and run the script
- Removed the code coverage step from the CI build
* Initial check in
* Add win x86
* minor update to x86
* update win-ci
* update win-ci
* update win-x86ci
* add linux and mac templates
* add nuget pipelines and test templates
* remove buildConfig
* add compliance template
* fix minor typos
* update pool for macos
* update mac agent pool
* update macos pool
* update agent pools for tests
* turn off debug build for testing
* some modifications to packaging scripts
* change ordering of compliance tasks
* Add mklml pipeline
* Add packagename variable to mklml pipeline
* remove unrequired dependent jobs from mklml pipeline
* Update build command for macOS legs in mklml and cpu pipeline
* Set vcvars to true
* Add no contrib ops pipeline
* Add no-contrib-ops pipeline
* set vcvars to true for package tests
* remove repetition in nuget templates
* get buildarch correct
* get name of test template correct
* remove steps from test_all_os.yml
* add parameters to test_all_os.yml
* Need jobs, not steps
* set envars for disablecontrib ops
* add cleanup tasks and CG to package tests
* fix path to cleanup script for macos
* remove buildDirectory -- not needed
* remove fp16tiny_yolov2 model from nocontribops tests
* remove debugging info
* fix individual linux pipelines to use correct template
* remove unneeded bak_latest2
* increase timeout to 120 to allow for variance
* turn off code coverage report
* added the runcoverage powershell script
* updated the run coverage script. added installation to the windows CI for trying
* exclude other parts of win ci
* fix in the download script
* fix in the download script
* fix in the download script
* fix in the download script
* fix in the download script
* fix in the download script
* fix in the download script
* fix in the download script
* fix in the download script
* added the runtestcoverage script to the pipeline
* some typo fix
* formatting
* re-commenting previously commented block
* cleaned up the powershell script
* fix path in pipeline
* fix path in pipeline
* fixed model path
* some fixes
* excluded long running tests
* add the publish job
* uncomment other tasks
* fixed excluded tests
* some format correction
* stopped running the test debug
* try placing the tes-all at the beginning
* try running the failing test only
* edit run_coverage
* some fix
* skip onnx_model_test
* Added memory size log in powershell script
* try running the onnxruntime_test_all.exe separately from codecov
* enable error reporting, and double memory size in powershell
* corrected the set-item
* remove memory resize, since we are already at max 2 GB
* fixed the tvm.dll issue
* added back the onnx tests in codecov. added back the regular test run
* cleanup
* remove * from the the module path
* add junction target resolution for modules dir
* remove junction-resolution
* reduced tests
* added target extraction for the junction paths in build machine
* added the appropriate change in win ci pipeline to call the updated ps script
* fix typo
* added back all the tests that were disabled
* try fixing the source root
* cleanup and enable all tests
* increase timeout for windows CPU CI due to codecoverage
* templatized the code coverage steps. Conitnue on error with any codecoverage step
* change quote marks
* Ensure Linux binaries are built with debug info. Extract debug info out of the main binaries. Strip the main binaries.
* add binutils
* add uname
* add binutils
* remove linux portion
* add variables for version number and git commit hash
* fix typo
* fix typo
* some logging
* some logging
* some logging
* some logging
* some logging
* some logging
* some logging
* some logging
* some more edits to see generic scripts can print
* working
* fixing windows git hash
* try quoted echo
* fix git rev-parse
* echo without quotes
* removed commit hash from artifact filename, added long commit hash as a file inside
* added the missing commit id parameter
* fix windows pipeline
* keep only win 64, others disabled
* remove disabling conditions
* added linux packaging template and pipeline
* Update linux-packaging-pipeline.yml for Azure Pipelines
* fix path seperator
* update copy command for linux
* fixed linux gpu artifact name, added mac build
* fixed linux gpu artifact name, added mac build
* fixed vmImage syntax
* use 1 model at a time for macos
* added onnx test on Mac CI
* some refactor of the pipeline scripts
* try fixing the tensorproto for x86 build
* try __cdecl
* try C-style cast
* use ORTAPICALL
* put the deleter under the namespace
* added packaging pipeline
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* put the c-api header file at root instead of under core/session
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* Update win-ci-pipeline.yml for Azure Pipelines
* parameterize the windows build script
* Update win-package-pipeline.yml for Azure Pipelines
* fixed indenting
* fixed indenting
* fix parameter reference syntax
* try using arch = amd64 for the vcvarsall
* remove duplicate tasks
* use vcvarsall
* some more refactor
* fix typo
* fix typo
* factored out the packaging step into a template
* add x86 build to package pipeline
* use amd64 for vcvars arg
* added gpu pipeline. added msbuild platform param
* fix the msbuild platform
* use amd64 host for x86 build
* use buildarch=x86 for vcvarsall
* remove vcvars from setup steps
* add some logging for PNG lib, and disable fns_candy demo for win32
* set allocator alignment to 32 bit for win32 compiler
* disable parallel execution test for x86
* use 64 bit toolchain for x86 build
* add missing -T flag for toolset
* fix string delimietr in workingdirectory name for package build test step
* fix gpu pipeline
* make io_types test conditional
* use cuda 10 instead of cuda 9.1, similar to the ci build
* try some workaround on the io test
* undo inadvertent local change in build.py, also reenable the io test
* make all test run single threaded
* blacklist few failing tests for x86
* added some log in build.py
* edit build.py to disable parallel test
* add the failed tests into the blacklist for win32
* add tf_pasnet_large to blacklist
* change control flow for build.py onnx tests
* add README, license and TPN to the package
* updated build.py test sequence for parallel executor
* updated onnx test flow as per review comment
* add type checking log in the compare_mlvalue
* fix type cast
* blacklist some failed test as of now
* one more blacklisted test
* Added test data arguments to build.py, modified win-ci-pipeline build.
* Updated CI builds to use template tasks, added test data args, removed AZURE_BLOB_KEY uses.
* Fixed up set test data step template.