Browse Source

Merge pull request #1071 from AsakusaRinne/add_linux_gpu_redist

build: add scripts to split large native library file.
tags/v0.110.0-LSTM-Model
Rinne GitHub 2 years ago
parent
commit
feb1b7ba24
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 356 additions and 98 deletions
  1. +6
    -6
      .github/workflows/build_and_test.yml
  2. +104
    -83
      TensorFlow.NET.sln
  3. +12
    -0
      src/TensorFlowNET.Core/tensorflow.cs
  4. +1
    -1
      test/TensorFlowNET.Graph.UnitTest/TensorFlowNET.Graph.UnitTest.csproj
  5. +1
    -1
      test/TensorFlowNET.Keras.UnitTest/Tensorflow.Keras.UnitTest.csproj
  6. +3
    -0
      test/TensorFlowNET.Native.UnitTest/Lite/TfLiteTest.cs
  7. +1
    -1
      test/TensorFlowNET.Native.UnitTest/Tensorflow.Native.UnitTest.csproj
  8. +1
    -1
      test/TensorFlowNET.UnitTest/Tensorflow.Binding.UnitTest.csproj
  9. +1
    -1
      test/TensorflowNET.Hub.Unittest/Tensorflow.Hub.Unittest.csproj
  10. +0
    -0
      tools/TensorFlowNET.Benchmarks/Crash/RepeatDataSetCrash.cs
  11. +0
    -0
      tools/TensorFlowNET.Benchmarks/Leak/GpuLeakByCNN.cs
  12. +0
    -0
      tools/TensorFlowNET.Benchmarks/Leak/SavedModelCleanup.cs
  13. +0
    -0
      tools/TensorFlowNET.Benchmarks/Leak/TestModel/saved_model/saved_model.pb
  14. +0
    -0
      tools/TensorFlowNET.Benchmarks/Leak/TestModel/saved_model/variables/variables.data-00000-of-00001
  15. +0
    -0
      tools/TensorFlowNET.Benchmarks/Leak/TestModel/saved_model/variables/variables.index
  16. +0
    -0
      tools/TensorFlowNET.Benchmarks/Program.cs
  17. +0
    -0
      tools/TensorFlowNET.Benchmarks/README.md
  18. +0
    -0
      tools/TensorFlowNET.Benchmarks/TensorBenchmark.cs
  19. +1
    -1
      tools/TensorFlowNET.Benchmarks/Tensorflow.Benchmark.csproj
  20. +0
    -0
      tools/TensorFlowNET.Benchmarks/Unmanaged/StructCastBenchmark.cs
  21. +0
    -0
      tools/TensorFlowNET.Console/Diagnostician.cs
  22. +0
    -0
      tools/TensorFlowNET.Console/Exploring.cs
  23. +0
    -0
      tools/TensorFlowNET.Console/MemoryBasicTest.cs
  24. +0
    -0
      tools/TensorFlowNET.Console/MemoryFuncGraphTest.cs
  25. +0
    -0
      tools/TensorFlowNET.Console/MemoryKerasTest.cs
  26. +0
    -0
      tools/TensorFlowNET.Console/MemoryMonitor.cs
  27. +0
    -0
      tools/TensorFlowNET.Console/Program.cs
  28. +0
    -0
      tools/TensorFlowNET.Console/SimpleRnnTest.cs
  29. +2
    -2
      tools/TensorFlowNET.Console/Tensorflow.Console.csproj
  30. +0
    -0
      tools/Tensorflow.CodeGen/DescriptionGenerator.cs
  31. +0
    -0
      tools/Tensorflow.CodeGen/FunctionGenerator.cs
  32. +0
    -0
      tools/Tensorflow.CodeGen/GenOpsWriter.cs
  33. +0
    -0
      tools/Tensorflow.CodeGen/OpClassifier.cs
  34. +0
    -0
      tools/Tensorflow.CodeGen/Program.cs
  35. +1
    -1
      tools/Tensorflow.CodeGen/Tensorflow.CodeGen.csproj
  36. +0
    -0
      tools/Tensorflow.CodeGen/Utils.cs
  37. +212
    -0
      tools/Tensorflow.Redist.NativeLibrarySplitter/Program.cs
  38. +10
    -0
      tools/Tensorflow.Redist.NativeLibrarySplitter/Tensorflow.Redist.NativeLibrarySplitter.csproj
  39. +0
    -0
      tools/Tensorflow.UnitTest.RedistHolder/EmptyClass.cs
  40. +0
    -0
      tools/Tensorflow.UnitTest.RedistHolder/Tensorflow.UnitTest.RedistHolder.csproj
  41. +0
    -0
      tools/scripts/Copy-NativeTensorFlowLibs.ps1
  42. +0
    -0
      tools/tensorflowlib/README.md

+ 6
- 6
.github/workflows/build_and_test.yml View File

