質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

4198閲覧

WindowsでのLibTorchビルド時のエラー

redp

総合スコア49

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/01/27 11:58

編集2019/01/28 12:11

実現したいこと

WindowsでのLibTorchのビルドをしたいのですが、Installing C++ Distributionsこのやり方でやっても上手くいかず困っています。CMakeでのビルドについての知識が何一つないので以下のエラーをどのように処理すればいいかわからず質問させていただきました。

エラー内容

上記のリンクと同じ名前のプロジェクトを作りました。ここではClionのTerminal上で実行しています。

$ C:\path\to\example-app\build> cmake -DCMAKE_PREFIX_PATH=C:\libtorch .. ... CMake Error at C:/libtorch/share/cmake/Caffe2/public/cuda.cmake:283 (message): CUDA support not available with 32-bit windows. Did you forget to set Win64 in the generator target? Call Stack (most recent call first): C:/libtorch/share/cmake/Caffe2/Caffe2Config.cmake:88 (include) C:/libtorch/share/cmake/Torch/TorchConfig.cmake:39 (find_package) CMakeLists.txt:4 (find_package)

ここで、上記のエラーについて調べたところこのリンクを発見しましたので、VisualStudio2017のx64 Native Tools コマンドプロンプトで上記のコマンドを実行すればいいと思い、実行してみたところ、上と同じエラーが出ました。
そこで、もう一つのリンクこちらのリンクのように

-DCMAKE_GENRATOR_PLATFORM=x64

というオプションをつけてClionのTerminalで実行したところ

$ C:\path\to\example-app\build> cmake -DCMAKE_PREFIX_PATH=C:\libtorch -DCMAKE_GENERATOR_PLATFORM=x64 .. -- Caffe2: CUDA detected: 10.0 -- Caffe2: CUDA nvcc is: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/bin/nvcc.exe -- Caffe2: CUDA toolkit directory: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0 -- Caffe2: Header version is: 10.0 -- Found cuDNN: v7.4.1 (include: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include, library: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/cudnn.lib) -- Autodetected CUDA architecture(s): 6.1 -- Added CUDA NVCC flags for: -gencode;arch=compute_61,code=sm_61 CMake Error at C:/libtorch/share/cmake/Caffe2/public/cuda.cmake:368 (message): Unknown cmake build type: Call Stack (most recent call first): C:/libtorch/share/cmake/Caffe2/Caffe2Config.cmake:88 (include) C:/libtorch/share/cmake/Torch/TorchConfig.cmake:39 (find_package) CMakeLists.txt:4 (find_package)

このようなエラーが出ました大事な部分はUnknown cmake build typeでしょうか。
また、念のためVisualStudio x64 Nativeのほうで同じコマンドを実行してみると、以下のエラーが出ました。こちらはVisualStudioのCMake設定の変更により改善するでしょうか?

cmTC_62817.dir\Debug\detect_cuda_version.obj : fatal error LNK1112: モジュールのコンピューターの種類 'x64' は対象コンピューターの種類 'x86' と競合しています。

補足

Python 3.6及び3.7 でPyTorch 1.0 stableをインストールし、Cudaは使えています。
もちろんCuDNNもインストール済みです。
実行環境にも示すようにCudaのバージョンは10であり、CudaのインストールにはVisualStudio2017を使用しました。

cmakeコマンドの場所は以下の通りです。

$ where cmake C:\Program Files\CMake\bin\cmake.exe

実行環境

Windows 10 x64
cmake 3.13.3 x64
cuda 10
CuDNN 7.4.1
Visual Studio 2017 Community
Clion 2018.3.3
情報が足りなければ追加します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2019/01/27 17:02

メッセージ読む限り、CUDAが32bit Windowsじゃ使えないよって書いてない?
redp

2019/01/28 10:44

64bit windowsなのにでてるので困っています。ちなみに、pythonのpytorchではcudaを使えています。解決策はあるのでしょうか?
wwbQzhMkhhgEmhU

2019/01/28 10:52

