Skip to content

Commit 2179a1d

Browse files
authored
User/brianma/stringbinding (microsoft#508)
* update to latest windows AI Nuget packges * add basic TensorString binding support
1 parent b5157f8 commit 2179a1d

File tree

5 files changed

+49
-18
lines changed

5 files changed

+49
-18
lines changed

Tools/WinMLRunner/WinMLRunner.vcxproj

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props" Condition="Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props')" />
4+
<Import Project="packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props')" />
35
<Import Project="packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props')" />
4-
<Import Project="packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props')" />
56
<ItemGroup Label="ProjectConfigurations">
67
<ProjectConfiguration Include="Debug_NuGet|Win32">
78
<Configuration>Debug_NuGet</Configuration>
@@ -428,16 +429,19 @@
428429
</ItemDefinitionGroup>
429430
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
430431
<ImportGroup Label="ExtensionTargets">
431-
<Import Project="packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets')" />
432432
<Import Project="packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets')" />
433+
<Import Project="packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets')" />
434+
<Import Project="packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets" Condition="Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets')" />
433435
</ImportGroup>
434436
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
435437
<PropertyGroup>
436438
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
437439
</PropertyGroup>
438-
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props'))" />
439-
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets'))" />
440440
<Error Condition="!Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props'))" />
441441
<Error Condition="!Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets'))" />
442+
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props'))" />
443+
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets'))" />
444+
<Error Condition="!Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props'))" />
445+
<Error Condition="!Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets'))" />
442446
</Target>
443447
</Project>

Tools/WinMLRunner/WinMLRunnerScenarios.vcxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.props" Condition="Exists('packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.props')" />
3+
<Import Project="packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props" Condition="Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props')" />
44
<Import Project="packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props')" />
5-
<Import Project="packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props')" />
5+
<Import Project="packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props')" />
66
<ItemGroup Label="ProjectConfigurations">
77
<ProjectConfiguration Include="Debug_NuGet|Win32">
88
<Configuration>Debug_NuGet</Configuration>
@@ -332,19 +332,19 @@
332332
</ItemDefinitionGroup>
333333
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
334334
<ImportGroup Label="ExtensionTargets">
335-
<Import Project="packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets')" />
335+
<Import Project="packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets')" />
336336
<Import Project="packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets')" />
337-
<Import Project="packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.targets" Condition="Exists('packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.targets')" />
337+
<Import Project="packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets" Condition="Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets')" />
338338
</ImportGroup>
339339
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
340340
<PropertyGroup>
341341
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
342342
</PropertyGroup>
343-
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props'))" />
344-
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets'))" />
343+
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props'))" />
344+
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets'))" />
345345
<Error Condition="!Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props'))" />
346346
<Error Condition="!Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets'))" />
347-
<Error Condition="!Exists('packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.props'))" />
348-
<Error Condition="!Exists('packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.DirectML.1.8.2\build\Microsoft.AI.DirectML.targets'))" />
347+
<Error Condition="!Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.props'))" />
348+
<Error Condition="!Exists('packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.DirectML.1.10.0\build\Microsoft.AI.DirectML.targets'))" />
349349
</Target>
350350
</Project>

Tools/WinMLRunner/WinMLRunnerStaticLib.vcxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props')" />
3+
<Import Project="packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props')" />
44
<Import Project="packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props')" />
55
<ItemGroup Label="ProjectConfigurations">
66
<ProjectConfiguration Include="Debug_NuGet|Win32">
@@ -364,15 +364,15 @@
364364
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
365365
<ImportGroup Label="ExtensionTargets">
366366
<Import Project="packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets')" />
367-
<Import Project="packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets')" />
367+
<Import Project="packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets" Condition="Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets')" />
368368
</ImportGroup>
369369
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
370370
<PropertyGroup>
371371
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
372372
</PropertyGroup>
373373
<Error Condition="!Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.props'))" />
374374
<Error Condition="!Exists('packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Windows.CppWinRT.2.0.220608.4\build\native\Microsoft.Windows.CppWinRT.targets'))" />
375-
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.props'))" />
376-
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.11.0\build\native\Microsoft.AI.MachineLearning.targets'))" />
375+
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.props'))" />
376+
<Error Condition="!Exists('packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.AI.MachineLearning.1.13.1\build\native\Microsoft.AI.MachineLearning.targets'))" />
377377
</Target>
378378
</Project>

Tools/WinMLRunner/packages.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.AI.DirectML" version="1.8.2" targetFramework="native" />
4-
<package id="Microsoft.AI.MachineLearning" version="1.11.0" targetFramework="native" />
3+
<package id="Microsoft.AI.DirectML" version="1.10.0" targetFramework="native" />
4+
<package id="Microsoft.AI.MachineLearning" version="1.13.1" targetFramework="native" />
55
<package id="Microsoft.Windows.CppWinRT" version="2.0.220608.4" targetFramework="native" />
66
</packages>

Tools/WinMLRunner/src/BindingUtilities.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,28 @@ namespace BindingUtilities
646646
}
647647
}
648648

649+
TensorString CreateTensorString(const std::vector<int64_t>& tensorShape)
650+
{
651+
auto length = 1;
652+
for (auto&& dim : tensorShape)
653+
{
654+
if (dim > 0)
655+
{
656+
length *= dim;
657+
}
658+
}
659+
660+
std::vector<winrt::hstring> strings;
661+
662+
for (auto i = 0; i < length; ++i)
663+
{
664+
auto str = to_hstring(i);
665+
strings.push_back(str);
666+
}
667+
668+
return TensorString::CreateFromArray(tensorShape, strings);
669+
}
670+
649671
// Process the descriptor to gather and normalize the shape
650672
void ProcessDescriptor(const ILearningModelFeatureDescriptor& description, std::vector<int64_t>& shape,
651673
TensorKind& tensorKind, InputBufferDesc& inputBufferDesc)
@@ -851,6 +873,11 @@ namespace BindingUtilities
851873
return CreateTensor<TensorKind::UInt64>(args, shape, inputBindingType, inputBufferDesc);
852874
}
853875
break;
876+
case TensorKind::String:
877+
{
878+
return CreateTensorString(shape);
879+
}
880+
break;
854881
}
855882
std::cout << "BindingUtilities: TensorKind has not been implemented." << std::endl;
856883
throw hresult_not_implemented();

0 commit comments

Comments
 (0)