mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-29 23:06:41 +00:00
[DML EP] Update DirectML version to 1.12.0 (#16011)
This commit is contained in:
parent
d78bbf5ef2
commit
310b22aa0c
9 changed files with 13 additions and 18 deletions
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="python" version="3.9.7" targetFramework="native" />
|
||||
<package id="Microsoft.AI.DirectML" version="1.11.0" targetFramework="native" />
|
||||
<package id="Microsoft.AI.DirectML" version="1.12.0" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.201201.7" targetFramework="native" />
|
||||
</packages>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="pythonx86" version="3.9.7" targetFramework="native" />
|
||||
<package id="Microsoft.AI.DirectML" version="1.11.0" targetFramework="native" />
|
||||
<package id="Microsoft.AI.DirectML" version="1.12.0" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.201201.7" targetFramework="native" />
|
||||
</packages>
|
||||
|
|
|
|||
2
cmake/external/dml.cmake
vendored
2
cmake/external/dml.cmake
vendored
|
|
@ -41,7 +41,7 @@ if (NOT onnxruntime_USE_CUSTOM_DIRECTML)
|
|||
set(NUGET_CONFIG ${PROJECT_SOURCE_DIR}/../NuGet.config)
|
||||
set(PACKAGES_CONFIG ${PROJECT_SOURCE_DIR}/../packages.config)
|
||||
get_filename_component(PACKAGES_DIR ${CMAKE_CURRENT_BINARY_DIR}/../packages ABSOLUTE)
|
||||
set(DML_PACKAGE_DIR ${PACKAGES_DIR}/Microsoft.AI.DirectML.1.11.0)
|
||||
set(DML_PACKAGE_DIR ${PACKAGES_DIR}/Microsoft.AI.DirectML.1.12.0)
|
||||
|
||||
# Restore nuget packages, which will pull down the DirectML redist package.
|
||||
add_custom_command(
|
||||
|
|
|
|||
|
|
@ -1204,6 +1204,7 @@ Do not modify directly.*
|
|||
|DequantizeLinear|*in* x:**T1**<br> *in* x_scale:**T2**<br> *in* x_zero_point:**T1**<br> *out* y:**T2**|1+|**T1** = tensor(float)<br/> **T2** = tensor(uint8)|
|
||||
|EmbedLayerNormalization|*in* input_ids:**T1**<br> *in* segment_ids:**T1**<br> *in* word_embedding:**T**<br> *in* position_embedding:**T**<br> *in* segment_embedding:**T**<br> *in* gamma:**T**<br> *in* beta:**T**<br> *in* mask:**T1**<br> *in* position_ids:**T1**<br> *out* output:**T**<br> *out* mask_index:**T1**<br> *out* embedding_sum:**T**|1+|**T** = tensor(float), tensor(float16)|
|
||||
|FusedMatMul|*in* A:**T**<br> *in* B:**T**<br> *out* Y:**T**|1+|**T** = tensor(float), tensor(float16)|
|
||||
|FusedMatMulActivation|*in* A:**T**<br> *in* B:**T**<br> *out* Y:**T**|1+|**T** = tensor(float), tensor(float16)|
|
||||
|Gelu|*in* X:**T**<br> *out* Y:**T**|1+|**T** = tensor(float), tensor(float16)|
|
||||
|GroupNorm|*in* X:**T**<br> *in* gamma:**M**<br> *in* beta:**M**<br> *out* Y:**T**|1+|**M** = tensor(float), tensor(float16)<br/> **T** = tensor(float), tensor(float16)|
|
||||
|NhwcConv|*in* X:**T**<br> *in* W:**T**<br> *in* B:**T**<br> *out* Y:**T**|1+|**T** = tensor(float), tensor(float16)|
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@ InlinedVector<std::unique_ptr<GraphTransformer>> GenerateTransformers(
|
|||
#ifndef DISABLE_CONTRIB_OPS
|
||||
const InlinedHashSet<std::string_view> cpu_ep = {onnxruntime::kCpuExecutionProvider};
|
||||
#endif
|
||||
const InlinedHashSet<std::string_view> dml_ep = {onnxruntime::kDmlExecutionProvider};
|
||||
switch (level) {
|
||||
case TransformerLevel::Level1: {
|
||||
// RewriteRule optimizations are the simplest (they generally remove unnecessary nodes and are cheap to run)
|
||||
|
|
@ -308,6 +309,7 @@ InlinedVector<std::unique_ptr<GraphTransformer>> GenerateTransformers(
|
|||
transformers.emplace_back(std::make_unique<QuickGeluFusion>(cpu_cuda_dml_rocm_eps));
|
||||
|
||||
transformers.emplace_back(std::make_unique<MatMulScaleFusion>(cpu_cuda_dml_rocm_eps));
|
||||
transformers.emplace_back(std::make_unique<MatMulActivationFusion>(dml_ep));
|
||||
|
||||
// GeluApproximation has side effects which may change results. It needs to be manually enabled,
|
||||
// or alternatively the model can be updated offline using a model conversion script
|
||||
|
|
|
|||
|
|
@ -934,6 +934,7 @@ constexpr static OperatorRegistrationInformation operatorRegistrationInformation
|
|||
{REG_INFO_MS( 1, Gelu, typeNameListDefault, supportedTypeListFloat16to32, DmlGraphSupport::Supported)},
|
||||
{REG_INFO_MS( 1, BiasGelu, typeNameListDefault, supportedTypeListFloat16to32, DmlGraphSupport::Supported)},
|
||||
{REG_INFO_MS( 1, FusedMatMul, typeNameListDefault, supportedTypeListFloat16to32, DmlGraphSupport::Supported)},
|
||||
{REG_INFO_MS( 1, FusedMatMulActivation, typeNameListDefault, supportedTypeListFloat16to32, DmlGraphSupport::Supported)},
|
||||
{REG_INFO_MS( 1, QLinearSigmoid, typeNameListDefault, supportedTypeListQLinearSigmoid, DmlGraphSupport::Supported, requiredConstantCpuInputs(), std::nullopt, QueryQLinearSigmoid)},
|
||||
{REG_INFO_MS( 1, Attention, typeNameListAttention, supportedTypeListAttention, DmlGraphSupport::Supported, requiredConstantCpuInputs(), std::nullopt, QueryAttention)},
|
||||
|
||||
|
|
|
|||
|
|
@ -364,19 +364,10 @@ namespace Dml
|
|||
int onnxAxis = HandleNegativeAxis(kernelInfo.GetOptionalAttribute<int>(AttrName::GraphFusedAxis, -1), onnxDimCount);
|
||||
|
||||
auto dmlAdjustedAxis = GetDmlAdjustedAxis(onnxAxis, onnxDimCount, kernelInfo.GetTensorShapeDescription().GetInputTensorDimensionCount(0));
|
||||
|
||||
// If the axis is supported by Softmax, use this version instead since it's more likely to be supported by metacommands
|
||||
if (dmlAdjustedAxis == onnxDimCount - 1)
|
||||
{
|
||||
activation.desc.activationType = DML_OPERATOR_ACTIVATION_SOFTMAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
activation.desc.activationType = DML_OPERATOR_ACTIVATION_SOFTMAX1;
|
||||
activation.dmlAxes.push_back(dmlAdjustedAxis);
|
||||
activation.desc.params.softmax1.Axes = activation.dmlAxes.data();
|
||||
activation.desc.params.softmax1.AxisCount = gsl::narrow_cast<uint32_t>(activation.dmlAxes.size());
|
||||
}
|
||||
activation.desc.activationType = DML_OPERATOR_ACTIVATION_SOFTMAX1;
|
||||
activation.dmlAxes.push_back(dmlAdjustedAxis);
|
||||
activation.desc.params.softmax1.Axes = activation.dmlAxes.data();
|
||||
activation.desc.params.softmax1.AxisCount = gsl::narrow_cast<uint32_t>(activation.dmlAxes.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.AI.DirectML" version="1.11.0" targetFramework="native" />
|
||||
<package id="Microsoft.AI.DirectML" version="1.12.0" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.201201.7" targetFramework="native" />
|
||||
<package id="google.protobuf.tools" version="3.21.12" targetFramework="native" />
|
||||
</packages>
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ def generate_repo_url(line_list, repo_url, commit_id):
|
|||
|
||||
|
||||
def generate_dependencies(xml_text, package_name, version):
|
||||
dml_dependency = '<dependency id="Microsoft.AI.DirectML" version="1.11.0"/>'
|
||||
dml_dependency = '<dependency id="Microsoft.AI.DirectML" version="1.12.0"/>'
|
||||
|
||||
if package_name == "Microsoft.AI.MachineLearning":
|
||||
xml_text.append("<dependencies>")
|
||||
|
|
|
|||
Loading…
Reference in a new issue