[解決済み】PytorchがCUDAは利用できないと言う件
質問
持っているノートパソコンでPytorchを動かそうとしています。古いモデルですが、Nvidiaのグラフィックカードが搭載されています。おそらく本当の機械学習には十分ではないと思いますが、CUDAをインストールするプロセスを学ぶために、それを実行しようとしているのです。
の手順に従いました。 インストールガイド Ubuntu 18.04 (私のディストリビューションは Xubuntu)用です。
私のグラフィックカードはGeForce 845Mです。
lspci | grep nvidia
:
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce 845M] (rev a2)
01:00.1 Audio device: NVIDIA Corporation Device 0fbc (rev a1)
また、gcc 7.5がインストールされていることも、次のように確認されています。
gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
そして、正しいヘッダーをインストールしています。
sudo apt-get install linux-headers-$(uname -r)
:
Reading package lists... Done
Building dependency tree
Reading state information... Done
linux-headers-4.15.0-106-generic is already the newest version (4.15.0-106.107).
その後、バージョン10.1のローカル.debを使用してインストール手順に従いました。
Npw、実行すると
nvidia-smi
, 得られます。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.00 Driver Version: 418.87.00 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce 845M On | 00000000:01:00.0 Off | N/A |
| N/A 40C P0 N/A / N/A | 88MiB / 2004MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 982 G /usr/lib/xorg/Xorg 87MiB |
+-----------------------------------------------------------------------------+
を実行すると
nvcc -V
と出る。
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
その後、インストール後の手順を、以下のように実行しました。
セクション 6.1
ということで、結果的に
echo $PATH
はこのようになります。
/home/isaek/anaconda3/envs/stylegan2_pytorch/bin:/home/isaek/anaconda3/bin:/home/isaek/anaconda3/condabin:/usr/local/cuda-10.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
echo $LD_LIBRARY_PATH
はこのように見えます。
/usr/local/cuda-10.1/lib64
と私の
/etc/udev/rules.d/40-vm-hotadd.rules
ファイルは次のようになります。
# On Hyper-V and Xen Virtual Machines we want to add memory and cpus as soon as they appear
ATTR{[dmi/id]sys_vendor}=="Microsoft Corporation", ATTR{[dmi/id]product_name}=="Virtual Machine", GOTO="vm_hotadd_apply"
ATTR{[dmi/id]sys_vendor}=="Xen", GOTO="vm_hotadd_apply"
GOTO="vm_hotadd_end"
LABEL="vm_hotadd_apply"
# Memory hotadd request
# CPU hotadd request
SUBSYSTEM=="cpu", ACTION=="add", DEVPATH=="/devices/system/cpu/cpu[0-9]*", TEST=="online", ATTR{online}="1"
LABEL="vm_hotadd_end"
ここまでやって、サンプルのコンパイルと実行までしました。
./deviceQuery
を返します。
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce 845M"
CUDA Driver Version / Runtime Version 10.1 / 10.1
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 2004 MBytes (2101870592 bytes)
( 4) Multiprocessors, (128) CUDA Cores/MP: 512 CUDA Cores
GPU Max Clock rate: 863 MHz (0.86 GHz)
Memory Clock rate: 1001 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 1048576 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device supports Compute Preemption: No
Supports Cooperative Kernel Launch: No
Supports MultiDevice Co-op Kernel Launch: No
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.1, CUDA Runtime Version = 10.1, NumDevs = 1
Result = PASS
そして
./bandwidthTest
を返します。
[CUDA Bandwidth Test] - Starting...
Running on...
Device 0: GeForce 845M
Quick Mode
Host to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(GB/s)
32000000 11.7
Device to Host Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(GB/s)
32000000 11.8
Device to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(GB/s)
32000000 14.5
Result = PASS
NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.
しかし、この後、このPythonのスニペット(依存関係がすべてインストールされたconda環境において)。
import torch
torch.cuda.is_available()
リターン
False
どなたか、これを解決する方法をご存じないでしょうか?私は、この問題を解決するために
/usr/local/cuda-10.1/bin
に
etc/environment
このように
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH=$PATH:/usr/local/cuda-10.1/bin
と端末を再起動しても直りませんでした。他に何を試せばいいのか本当にわかりません。
EDIT - collect_env の結果 for @kHarshit
Collecting environment information...
PyTorch version: 1.5.0
Is debug build: No
CUDA used to build PyTorch: 10.2
OS: Ubuntu 18.04.4 LTS
GCC version: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
CMake version: Could not collect
Python version: 3.6
Is CUDA available: No
CUDA runtime version: 10.1.243
GPU models and configuration: GPU 0: GeForce 845M
Nvidia driver version: 418.87.00
cuDNN version: Could not collect
Versions of relevant libraries:
[pip] numpy==1.18.5
[pip] pytorch-ranger==0.1.1
[pip] stylegan2-pytorch==0.12.0
[pip] torch==1.5.0
[pip] torch-optimizer==0.0.1a12
[pip] torchvision==0.6.0
[pip] vector-quantize-pytorch==0.0.2
[conda] numpy 1.18.5 pypi_0 pypi
[conda] pytorch-ranger 0.1.1 pypi_0 pypi
[conda] stylegan2-pytorch 0.12.0 pypi_0 pypi
[conda] torch 1.5.0 pypi_0 pypi
[conda] torch-optimizer 0.0.1a12 pypi_0 pypi
[conda] torchvision 0.6.0 pypi_0 pypi
[conda] vector-quantize-pytorch 0.0.2 pypi_0 pypi
解決方法は?
PyTorch はシステムの CUDA ライブラリを使用しません。プリコンパイルされたバイナリを使用してPyTorchをインストールする場合、以下のどちらかを使用します。
pip
または
conda
は、ローカルにインストールされている指定バージョンのCUDAライブラリのコピーと一緒に出荷されます。実際、CUDAをサポートするPyTorchを使用するために、システムにCUDAをインストールする必要すらありません。
この問題の原因として、2つのシナリオが考えられます。
-
CPUのみのバージョンのPyTorchをインストールした。この場合、PyTorchはCUDAをサポートしてコンパイルされていないため、CUDAをサポートしませんでした。
-
CUDA 10.2 バージョンの PyTorch をインストールしました。この場合、あなたのグラフィックカードは現在418.87ドライバを使用しており、CUDA 10.1までしかサポートしていないことが問題です。この場合、2つの可能性のある解決策は、更新されたドライバ(バージョン >= 440.33 によれば 表2 または、CUDA 10.1用にコンパイルされたPyTorchのバージョンをインストールします。
PyTorchのインストール時に使用する適切なコマンドを決定するには、以下の"Install PyTorch"セクションにある便利なウィジェットを使用できます。 pytorch.org . 適切なオペレーティングシステム、パッケージマネージャ、およびCUDAのバージョンを選択し、推奨されるコマンドを実行するだけです。
あなたの場合、1つの解決策として
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
で、CUDA 10.1 に対してコンパイルされたバージョンの PyTorch をインストールしたいことを conda に明示的に指定します。
ドライバやハードウェアに関するPyTorch CUDAの互換性の詳細については、以下を参照してください。 この回答 .
編集
の出力を追加した後
collect_env
CUDA 10.2 バージョンの PyTorch がインストールされていることが問題であることがわかります。それに基づいて、別の解決策は、項目2およびリンク先の回答で詳しく説明されているように、グラフィックスドライバを更新することだったでしょう。
関連
-
[解決済み】sed を使用して部分文字列を抽出する方法
-
[解決済み】Postgresql -bash: psql: コマンドが見つかりませんでした。
-
[解決済み] "grep -q" のポイントは?
-
[解決済み] CHECK_NRPE: Error - SSLハンドシェイクを完了できませんでした。
-
[解決済み] glibc: elfファイルのOS ABIが無効です。
-
[解決済み] エラー: gdal がインストールされているのに、R 依存パッケージのインストール中に gdal-config が見つからない
-
[解決済み] svn diffコマンドの使用
-
[解決済み] FIN_WAIT1とはどのような意味ですか?
-
[解決済み] rm -rfを元に戻すには?[クローズド]
-
[解決済み] 次のコマンドの -print0 の意味を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bashのexportコマンド
-
[解決済み】CentOSのエラー - sudo: effective uid is not 0, is sudo installed setuid root?
-
[解決済み] 予期しないトークン 'then' 付近の構文エラー
-
[解決済み】Apacheサーバーがクラッシュし続ける。"caught SIGTERM, shutting down"
-
[解決済み] usr/bin/env bash」と「#!/usr/bin/bash」の違いは何ですか?
-
[解決済み] GNUアセンブラを使ってx86_64でprintfを呼び出す
-
[解決済み] Bashスクリプトでスクリプトファイル名を知るには?
-
[解決済み] rm -rfを元に戻すには?[クローズド]
-
[解決済み] mvで移動先のディレクトリが存在しない場合、作成させる方法はありますか?
-
[解決済み] 単一のコマンドでssh経由でコマンドが見つからない、ターミナルに接続したら見つかった[重複]。