Skip to content

Commit 95f8cbd

Browse files
committed
RyzenAI Nuget Package
1 parent d2e20c9 commit 95f8cbd

File tree

13 files changed

+69
-14
lines changed

13 files changed

+69
-14
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,10 @@ TensorStack.Diffusers/*
351351
TensorStudio/*
352352
/TensorStackFull.sln
353353

354+
TensorStack.Providers.RyzenAI/ryzen_mm.dll
355+
TensorStack.Providers.RyzenAI/ryzenai_onnx_utils.dll
356+
TensorStack.Providers.RyzenAI/onnx_custom_ops.dll
357+
354358
Examples/TensorStack.Example.Upscaler/Models/*.onnx
355359
Examples/TensorStack.Example.Extractors/Models/*.onnx
356360

BuildRelease.bat

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ dotnet pack TensorStack.Providers.CUDA/TensorStack.Providers.CUDA.csproj -c Rele
3434
dotnet build TensorStack.Providers.DML/TensorStack.Providers.DML.csproj -c Release
3535
dotnet pack TensorStack.Providers.DML/TensorStack.Providers.DML.csproj -c Release
3636

37+
dotnet build TensorStack.Providers.RyzenAI/TensorStack.Providers.RyzenAI.csproj -c Release
38+
dotnet pack TensorStack.Providers.RyzenAI/TensorStack.Providers.RyzenAI.csproj -c Release
39+
3740
dotnet build TensorStack.Extractors/TensorStack.Extractors.csproj -c Release
3841
dotnet pack TensorStack.Extractors/TensorStack.Extractors.csproj -c Release
3942

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
3-
<Version>0.1.93</Version>
3+
<Version>0.1.97</Version>
44
<Company>TensorStack</Company>
55
<Copyright>TensorStack - 2025</Copyright>
66
<RepositoryUrl>https://github.com/TensorStack-AI/TensorStack</RepositoryUrl>

TensorStack.Common/Extensions/OrtExtensions.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the Apache 2.0 License.
33
using Microsoft.ML.OnnxRuntime;
44
using System;
5+
using System.Collections.Generic;
56
using System.Numerics;
67
using TensorStack.Common.Tensor;
78
using OrtType = Microsoft.ML.OnnxRuntime.Tensors.TensorElementType;
@@ -496,5 +497,17 @@ public static void CancelSession(this RunOptions runOptions)
496497
throw new OperationCanceledException();
497498
}
498499
}
500+
501+
502+
public static void AddSessionConfigEntries(this SessionOptions options, IDictionary<string, string> sessionOptions)
503+
{
504+
if (sessionOptions.IsNullOrEmpty())
505+
return;
506+
507+
foreach (var sessionOption in sessionOptions)
508+
{
509+
options.AddSessionConfigEntry(sessionOption.Key, sessionOption.Value);
510+
}
511+
}
499512
}
500513
}

TensorStack.Providers.CPU/Provider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ private static ExecutionProvider CreateProvider(GraphOptimizationLevel optimizat
152152
EnableMemoryPattern = true,
153153
GraphOptimizationLevel = optimizationLevel
154154
};
155+
156+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
155157
sessionOptions.AppendExecutionProvider_CPU();
156158
return sessionOptions;
157159
});

TensorStack.Providers.CUDA/Provider.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ private static ExecutionProvider CreateProvider(int deviceId, GraphOptimizationL
151151
GraphOptimizationLevel = optimizationLevel
152152
};
153153

154+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
154155
sessionOptions.AppendExecutionProvider_CUDA(deviceId);
155156
sessionOptions.AppendExecutionProvider_CPU();
156157
return sessionOptions;
@@ -173,6 +174,8 @@ private static ExecutionProvider CreateProvider(GraphOptimizationLevel optimizat
173174
EnableMemoryPattern = true,
174175
GraphOptimizationLevel = optimizationLevel
175176
};
177+
178+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
176179
sessionOptions.AppendExecutionProvider_CPU();
177180
return sessionOptions;
178181
});

TensorStack.Providers.DML/Provider.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ private static ExecutionProvider CreateProvider(int deviceId, GraphOptimizationL
153153
GraphOptimizationLevel = optimizationLevel
154154
};
155155

156+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
156157
sessionOptions.AppendExecutionProvider_DML(deviceId);
157158
sessionOptions.AppendExecutionProvider_CPU();
158159
return sessionOptions;
@@ -175,6 +176,8 @@ private static ExecutionProvider CreateProvider(GraphOptimizationLevel optimizat
175176
EnableMemoryPattern = true,
176177
GraphOptimizationLevel = optimizationLevel
177178
};
179+
180+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
178181
sessionOptions.AppendExecutionProvider_CPU();
179182
return sessionOptions;
180183
});

TensorStack.Providers.RyzenAI/Provider.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,7 @@ private static ExecutionProvider CreateRyzenProvider(int deviceId, GraphOptimiza
158158
if (Directory.Exists(modelCache))
159159
sessionOptions.AddSessionConfigEntry("dd_cache", modelCache);
160160

161-
if (!configuration.SessionOptions.IsNullOrEmpty())
162-
{
163-
foreach (var sessionOption in configuration.SessionOptions)
164-
{
165-
sessionOptions.AddSessionConfigEntry(sessionOption.Key, sessionOption.Value);
166-
}
167-
}
168-
161+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
169162
sessionOptions.RegisterCustomOpLibrary("onnx_custom_ops.dll");
170163
sessionOptions.AppendExecutionProvider_CPU();
171164
return sessionOptions;
@@ -188,6 +181,7 @@ private static ExecutionProvider CreateDMLProvider(int deviceId, GraphOptimizati
188181
GraphOptimizationLevel = optimizationLevel
189182
};
190183

184+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
191185
sessionOptions.AppendExecutionProvider_DML(deviceId);
192186
sessionOptions.AppendExecutionProvider_CPU();
193187
return sessionOptions;
@@ -210,6 +204,8 @@ private static ExecutionProvider CreateCPUProvider(GraphOptimizationLevel optimi
210204
EnableMemoryPattern = true,
211205
GraphOptimizationLevel = optimizationLevel
212206
};
207+
208+
sessionOptions.AddSessionConfigEntries(configuration.SessionOptions);
213209
sessionOptions.AppendExecutionProvider_CPU();
214210
return sessionOptions;
215211
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# TensorStack.Providers.RyzenAI
2+
3+
## Important External Binaries Required !!
4+
5+
The RyzenAI binaries are needed for the `Provider` to work correctly, you can download the required files from https://huggingface.co/amd/stable-diffusion-1.5-amdnpu/tree/main/libs
6+
- ryzen_mm.dll
7+
- ryzenai_onnx_utils.dll
8+
- onnx_custom_ops.dll
9+
10+
Place these files in `TensorStack.Providers.RyzenAI` folder
11+
12+
---
13+
14+
### Basic Initialization
15+
16+
```csharp
17+
18+
var provider = Provider.GetProvider(DeviceType.NPU);
19+
20+
```

TensorStack.Providers.RyzenAI/TensorStack.Providers.RyzenAI.csproj

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
<PropertyGroup>
44
<TargetFrameworks>net9.0-windows10.0.17763.0;net10.0-windows10.0.17763.0</TargetFrameworks>
55
<PlatformTarget>x64</PlatformTarget>
6+
7+
<!--DirectML.dll content warning-->
8+
<NoWarn>$(NoWarn);NU5100</NoWarn>
69
</PropertyGroup>
710

811
<!--Projects-->
@@ -27,12 +30,20 @@
2730

2831
<!--Binaries-->
2932
<ItemGroup>
30-
<Content Include="DirectML.dll"
31-
Pack="true"
32-
PackagePath="contentFiles\any\any\"
33-
CopyToOutputDirectory="Always"
34-
PackageCopyToOutput="true" />
33+
<Content Include="DirectML.dll" Pack="true" PackagePath="contentFiles\any\any\" CopyToOutputDirectory="Always" PackageCopyToOutput="true" />
34+
<Content Include="fmt.dll" Pack="true" PackagePath="contentFiles\any\any\" CopyToOutputDirectory="Always" PackageCopyToOutput="true" />
35+
<Content Include="spdlog.dll" Pack="true" PackagePath="contentFiles\any\any\" CopyToOutputDirectory="Always" PackageCopyToOutput="true" />
36+
<Content Include="zlib.dll" Pack="true" PackagePath="contentFiles\any\any\" CopyToOutputDirectory="Always" PackageCopyToOutput="true" />
37+
<Content Include="onnx_custom_ops.dll" Pack="true" PackagePath="contentFiles\any\any\" CopyToOutputDirectory="Always" PackageCopyToOutput="true" Condition="Exists('onnx_custom_ops.dll')" />
38+
<Content Include="ryzen_mm.dll" Pack="true" PackagePath="contentFiles\any\any\" CopyToOutputDirectory="Always" PackageCopyToOutput="true" Condition="Exists('ryzen_mm.dll')" />
39+
<Content Include="ryzenai_onnx_utils.dll" Pack="true" PackagePath="contentFiles\any\any\" CopyToOutputDirectory="Always" PackageCopyToOutput="true" Condition="Exists('ryzenai_onnx_utils.dll')" />
3540
<None Include="DirectML.dll" Pack="false" />
41+
<None Include="fmt.dll" Pack="false" Optional="true" />
42+
<None Include="onnx_custom_ops.dll" Pack="false" Optional="true" />
43+
<None Include="ryzen_mm.dll" Pack="false" Optional="true" />
44+
<None Include="ryzenai_onnx_utils.dll" Pack="false" Optional="true" />
45+
<None Include="spdlog.dll" Pack="false" Optional="true" />
46+
<None Include="zlib.dll" Pack="false" Optional="true" />
3647
</ItemGroup>
3748

3849

0 commit comments

Comments
 (0)