Skip to content

Commit 7ce242c

Browse files
author
Ori Levari
authored
User/orilevari/tensorization paths (#166)
1 parent 1149bc9 commit 7ce242c

File tree

5 files changed

+84
-60
lines changed

5 files changed

+84
-60
lines changed

Samples/CustomTensorization/CustomTensorization/CustomTensorization.vcxproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,15 @@
113113
<ClCompile Include="TensorConvertor.cpp" />
114114
</ItemGroup>
115115
<ItemGroup>
116-
<None Include="fns-candy.onnx" />
116+
<CopyFileToFolders Include="fns-candy.onnx">
117+
<DeploymentContent>true</DeploymentContent>
118+
</CopyFileToFolders>
117119
<None Include="packages.config" />
118120
</ItemGroup>
119121
<ItemGroup>
120-
<Image Include="fish_720.png" />
122+
<CopyFileToFolders Include="fish_720.png">
123+
<DeploymentContent>true</DeploymentContent>
124+
</CopyFileToFolders>
121125
</ItemGroup>
122126
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
123127
<ImportGroup Label="ExtensionTargets">
Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<ItemGroup>
4-
<Filter Include="Source Files">
5-
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6-
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7-
</Filter>
8-
<Filter Include="Header Files">
9-
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10-
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
11-
</Filter>
12-
<Filter Include="Resource Files">
13-
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14-
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15-
</Filter>
16-
</ItemGroup>
17-
<ItemGroup>
18-
<ClInclude Include="pch.h">
19-
<Filter>Header Files</Filter>
20-
</ClInclude>
21-
<ClInclude Include="TensorConvertor.h">
22-
<Filter>Header Files</Filter>
23-
</ClInclude>
24-
<ClInclude Include="d3dx12.h">
25-
<Filter>Header Files</Filter>
26-
</ClInclude>
27-
</ItemGroup>
28-
<ItemGroup>
29-
<ClCompile Include="pch.cpp">
30-
<Filter>Source Files</Filter>
31-
</ClCompile>
32-
<ClCompile Include="main.cpp">
33-
<Filter>Source Files</Filter>
34-
</ClCompile>
35-
<ClCompile Include="TensorConvertor.cpp">
36-
<Filter>Source Files</Filter>
37-
</ClCompile>
38-
</ItemGroup>
39-
<ItemGroup>
40-
<None Include="packages.config" />
41-
<None Include="fns-candy.onnx">
42-
<Filter>Resource Files</Filter>
43-
</None>
44-
</ItemGroup>
45-
<ItemGroup>
46-
<Image Include="fish_720.png">
47-
<Filter>Resource Files</Filter>
48-
</Image>
49-
</ItemGroup>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup>
4+
<Filter Include="Source Files">
5+
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6+
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7+
</Filter>
8+
<Filter Include="Header Files">
9+
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10+
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
11+
</Filter>
12+
<Filter Include="Resource Files">
13+
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14+
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15+
</Filter>
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ClInclude Include="pch.h">
19+
<Filter>Header Files</Filter>
20+
</ClInclude>
21+
<ClInclude Include="TensorConvertor.h">
22+
<Filter>Header Files</Filter>
23+
</ClInclude>
24+
<ClInclude Include="d3dx12.h">
25+
<Filter>Header Files</Filter>
26+
</ClInclude>
27+
</ItemGroup>
28+
<ItemGroup>
29+
<ClCompile Include="pch.cpp">
30+
<Filter>Source Files</Filter>
31+
</ClCompile>
32+
<ClCompile Include="main.cpp">
33+
<Filter>Source Files</Filter>
34+
</ClCompile>
35+
<ClCompile Include="TensorConvertor.cpp">
36+
<Filter>Source Files</Filter>
37+
</ClCompile>
38+
</ItemGroup>
39+
<ItemGroup>
40+
<None Include="packages.config" />
41+
</ItemGroup>
42+
<ItemGroup>
43+
<CopyFileToFolders Include="fish_720.png">
44+
<Filter>Resource Files</Filter>
45+
</CopyFileToFolders>
46+
<CopyFileToFolders Include="fns-candy.onnx">
47+
<Filter>Resource Files</Filter>
48+
</CopyFileToFolders>
49+
</ItemGroup>
5050
</Project>

Samples/CustomTensorization/CustomTensorization/TensorConvertor.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,21 @@ namespace TensorizationHelper
3333

3434
val = drive;
3535
val += dir;
36-
int32_t i = val.find(filename);
37-
val = val.substr(0, i + wcslen(filename)) + L"\\" + filename + L"\\";
3836
return val;
3937
}
4038

