Windowsで機械学習で有名なpytorchのc++ apiであるlibtorchを使い始めたが、たびたび???となることにぶつかる。
直近で当たったのが、ライブラリのバージョンやドライバーなどちゃんと整えたうえで、CUDAの利用が可否か問う関数、
torch::cuda::is_available()
で、0,falseが返ってきて、なぜか使えないと判定されたことである。
念のために、pythonで、
import torch
torch.cuda.is_avaiable()
を投げると、Trueで返ってくる。
つまり、torch的にも計算機の環境としてはCUDAが整っているのに、Libtorchを通した時におかしいという状態である。
考えてみると、これはDLLが別のものを指している可能性があって、Libtorchのフォルダ内のdllを先に参照できていないことが示唆される。
ということで、システム環境変数のPathを見てみると、libtorch/libが通っていないので、先頭に追加した。
結果、ちゃんと1, Trueが返ってきて、かつ、
device_type = torch::kCUDA;
torch::Device device(device_type);
model->to(device);
cout << "Is module CUDA? " << model->parameters()[0].is_cuda() << endl;
によって、GPUへの転送もうまくいっていることを確認できた。
No comments:
Post a Comment