@@ -28,9 +28,9 @@ jobs:
- name: Test CPU version
run: dotnet test --no-build --verbosity normal
- name: uninstall redist cpu for unit tests
run: dotnet remove helpers/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist
run: dotnet remove tools/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist
- name: install redist gpu for unit tests
run: dotnet add helpers/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist-Windows-GPU
run: dotnet add tools/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist-Windows-GPU
- name: Restore dependencies
run: dotnet restore
- name: Build GPU version
@@ -52,12 +52,12 @@ jobs:
run: dotnet restore
- name: Build CPU version
run: dotnet build --no-restore
# - name: Test CPU version
# run: dotnet test --no-build --verbosity normal
- name: Test CPU version
run: dotnet test --no-build --verbosity normal
- name: uninstall redist cpu for unit tests
run: dotnet remove helpers/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist
run: dotnet remove tools/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist
- name: install redist gpu for unit tests
run: dotnet add helpers/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist-Linux-GPU
run: dotnet add tools/Tensorflow.UnitTest.RedistHolder package SciSharp.TensorFlow.Redist-Linux-GPU
- name: Restore dependencies
run: dotnet restore
- name: Build GPU version


+ 104
- 83
TensorFlow.NET.sln View File

@@ -5,12 +5,8 @@ VisualStudioVersion = 17.4.33213.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Binding", "src\TensorFlowNET.Core\Tensorflow.Binding.csproj", "{FD682AC0-7B2D-45D3-8B0D-C6D678B04144}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Benchmark", "src\TensorFlowNet.Benchmarks\Tensorflow.Benchmark.csproj", "{3A6EB896-604F-4E25-B677-B8103BCF3D2E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Binding.UnitTest", "test\TensorFlowNET.UnitTest\Tensorflow.Binding.UnitTest.csproj", "{23C28035-2FCE-41F3-9A12-E73CE8A5AE32}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Console", "src\TensorFlowNET.Console\Tensorflow.Console.csproj", "{03F06299-3F4B-4449-A709-3A647657BC0C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Keras", "src\TensorFlowNET.Keras\Tensorflow.Keras.csproj", "{49D71826-C03D-4FA7-9BAC-22C1327E65CF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Text", "src\TensorFlowNET.Text\Tensorflow.Text.csproj", "{1AB8108D-4FFE-4A16-88E7-328EAF686370}"
@@ -31,11 +27,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{01A1787F-A9B
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{1B0918B9-65AD-4F34-A287-AF4597B27DBD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "helpers", "helpers", "{E1A5D2B7-10AF-4876-85C0-7714EF274214}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{E1A5D2B7-10AF-4876-85C0-7714EF274214}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.CodeGen", "tools\Tensorflow.CodeGen\Tensorflow.CodeGen.csproj", "{3D92142F-EEDB-469B-B03C-4E38728BFE4C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Redist.NativeLibrarySplitter", "tools\Tensorflow.Redist.NativeLibrarySplitter\Tensorflow.Redist.NativeLibrarySplitter.csproj", "{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.UnitTest.RedistHolder", "tools\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj", "{D24FCAA5-548C-4251-B226-A1B6535D0845}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.UnitTest.RedistHolder", "helpers\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj", "{62D543A2-8846-45A3-829B-5754B094A8E2}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Benchmark", "tools\TensorFlowNET.Benchmarks\Tensorflow.Benchmark.csproj", "{C23563DB-FE21-48E7-A411-87A109E4A899}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.CodeGen", "Tensorflow.CodeGen\Tensorflow.CodeGen.csproj", "{BADBB104-2F03-4824-A249-803A871D8122}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tensorflow.Console", "tools\TensorFlowNET.Console\Tensorflow.Console.csproj", "{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -68,24 +70,6 @@ Global
{FD682AC0-7B2D-45D3-8B0D-C6D678B04144}.Release|x64.Build.0 = Release|x64
{FD682AC0-7B2D-45D3-8B0D-C6D678B04144}.Release|x86.ActiveCfg = Release|Any CPU
{FD682AC0-7B2D-45D3-8B0D-C6D678B04144}.Release|x86.Build.0 = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Debug|x64.ActiveCfg = Debug|x64
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Debug|x64.Build.0 = Debug|x64
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Debug|x86.ActiveCfg = Debug|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Debug|x86.Build.0 = Debug|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.GPU|Any CPU.ActiveCfg = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.GPU|Any CPU.Build.0 = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.GPU|x64.ActiveCfg = Release|x64
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.GPU|x64.Build.0 = Release|x64
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.GPU|x86.ActiveCfg = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.GPU|x86.Build.0 = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Release|Any CPU.Build.0 = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Release|x64.ActiveCfg = Release|x64
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Release|x64.Build.0 = Release|x64
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Release|x86.ActiveCfg = Release|Any CPU
{3A6EB896-604F-4E25-B677-B8103BCF3D2E}.Release|x86.Build.0 = Release|Any CPU
{23C28035-2FCE-41F3-9A12-E73CE8A5AE32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23C28035-2FCE-41F3-9A12-E73CE8A5AE32}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23C28035-2FCE-41F3-9A12-E73CE8A5AE32}.Debug|x64.ActiveCfg = Debug|x64
@@ -104,24 +88,6 @@ Global
{23C28035-2FCE-41F3-9A12-E73CE8A5AE32}.Release|x64.Build.0 = Release|x64
{23C28035-2FCE-41F3-9A12-E73CE8A5AE32}.Release|x86.ActiveCfg = Release|Any CPU
{23C28035-2FCE-41F3-9A12-E73CE8A5AE32}.Release|x86.Build.0 = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Debug|x64.ActiveCfg = Debug|x64
{03F06299-3F4B-4449-A709-3A647657BC0C}.Debug|x64.Build.0 = Debug|x64
{03F06299-3F4B-4449-A709-3A647657BC0C}.Debug|x86.ActiveCfg = Debug|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Debug|x86.Build.0 = Debug|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.GPU|Any CPU.ActiveCfg = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.GPU|Any CPU.Build.0 = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.GPU|x64.ActiveCfg = Release|x64
{03F06299-3F4B-4449-A709-3A647657BC0C}.GPU|x64.Build.0 = Release|x64
{03F06299-3F4B-4449-A709-3A647657BC0C}.GPU|x86.ActiveCfg = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.GPU|x86.Build.0 = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Release|Any CPU.Build.0 = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Release|x64.ActiveCfg = Release|x64
{03F06299-3F4B-4449-A709-3A647657BC0C}.Release|x64.Build.0 = Release|x64
{03F06299-3F4B-4449-A709-3A647657BC0C}.Release|x86.ActiveCfg = Release|Any CPU
{03F06299-3F4B-4449-A709-3A647657BC0C}.Release|x86.Build.0 = Release|Any CPU
{49D71826-C03D-4FA7-9BAC-22C1327E65CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{49D71826-C03D-4FA7-9BAC-22C1327E65CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{49D71826-C03D-4FA7-9BAC-22C1327E65CF}.Debug|x64.ActiveCfg = Debug|x64
@@ -266,51 +232,103 @@ Global
{7DEA8760-E401-4872-81F3-405F185A13A0}.Release|x64.Build.0 = Release|Any CPU
{7DEA8760-E401-4872-81F3-405F185A13A0}.Release|x86.ActiveCfg = Release|Any CPU
{7DEA8760-E401-4872-81F3-405F185A13A0}.Release|x86.Build.0 = Release|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Debug|x64.ActiveCfg = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Debug|x64.Build.0 = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Debug|x86.ActiveCfg = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Debug|x86.Build.0 = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.GPU|Any CPU.ActiveCfg = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.GPU|Any CPU.Build.0 = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.GPU|x64.ActiveCfg = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.GPU|x64.Build.0 = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.GPU|x86.ActiveCfg = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.GPU|x86.Build.0 = Debug|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Release|Any CPU.Build.0 = Release|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Release|x64.ActiveCfg = Release|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Release|x64.Build.0 = Release|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Release|x86.ActiveCfg = Release|Any CPU
{62D543A2-8846-45A3-829B-5754B094A8E2}.Release|x86.Build.0 = Release|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Debug|x64.ActiveCfg = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Debug|x64.Build.0 = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Debug|x86.ActiveCfg = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Debug|x86.Build.0 = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.GPU|Any CPU.ActiveCfg = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.GPU|Any CPU.Build.0 = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.GPU|x64.ActiveCfg = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.GPU|x64.Build.0 = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.GPU|x86.ActiveCfg = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.GPU|x86.Build.0 = Debug|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Release|Any CPU.Build.0 = Release|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Release|x64.ActiveCfg = Release|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Release|x64.Build.0 = Release|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Release|x86.ActiveCfg = Release|Any CPU
{BADBB104-2F03-4824-A249-803A871D8122}.Release|x86.Build.0 = Release|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Debug|x64.ActiveCfg = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Debug|x64.Build.0 = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Debug|x86.ActiveCfg = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Debug|x86.Build.0 = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.GPU|Any CPU.ActiveCfg = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.GPU|Any CPU.Build.0 = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.GPU|x64.ActiveCfg = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.GPU|x64.Build.0 = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.GPU|x86.ActiveCfg = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.GPU|x86.Build.0 = Debug|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Release|Any CPU.Build.0 = Release|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Release|x64.ActiveCfg = Release|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Release|x64.Build.0 = Release|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Release|x86.ActiveCfg = Release|Any CPU
{3D92142F-EEDB-469B-B03C-4E38728BFE4C}.Release|x86.Build.0 = Release|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Debug|x64.ActiveCfg = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Debug|x64.Build.0 = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Debug|x86.ActiveCfg = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Debug|x86.Build.0 = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.GPU|Any CPU.ActiveCfg = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.GPU|Any CPU.Build.0 = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.GPU|x64.ActiveCfg = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.GPU|x64.Build.0 = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.GPU|x86.ActiveCfg = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.GPU|x86.Build.0 = Debug|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Release|Any CPU.Build.0 = Release|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Release|x64.ActiveCfg = Release|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Release|x64.Build.0 = Release|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Release|x86.ActiveCfg = Release|Any CPU
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C}.Release|x86.Build.0 = Release|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Debug|x64.ActiveCfg = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Debug|x64.Build.0 = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Debug|x86.ActiveCfg = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Debug|x86.Build.0 = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.GPU|Any CPU.ActiveCfg = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.GPU|Any CPU.Build.0 = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.GPU|x64.ActiveCfg = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.GPU|x64.Build.0 = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.GPU|x86.ActiveCfg = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.GPU|x86.Build.0 = Debug|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Release|Any CPU.Build.0 = Release|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Release|x64.ActiveCfg = Release|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Release|x64.Build.0 = Release|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Release|x86.ActiveCfg = Release|Any CPU
{D24FCAA5-548C-4251-B226-A1B6535D0845}.Release|x86.Build.0 = Release|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Debug|x64.ActiveCfg = Debug|x64
{C23563DB-FE21-48E7-A411-87A109E4A899}.Debug|x64.Build.0 = Debug|x64
{C23563DB-FE21-48E7-A411-87A109E4A899}.Debug|x86.ActiveCfg = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Debug|x86.Build.0 = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.GPU|Any CPU.ActiveCfg = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.GPU|Any CPU.Build.0 = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.GPU|x64.ActiveCfg = Debug|x64
{C23563DB-FE21-48E7-A411-87A109E4A899}.GPU|x64.Build.0 = Debug|x64
{C23563DB-FE21-48E7-A411-87A109E4A899}.GPU|x86.ActiveCfg = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.GPU|x86.Build.0 = Debug|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Release|Any CPU.Build.0 = Release|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Release|x64.ActiveCfg = Release|x64
{C23563DB-FE21-48E7-A411-87A109E4A899}.Release|x64.Build.0 = Release|x64
{C23563DB-FE21-48E7-A411-87A109E4A899}.Release|x86.ActiveCfg = Release|Any CPU
{C23563DB-FE21-48E7-A411-87A109E4A899}.Release|x86.Build.0 = Release|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Debug|x64.ActiveCfg = Debug|x64
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Debug|x64.Build.0 = Debug|x64
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Debug|x86.ActiveCfg = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Debug|x86.Build.0 = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.GPU|Any CPU.ActiveCfg = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.GPU|Any CPU.Build.0 = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.GPU|x64.ActiveCfg = Debug|x64
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.GPU|x64.Build.0 = Debug|x64
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.GPU|x86.ActiveCfg = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.GPU|x86.Build.0 = Debug|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Release|Any CPU.Build.0 = Release|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Release|x64.ActiveCfg = Release|x64
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Release|x64.Build.0 = Release|x64
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Release|x86.ActiveCfg = Release|Any CPU
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{FD682AC0-7B2D-45D3-8B0D-C6D678B04144} = {01A1787F-A9BE-4221-84E8-6360DD010AB6}
{3A6EB896-604F-4E25-B677-B8103BCF3D2E} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{23C28035-2FCE-41F3-9A12-E73CE8A5AE32} = {1B0918B9-65AD-4F34-A287-AF4597B27DBD}
{03F06299-3F4B-4449-A709-3A647657BC0C} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{49D71826-C03D-4FA7-9BAC-22C1327E65CF} = {01A1787F-A9BE-4221-84E8-6360DD010AB6}
{1AB8108D-4FFE-4A16-88E7-328EAF686370} = {01A1787F-A9BE-4221-84E8-6360DD010AB6}
{F17AAECB-960A-4E18-A270-BAD776F0E55B} = {01A1787F-A9BE-4221-84E8-6360DD010AB6}
@@ -319,8 +337,11 @@ Global
{3F5388FF-FBB4-462B-8F6F-829FFBAEB8A3} = {1B0918B9-65AD-4F34-A287-AF4597B27DBD}
{9738D16A-CFA0-405C-A7DF-D3D203B0CB18} = {01A1787F-A9BE-4221-84E8-6360DD010AB6}
{7DEA8760-E401-4872-81F3-405F185A13A0} = {1B0918B9-65AD-4F34-A287-AF4597B27DBD}
{62D543A2-8846-45A3-829B-5754B094A8E2} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{BADBB104-2F03-4824-A249-803A871D8122} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{3D92142F-EEDB-469B-B03C-4E38728BFE4C} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{AB131FA7-B7C3-4ABF-ABDE-E059C72A613C} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{D24FCAA5-548C-4251-B226-A1B6535D0845} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{C23563DB-FE21-48E7-A411-87A109E4A899} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
{1DC32255-BA1F-4D6D-A9C9-5BD5ED71CAA0} = {E1A5D2B7-10AF-4876-85C0-7714EF274214}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2DEAD3CC-486B-4918-A607-50B0DE7B114A}


+ 12
- 0
src/TensorFlowNET.Core/tensorflow.cs View File

@@ -86,6 +86,18 @@ namespace Tensorflow

OpDefLib = new OpDefLibrary();
InitGradientEnvironment();

try
{
var handle = c_api.TF_Version();
}
catch (DllNotFoundException)
{
throw new RuntimeError("Tensorflow.NET cannot find a backend. Please install one of the following packages for your program: " +
"SciSharp.TensorFlow.Redist, SciSharp.TensorFlow.Redist-Linux-GPU, SciSharp.TensorFlow.Redist-Windows-GPU. For more details, " +
"please visit https://github.com/SciSharp/TensorFlow.NET. If it still not work after installing the backend, please submit an " +
"issue to https://github.com/SciSharp/TensorFlow.NET/issues");
}
}

public string VERSION => c_api.StringPiece(c_api.TF_Version());


+ 1
- 1
test/TensorFlowNET.Graph.UnitTest/TensorFlowNET.Graph.UnitTest.csproj View File

@@ -34,8 +34,8 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\helpers\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Core\Tensorflow.Binding.csproj" />
<ProjectReference Include="..\..\tools\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
<ProjectReference Include="..\TensorFlowNET.Keras.UnitTest\Tensorflow.Keras.UnitTest.csproj" />
</ItemGroup>



+ 1
- 1
test/TensorFlowNET.Keras.UnitTest/Tensorflow.Keras.UnitTest.csproj View File

@@ -23,8 +23,8 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\helpers\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Keras\Tensorflow.Keras.csproj" />
<ProjectReference Include="..\..\tools\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
</ItemGroup>

<ItemGroup>


+ 3
- 0
test/TensorFlowNET.Native.UnitTest/Lite/TfLiteTest.cs View File

@@ -13,6 +13,7 @@ namespace Tensorflow.Native.UnitTest
public class TfLiteTest
{
[TestMethod]
[Ignore]
public void TfLiteVersion()
{
var ver = c_api_lite.StringPiece(c_api_lite.TfLiteVersion());
@@ -20,6 +21,7 @@ namespace Tensorflow.Native.UnitTest
}

[TestMethod]
[Ignore]
public unsafe void SmokeTest()
{
var model = c_api_lite.TfLiteModelCreateFromFile("Lite/testdata/add.bin");
@@ -85,6 +87,7 @@ namespace Tensorflow.Native.UnitTest
}

[TestMethod]
[Ignore]
public unsafe void QuantizationParamsTest()
{
var model = c_api_lite.TfLiteModelCreateFromFile("Lite/testdata/add_quantized.bin");


+ 1
- 1
test/TensorFlowNET.Native.UnitTest/Tensorflow.Native.UnitTest.csproj View File

@@ -54,8 +54,8 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\helpers\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Core\Tensorflow.Binding.csproj" />
<ProjectReference Include="..\..\tools\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
</ItemGroup>

</Project>

+ 1
- 1
test/TensorFlowNET.UnitTest/Tensorflow.Binding.UnitTest.csproj View File

@@ -48,9 +48,9 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\helpers\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Core\Tensorflow.Binding.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Text\Tensorflow.Text.csproj" />
<ProjectReference Include="..\..\tools\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
</ItemGroup>

<ItemGroup>


+ 1
- 1
test/TensorflowNET.Hub.Unittest/Tensorflow.Hub.Unittest.csproj View File

@@ -16,8 +16,8 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\helpers\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
<ProjectReference Include="..\..\src\TensorflowNET.Hub\Tensorflow.Hub.csproj" />
<ProjectReference Include="..\..\tools\Tensorflow.UnitTest.RedistHolder\Tensorflow.UnitTest.RedistHolder.csproj" />
</ItemGroup>

</Project>

src/TensorFlowNet.Benchmarks/Crash/RepeatDataSetCrash.cs → tools/TensorFlowNET.Benchmarks/Crash/RepeatDataSetCrash.cs View File


src/TensorFlowNet.Benchmarks/Leak/GpuLeakByCNN.cs → tools/TensorFlowNET.Benchmarks/Leak/GpuLeakByCNN.cs View File


src/TensorFlowNet.Benchmarks/Leak/SavedModelCleanup.cs → tools/TensorFlowNET.Benchmarks/Leak/SavedModelCleanup.cs View File


src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/saved_model.pb → tools/TensorFlowNET.Benchmarks/Leak/TestModel/saved_model/saved_model.pb View File


src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.data-00000-of-00001 → tools/TensorFlowNET.Benchmarks/Leak/TestModel/saved_model/variables/variables.data-00000-of-00001 View File


src/TensorFlowNet.Benchmarks/Leak/TestModel/saved_model/variables/variables.index → tools/TensorFlowNET.Benchmarks/Leak/TestModel/saved_model/variables/variables.index View File


src/TensorFlowNet.Benchmarks/Program.cs → tools/TensorFlowNET.Benchmarks/Program.cs View File


src/TensorFlowNet.Benchmarks/README.md → tools/TensorFlowNET.Benchmarks/README.md View File


src/TensorFlowNet.Benchmarks/TensorBenchmark.cs → tools/TensorFlowNET.Benchmarks/TensorBenchmark.cs View File


src/TensorFlowNet.Benchmarks/Tensorflow.Benchmark.csproj → tools/TensorFlowNET.Benchmarks/Tensorflow.Benchmark.csproj View File

@@ -41,7 +41,7 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\TensorFlowNET.Keras\Tensorflow.Keras.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Keras\Tensorflow.Keras.csproj" />
</ItemGroup>

<ItemGroup>

src/TensorFlowNet.Benchmarks/Unmanaged/StructCastBenchmark.cs → tools/TensorFlowNET.Benchmarks/Unmanaged/StructCastBenchmark.cs View File


src/TensorFlowNET.Console/Diagnostician.cs → tools/TensorFlowNET.Console/Diagnostician.cs View File


src/TensorFlowNET.Console/Exploring.cs → tools/TensorFlowNET.Console/Exploring.cs View File


src/TensorFlowNET.Console/MemoryBasicTest.cs → tools/TensorFlowNET.Console/MemoryBasicTest.cs View File


src/TensorFlowNET.Console/MemoryFuncGraphTest.cs → tools/TensorFlowNET.Console/MemoryFuncGraphTest.cs View File


src/TensorFlowNET.Console/MemoryKerasTest.cs → tools/TensorFlowNET.Console/MemoryKerasTest.cs View File


src/TensorFlowNET.Console/MemoryMonitor.cs → tools/TensorFlowNET.Console/MemoryMonitor.cs View File


src/TensorFlowNET.Console/Program.cs → tools/TensorFlowNET.Console/Program.cs View File


src/TensorFlowNET.Console/SimpleRnnTest.cs → tools/TensorFlowNET.Console/SimpleRnnTest.cs View File


src/TensorFlowNET.Console/Tensorflow.Console.csproj → tools/TensorFlowNET.Console/Tensorflow.Console.csproj View File

@@ -24,8 +24,8 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\TensorFlowNET.Recommenders\Tensorflow.Recommenders.csproj" />
<ProjectReference Include="..\TensorFlowNET.Text\Tensorflow.Text.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Recommenders\Tensorflow.Recommenders.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Text\Tensorflow.Text.csproj" />
</ItemGroup>

</Project>

Tensorflow.CodeGen/DescriptionGenerator.cs → tools/Tensorflow.CodeGen/DescriptionGenerator.cs View File


Tensorflow.CodeGen/FunctionGenerator.cs → tools/Tensorflow.CodeGen/FunctionGenerator.cs View File


Tensorflow.CodeGen/GenOpsWriter.cs → tools/Tensorflow.CodeGen/GenOpsWriter.cs View File


Tensorflow.CodeGen/OpClassifier.cs → tools/Tensorflow.CodeGen/OpClassifier.cs View File


Tensorflow.CodeGen/Program.cs → tools/Tensorflow.CodeGen/Program.cs View File


Tensorflow.CodeGen/Tensorflow.CodeGen.csproj → tools/Tensorflow.CodeGen/Tensorflow.CodeGen.csproj View File

@@ -13,7 +13,7 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\src\TensorFlowNET.Core\Tensorflow.Binding.csproj" />
<ProjectReference Include="..\..\src\TensorFlowNET.Core\Tensorflow.Binding.csproj" />
</ItemGroup>

</Project>

Tensorflow.CodeGen/Utils.cs → tools/Tensorflow.CodeGen/Utils.cs View File


+ 212
- 0
tools/Tensorflow.Redist.NativeLibrarySplitter/Program.cs View File

@@ -0,0 +1,212 @@

// =================================================================== //
// This is a tool to split the native .so file of linux gpu library //
// =================================================================== //

using System.Security.Cryptography;

string filename = "libtensorflow.so";
int count = 5;
SplitFile(filename, count);

static void SplitFile(string filename, int count)
{
// 打开读取二进制文件的文件流
using (FileStream input = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
long filesize = new FileInfo(filename).Length; // 获取文件大小
long fragmentSize = (long)(filesize / count + 1); // 计算每个分片的大小

byte[] buffer = new byte[fragmentSize]; // 设置缓冲区大小
int bytesRead; // 存储读取长度
int fragmentIndex = 1; // 分片计数器

// 使用循环遍历分片并写入相应的文件
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
string outputFileName = $"{filename}.fragment{fragmentIndex++}";
using (FileStream output = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
{
output.Write(buffer, 0, bytesRead);
}
}

// 计算整个文件的 SHA-256 哈希值并写入 .sha 文件
using (SHA256 sha256Hash = SHA256.Create())
{
input.Seek(0, SeekOrigin.Begin);
byte[] hashValue = sha256Hash.ComputeHash(input);

string shaFileName = $"{filename}.sha";
using (StreamWriter writer = new StreamWriter(shaFileName, false))
{
writer.Write(BitConverter.ToString(hashValue).Replace("-", ""));
}
}
}
}

// Resume the file from fregments. Thanks for the code in TorchSharp!
static void Restitch(string RestitcherPackage)
{
// !!!!!!!------------------------------NOTE------------------------------------!!!!!!
// !!!!!!! This code is manually copied into pkg\common\RestitchPackage.targets !!!!!!
// !!!!!!!------------------------------NOTE------------------------------------!!!!!!
//
// vvvvvvvvvvvvvvvvvvvvvvvvvvvvv START HERE vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
try
{
if (Directory.Exists(RestitcherPackage))
{
using (var writer = File.CreateText("obj/tensorflow_redist_build_log.txt"))
{
foreach (var p in Directory.EnumerateFiles(RestitcherPackage, "*", SearchOption.AllDirectories))
{

var primaryFile = Path.GetFullPath(p);
writer.WriteLine("Found primary file at {0}", primaryFile);

// See if there are fragments in the parallel nuget packages. If the primary is
// some-package-primary\runtimes\....\a.so
// some-package-primary\runtimes\....\a.so.sha
// then the expected fragments are
// some-package-fragment1\fragments\....\a.so
// some-package-fragment2\fragments\....\a.so
// some-package-fragment3\fragments\....\a.so
// some-package-fragment4\fragments\....\a.so
// some-package-fragment5\fragments\....\a.so
// some-package-fragment6\fragments\....\a.so
// some-package-fragment7\fragments\....\a.so
// some-package-fragment8\fragments\....\a.so
// some-package-fragment9\fragments\....\a.so
// some-package-fragment10\fragments\....\a.so
var shaFile = primaryFile + ".sha";
var fragmentFile1 = primaryFile.Replace("-primary", "-fragment1").Replace("runtimes", "fragments") + ".fragment1";
var fragmentFile2 = primaryFile.Replace("-primary", "-fragment2").Replace("runtimes", "fragments") + ".fragment2";
var fragmentFile3 = primaryFile.Replace("-primary", "-fragment3").Replace("runtimes", "fragments") + ".fragment3";
var fragmentFile4 = primaryFile.Replace("-primary", "-fragment4").Replace("runtimes", "fragments") + ".fragment4";
var fragmentFile5 = primaryFile.Replace("-primary", "-fragment5").Replace("runtimes", "fragments") + ".fragment5";


if (File.Exists(fragmentFile1)) writer.WriteLine("Found fragment file at {0}", fragmentFile1);
if (File.Exists(fragmentFile2)) writer.WriteLine("Found fragment file at {0}", fragmentFile2);
if (File.Exists(fragmentFile3)) writer.WriteLine("Found fragment file at {0}", fragmentFile3);
if (File.Exists(fragmentFile4)) writer.WriteLine("Found fragment file at {0}", fragmentFile4);
if (File.Exists(fragmentFile5)) writer.WriteLine("Found fragment file at {0}", fragmentFile5);

if (File.Exists(fragmentFile1))
{
var tmpFile = Path.GetTempFileName();

{
writer.WriteLine("Writing restored primary file at {0}", tmpFile);
using (var os = File.OpenWrite(tmpFile))
{

//writer.WriteLine("Writing bytes from {0} to {1}", primaryFile, tmpFile);
//var primaryBytes = File.ReadAllBytes(primaryFile);

//os.Write(primaryBytes, 0, primaryBytes.Length);
if (File.Exists(fragmentFile1))
{
writer.WriteLine("Writing fragment bytes from {0} to {1}", fragmentFile1, tmpFile);
var fragmentBytes1 = File.ReadAllBytes(fragmentFile1);
os.Write(fragmentBytes1, 0, fragmentBytes1.Length);
}
if (File.Exists(fragmentFile2))
{
writer.WriteLine("Writing fragment bytes from {0} to {1}", fragmentFile2, tmpFile);
var fragmentBytes2 = File.ReadAllBytes(fragmentFile2);
os.Write(fragmentBytes2, 0, fragmentBytes2.Length);
}
if (File.Exists(fragmentFile3))
{
writer.WriteLine("Writing fragment bytes from {0} to {1}", fragmentFile3, tmpFile);
var fragmentBytes3 = File.ReadAllBytes(fragmentFile3);
os.Write(fragmentBytes3, 0, fragmentBytes3.Length);
}
if (File.Exists(fragmentFile4))
{
writer.WriteLine("Writing fragment bytes from {0} to {1}", fragmentFile4, tmpFile);
var fragmentBytes4 = File.ReadAllBytes(fragmentFile4);
os.Write(fragmentBytes4, 0, fragmentBytes4.Length);
}
if (File.Exists(fragmentFile5))
{
writer.WriteLine("Writing fragment bytes from {0} to {1}", fragmentFile5, tmpFile);
var fragmentBytes5 = File.ReadAllBytes(fragmentFile5);
os.Write(fragmentBytes5, 0, fragmentBytes5.Length);
}
}
}

var shaExpected = File.Exists(shaFile) ? File.ReadAllText(shaFile).ToUpper() : "";
writer.WriteLine($"real sha: {shaExpected}");

using (var sha256Hash = System.Security.Cryptography.SHA256.Create())
{
using (var os2 = File.OpenRead(tmpFile))
{

byte[] bytes = sha256Hash.ComputeHash(os2);
var builder = new System.Text.StringBuilder();
for (int i = 0; i < bytes.Length; i++)
{
builder.Append(bytes[i].ToString("x2"));
}
var shaReconstituted = builder.ToString().ToUpper();
if (shaExpected != shaReconstituted)
{
string msg =
$"Error downloading and reviving packages. Reconsituted file contents have incorrect SHA\n\tExpected SHA: ${shaExpected}\n\tActual SHA: ${shaReconstituted}\n\tFile was reconstituted from:"
+ $"\n\t{primaryFile} (length ${new FileInfo(primaryFile).Length})"
+ (File.Exists(fragmentFile1) ? $"\n\t{fragmentFile1} (length ${new FileInfo(fragmentFile1).Length})" : "")
+ (File.Exists(fragmentFile2) ? $"\n\t{fragmentFile2} (length ${new FileInfo(fragmentFile2).Length})" : "")
+ (File.Exists(fragmentFile3) ? $"\n\t{fragmentFile3} (length ${new FileInfo(fragmentFile3).Length})" : "")
+ (File.Exists(fragmentFile4) ? $"\n\t{fragmentFile4} (length ${new FileInfo(fragmentFile4).Length})" : "")
+ (File.Exists(fragmentFile5) ? $"\n\t{fragmentFile5} (length ${new FileInfo(fragmentFile5).Length})" : "");
writer.WriteLine(msg);
throw new Exception(msg);
}
}

}

writer.WriteLine("Deleting {0}", primaryFile);
File.Delete(primaryFile);
if (File.Exists(primaryFile))
throw new Exception("wtf?");

writer.WriteLine("Moving {0} --> {1}", tmpFile, primaryFile);
File.Move(tmpFile, primaryFile);

writer.WriteLine("Deleting {0}", fragmentFile1);
File.Delete(fragmentFile1); // free up space and prevent us doing this again

writer.WriteLine("Deleting {0}", fragmentFile2);
if (File.Exists(fragmentFile2))
File.Delete(fragmentFile2); // free up space and prevent us doing this again

writer.WriteLine("Deleting {0}", fragmentFile3);
if (File.Exists(fragmentFile3))
File.Delete(fragmentFile3); // free up space and prevent us doing this again

writer.WriteLine("Deleting {0}", fragmentFile4);
if (File.Exists(fragmentFile4))
File.Delete(fragmentFile4); // free up space and prevent us doing this again

writer.WriteLine("Deleting {0}", fragmentFile5);
if (File.Exists(fragmentFile5))
File.Delete(fragmentFile5); // free up space and prevent us doing this again
}
}
}
}
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.ToString());
Console.Error.WriteLine(ex.StackTrace);
}
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ END HERE^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}

+ 10
- 0
tools/Tensorflow.Redist.NativeLibrarySplitter/Tensorflow.Redist.NativeLibrarySplitter.csproj View File

@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

</Project>

helpers/Tensorflow.UnitTest.RedistHolder/EmptyClass.cs → tools/Tensorflow.UnitTest.RedistHolder/EmptyClass.cs View File


helpers/Tensorflow.UnitTest.RedistHolder/Tensorflow.UnitTest.RedistHolder.csproj → tools/Tensorflow.UnitTest.RedistHolder/Tensorflow.UnitTest.RedistHolder.csproj View File


scripts/Copy-NativeTensorFlowLibs.ps1 → tools/scripts/Copy-NativeTensorFlowLibs.ps1 View File


tensorflowlib/README.md → tools/tensorflowlib/README.md View File


Loading…
Cancel
Save