39+
std::wstring GetFileName()
40+
{
41+
wchar_t modulePath[MAX_PATH] = { 0 };
42+
GetModuleFileNameW((HINSTANCE)&__ImageBase, modulePath, _countof(modulePath));
43+
wchar_t drive[_MAX_DRIVE];
44+
wchar_t dir[_MAX_DIR];
45+
wchar_t filename[_MAX_FNAME];
46+
wchar_t ext[_MAX_EXT];
47+
errno_t err = _wsplitpath_s(modulePath, drive, _MAX_DRIVE, dir, _MAX_DIR, filename, _MAX_FNAME, ext, _MAX_EXT);
48+
return std::wstring(filename);
49+
}
50+
4151
TensorFloat SoftwareBitmapToSoftwareTensor(SoftwareBitmap softwareBitmap)
4252
{
4353
/* Manully tensorize from CPU resource, steps:

Samples/CustomTensorization/CustomTensorization/TensorConvertor.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
namespace TensorizationHelper
88
{
99
std::wstring GetModulePath();
10+
std::wstring GetFileName();
1011

1112
winrt::Windows::AI::MachineLearning::TensorFloat SoftwareBitmapToSoftwareTensor(
12-
winrt::Windows::Graphics::Imaging::SoftwareBitmap softwareBitmap);
13+
winrt::Windows::Graphics::Imaging::SoftwareBitmap softwareBitmap);
1314

1415
winrt::Windows::AI::MachineLearning::TensorFloat SoftwareBitmapToDX12Tensor(
15-
winrt::Windows::Graphics::Imaging::SoftwareBitmap softwareBitmap);
16+
winrt::Windows::Graphics::Imaging::SoftwareBitmap softwareBitmap);
1617
}

Samples/CustomTensorization/CustomTensorization/main.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ LearningModel model = nullptr;
1818
LearningModelSession session = nullptr;
1919
LearningModelBinding binding = nullptr;
2020

21-
const hstring modulePath{ TensorizationHelper::GetModulePath().c_str()};
22-
21+
const wstring modulePath{ TensorizationHelper::GetModulePath() };
2322

2423
// Forward declarations
2524
void LoadModel(hstring modelPath);
@@ -35,8 +34,8 @@ void SaveOutputToDisk(
3534
int main()
3635
{
3736
init_apartment();
38-
const hstring modelPath = modulePath + L"fns-candy.onnx";
39-
const hstring imagePath = modulePath + L"fish_720.png";
37+
const hstring modelPath = static_cast<hstring>(modulePath.c_str()) + L"fns-candy.onnx";
38+
const hstring imagePath = static_cast<hstring>(modulePath.c_str()) + L"fish_720.png";
4039

4140
// The second parameter of BindModel specifies manually tensorization on which device.
4241
// Mannually-tensorization from CPU
@@ -158,7 +157,17 @@ void SaveOutputToDisk(
158157
hstring outputDataImageFileName)
159158
{
160159
// save the output to disk
161-
StorageFolder currentfolder = StorageFolder::GetFolderFromPathAsync(modulePath).get();
160+
161+
// try and see if we can output the pngs to the more visible folder where the vcxproj file is located
162+
// otherwise output next to the executable
163+
std::wstring outputPath = modulePath;
164+
std::wstring filename{ TensorizationHelper::GetFileName() };
165+
int32_t i = modulePath.find(filename);
166+
if (i != std::wstring::npos) {
167+
outputPath = outputPath.substr(0, i + wcslen(filename.c_str())) + L"\\" + filename + L"\\";
168+
}
169+
170+
StorageFolder currentfolder = StorageFolder::GetFolderFromPathAsync(outputPath).get();
162171
StorageFile outimagefile = currentfolder.CreateFileAsync(outputDataImageFileName, CreationCollisionOption::ReplaceExisting).get();
163172
IRandomAccessStream writestream = outimagefile.OpenAsync(FileAccessMode::ReadWrite).get();
164173
BitmapEncoder encoder = BitmapEncoder::CreateAsync(BitmapEncoder::JpegEncoderId(), writestream).get();

0 commit comments

Comments
 (0)