mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-21 21:52:11 +00:00
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
39 lines
1.4 KiB
CMake
39 lines
1.4 KiB
CMake
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
if (NOT onnxruntime_USE_CUSTOM_DIRECTML)
|
|
if (NOT(MSVC) OR NOT(WIN32))
|
|
message(FATAL_ERROR "NuGet packages are only supported for MSVC on Windows.")
|
|
endif()
|
|
|
|
# Retrieve the latest version of nuget
|
|
include(ExternalProject)
|
|
ExternalProject_Add(nuget
|
|
PREFIX nuget
|
|
URL "https://dist.nuget.org/win-x86-commandline/v5.3.0/nuget.exe"
|
|
DOWNLOAD_NO_EXTRACT 1
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
UPDATE_COMMAND ""
|
|
INSTALL_COMMAND "")
|
|
|
|
set(NUGET_CONFIG ${PROJECT_SOURCE_DIR}/../NuGet.config)
|
|
set(PACKAGES_CONFIG ${PROJECT_SOURCE_DIR}/../packages.config)
|
|
set(PACKAGES_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages)
|
|
|
|
# Restore nuget packages, which will pull down the DirectML redist package
|
|
add_custom_command(
|
|
OUTPUT restore_packages.stamp
|
|
DEPENDS ${PACKAGES_CONFIG} ${NUGET_CONFIG}
|
|
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/nuget/src/nuget restore ${PACKAGES_CONFIG} -PackagesDirectory ${PACKAGES_DIR} -ConfigFile ${NUGET_CONFIG}
|
|
COMMAND ${CMAKE_COMMAND} -E touch restore_packages.stamp
|
|
VERBATIM)
|
|
|
|
add_custom_target(RESTORE_PACKAGES ALL DEPENDS restore_packages.stamp)
|
|
add_dependencies(RESTORE_PACKAGES nuget)
|
|
|
|
list(APPEND onnxruntime_EXTERNAL_DEPENDENCIES RESTORE_PACKAGES)
|
|
else()
|
|
include_directories(${dml_INCLUDE_DIR})
|
|
link_directories(${dml_LIB_DIR})
|
|
endif()
|