* .vcxproj
.Um mit anderen Bibliotheken zu verknüpfen, wollte ich eine LibTorch-App nur mit Visual Studio erstellen, vorzugsweise ohne CMake. (Ich denke, es kann mit CMake je nach Einstellung gemacht werden) Sie können die CPU-Version von LibTorch verwenden, indem Sie den Include-Pfad und die abhängigen Dateien nur in Visual Studio festlegen. Selbst wenn Sie verschiedene Stellen kneten, wurde die GPU nicht aktiviert. Es ist einfach (so lala), eine GPU-fähige App mit CMake zu erstellen, aber ich habe keinen Artikel gefunden, der GPU-fähig mit Visual Studio allein aktiviert, also schreibe ich ihn hier.
Außerdem bin ich mit CMake, C ++ oder Visual Studio nicht vertraut. Lassen Sie mich daher wissen, wenn Sie bessere Informationen haben.
OS: Windows 10 Enterprise CPU: Core i7-8700K GPU: RTX 2080 SUPER RAM: 8.0x2 GB
Visual Studio 2019 Community CUDA 10.1 cuDNN 7.5.1 LibTorch 1.6.0 C++17 CMake 3.18.0
Laden Sie zunächst LibTorch von der offiziellen PyTorch-Website herunter. Laden Sie sowohl die Debug- als auch die Release-Version herunter.
Entpacken Sie die heruntergeladene Bibliothek und verschieben Sie sie direkt unter C.
Benennen Sie die Debug-Version in "Debug" und die Release-Version in "Release" um und stellen Sie die Ordnerhierarchie wie folgt ein.
C: \ libtorch \ 1_6_0 \ (Debug, Release) \ (bin, include, lib usw.) \ .....
Laden Sie anschließend CUDA 10.1 von der [offiziellen Website] herunter und installieren Sie es (https://developer.nvidia.com/cuda-10.1-download-archive-update2?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exenetwork). Stellen Sie sicher, dass Sie es der Umgebungsvariablen PATH hinzufügen.
Laden Sie anschließend cuDNN 7.5.1 von der offiziellen Website herunter und
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
Kopieren Sie bin, include, lib to.
Sie müssen ein Konto zum Herunterladen erstellen.
Verwenden Sie CMake, um das Build-System auszugeben (Visual Studio-Lösungen und Projektdateien).
Hier wird es von Befehlen bedient, aber VS-Code wird empfohlen, da Sie CMake intuitiv bedienen können.
Erstellen Sie einen Ordner an einem geeigneten Ort (hier erstellen Sie einen cmake_sample-Ordner direkt unter D) und erstellen Sie sample.cpp
und CMakeLists.txt
.
Bearbeiten Sie die beiden Dateien wie folgt. Auch dieses Mal werden wir auf C ++ 17 abzielen.
sample.cpp
#include <iostream>
#include <torch/torch.h>
int main()
{
torch::DeviceType device_type;
if (torch::cuda::is_available())
{
std::cout << "CUDA available!\n";
device_type = torch::kCUDA;
}
else
{
std::cout << "CPU only.\n";
device_type = torch::kCPU;
}
torch::Device device(device_type);
auto tensor = torch::randn({2, 3});
tensor = tensor.to(device);
std::cout << tensor << std::endl;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(cmake_sample)
set(CMAKE_CXX_STANDARD 17) #add
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
add_executable(sample sample.cpp)
target_link_libraries(sample "${TORCH_LIBRARIES}")
# set_property(TARGET example-app PROPERTY CXX_STANDARD 14)
# The following code block is suggested to be used on Windows.
# According to https://github.com/pytorch/pytorch/issues/25457,
# the DLLs need to be copied to avoid memory errors.
if (MSVC)
file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")
add_custom_command(TARGET sample
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${TORCH_DLLS}
$<TARGET_FILE_DIR:sample>)
endif (MSVC)
Öffnen Sie die x64_x86 Cross Tools-Eingabeaufforderung für VS 2019 mit Administratorrechten und führen Sie die folgenden Befehle aus.
$ D:
$ cd cmake_sample
$ mkdir build
$ cd build
$ cmake .. -G "Visual Studio 16 2019" -DCMAKE_PREFIX_PATH=C:\libtorch\1_6_0\Debug
Im Build-Ordner befindet sich eine Visual Studio-Lösung mit dem Namen "cmake_sample.sln". Öffnen Sie sie daher.
Ändern Sie die Konfiguration in "Debug | x64" und erstellen Sie (Strg + Umschalt + B).
Ändern Sie das Projekt sample
in Startup und F5.
Wenn Sie die Tensoren "CUDA verfügbar!" Und "CUDAFloatType" sehen, haben Sie erfolgreich gebaut.
Wenn es zu "CPU" wird, überprüfen Sie das Dateilayout, die Umgebungsvariablen und die Befehle.
Nachdem Sie bestätigt haben, dass die Ausführung erfolgreich war, erstellen Sie in Visual Studio ein "leeres Projekt" und öffnen Sie den Eigenschaftenmanager.
Klicken Sie mit der rechten Maustaste auf "Debug | x64", fügen Sie ein neues Projekteigenschaftsblatt hinzu und erstellen Sie ein Eigenschaftenblatt "libtorch_1_6_0.prop".
Öffnen Sie das Eigenschaftenblatt mit einem Texteditor und löschen Sie die Zeile "
Öffnen Sie die Datei "sample.vcxproj" in einem Texteditor.
Von sample.vcxproj
,
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
Von
</ItemDefinitionGroup>
Und fügen Sie es in das Tag
(Da es fast das gleiche wie zuvor ist, werden einige weggelassen.)
Löschen Sie "CMakeCache.txt" im Build-Ordner. (wichtig) Dann im Build-Ordner den folgenden Befehl
$ cmake .. -G "Visual Studio 16 2019" -DCMAKE_PREFIX_PATH=C:\libtorch\1_6_0\Release
So öffnen Sie die Visual Studio-Lösung im Build-Ordner Ändern Sie die Konfiguration in "Release | x64", erstellen Sie sie und führen Sie sie aus. Wenn Sie die Tensoren "CUDA verfügbar!" Und "CUDAFloatType" sehen, haben Sie erfolgreich gebaut.
Nachdem Sie bestätigt haben, dass die Ausführung erfolgreich war, öffnen Sie das Eigenschaftenblatt libtorch_1_6_0.prop
erneut mit einem Texteditor.
Öffnen Sie die Datei "sample.vcxproj" erneut in einem Texteditor.
Von sample.vcxproj
,
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
Von
</ItemDefinitionGroup>
Und fügen Sie es in den Tag-Bereich "
Erstellen Sie ein geeignetes "leeres Projekt" in Visual Studio.
HausverwaltungDebug|x64
WannRelease|x64
Waslibtorch_1_6_0.prop
Hinzufügen.
Fügen Sie die Quelldatei hinzu und schreiben Sie den gleichen Inhalt wie die vorherige sample.cpp
.
Ändern Sie die Konfiguration in "Debug | x64" und F5.
Ändern Sie außerdem die Konfiguration in "Release | x64" und F5.
Das erste Mal wird "* .dll" kopiert, daher dauert die Ausführung einige Zeit. Wenn die Tensoren "CUDA verfügbar!" Und "CUDAFloatType" auf beiden Seiten angezeigt werden, sind die Einstellungen korrekt. Sie können einen Haltepunkt erreichen und prüfen, ob der Debug-Lauf funktioniert.
Von nun an können Sie durch Wiederverwenden dieses Eigenschaftenblatts schnell ein GPU-kompatibles Programm erstellen.
Gibt es einen besseren Weg, dies zu tun?
Recommended Posts