そういう基本的な情報はちゃんと書きましょう。これでもかというくらい大量に書いてくれるくらいでいいです。聞かれてから情報小出しとか一番嫌なパターンです。こういうやり取りすごい面倒臭いですもん。 関係あるかどうか分かりませんが、cmake自体は64bitの取ってきてますか?
redp

2019/01/28 11:10

エラーの内容からWindowsのシステムの種類、cmake自体が64bitということも前提として、そのうえでの質問と考えていたので記述しませんでした。では、丁寧に記述しますので大幅に更新しますね。
wwbQzhMkhhgEmhU

2019/01/28 11:26

エラーの内容から64bit前提ならまずエラーメッセージ読んで自分で直せよ、と思ってしまいますね。 普通に読むと64bitと32bitの違いに気付けない人が立ち往生してるように読めるし、どちらかに決めることはできませんよ。
wwbQzhMkhhgEmhU

2019/01/28 12:14

detect_cuda_versionというモジュールがあると思うんだけど、それが64bitでビルドされてるんだけど、何と結合しようとしてるのかしらないけど、その結合対象のモジュールが32bitでビルドされてるみたいだよ
wwbQzhMkhhgEmhU

2019/01/28 12:15

多分visual studio側のビルド設定とかでは?
wwbQzhMkhhgEmhU

2019/01/28 12:16

ちなみに「また、念のためVisualStudio x64 Nativeのほうで同じコマンドを実行してみると」って何をしたの?
redp

2019/01/28 12:50 編集

cmakeのビルドがVisualStudioのコンパイラーを使用していることが要因だと思うので色々試行錯誤してみます。
wwbQzhMkhhgEmhU

2019/01/28 13:03

了解です。こちらでも暇が出来たら入れてみます。
wwbQzhMkhhgEmhU

2019/01/28 15:22

とりあえずやり始めてみました。zipで配られる夜間ビルドはどうもincludeから足りないっぽいですね。 pipで入れたtytorchにある、includeとlibを使ってビルドすると、CUDAは入ってないかもしれませんが、VC++でコンパイルまでは出来たようです(includeディレクトリ設定と構成の64bit化は手動)。リンクはオブジェクト形式の違いからか失敗します。 これからtytorchをVC++でビルドしてみようかと思います。
wwbQzhMkhhgEmhU

2019/01/29 07:33

tytorchのVC++ビルドは、環境構築に異常な時間がかかる上、ちょっともうやってられないくらいCMakefileをいじらないとまともに進まないので、諦めました。多分そっちの方が早いかと思いますけどね。 そこで元のlibtorchのリンクエラーをよく見たところ、テンプレートが長かっただけでただの未定義シンボルだったので、ライブラリをちゃんとしたら普通にビルド出来て、動きました。以下ポイントだけ書いておきます。 example-appプロジェクトの設定を以下を変更しました(全構成) <ClCompile> <AdditionalIncludeDirectories>$(TorchIncludeDir)</AdditionalIncludeDirectories> </ClCompile> <PostBuildEvent> <Command>copy $(TorchLibDir)\*.dll $(OutDir)</Command> </PostBuildEvent> <Link> <AdditionalLibraryDirectories>$(TorchLibDir)</AdditionalLibraryDirectories> <AdditionalDependencies>$(TorchLib);kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> マクロ(ユーザープロパティ)には以下を追加しています。 <TorchIncludeDir>C:\Python37\Lib\site-packages\torch\lib\include;C:\Python37\Lib\site-packages\torch\lib\include\torch\csrc\api\include</TorchIncludeDir> <TorchLibDir>C:\Python37\Lib\site-packages\torch\lib</TorchLibDir> <TorchLib>c10.lib;c10_cuda.lib;caffe2.lib;caffe2_detectron_ops_gpu.lib;caffe2_gpu.lib;caffe2_module_test_dynamic.lib;caffe2_observers.lib;clog.lib;cpuinfo.lib;libprotobuf-lite.lib;libprotobuf.lib;libprotoc.lib;onnx.lib;onnxifi_dummy.lib;onnxifi_loader.lib;onnx_proto.lib;shm.lib;torch.lib;torch_python.lib;_C.lib</TorchLib>
redp

2019/01/29 08:16

色々やっていただいて本当にありがとうございます。大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問