Note to Self by notekunst

ただの備忘録です

古いGPUのためのTorchVisionのビルド(Ubuntu 20.04 on MacBookPro 15" Late2013)

PyTorchのビルドに続いて、TorchVisionもビルドします。
まずは、リポジトリを取得します。

$ git clone --recursive https://github.com/pytorch/vision
$ cd vision

以前に書いた記事「古いGPUのためのPyTorchのビルド」と同様に、環境変数を設定します。TORCH_CUDA_ARCH_LISTを"3.0"に設定します。さらに私の場合は、condaでpytorch用の環境も有効にしています。

$ conda activate XXXXX     (XXXXXは環境名です)
$ export USE_CUDA=1 USE_CUDNN=1 TORCH_CUDA_ARCH_LIST="3.0"

通常は、この後に "python setup.py install" を実行すれば TorchVision をインストールできます。しかし、古いGPU用の環境変数を設定しているからか、以下の様に 3.0 の GPU はサポートされていないというエラーが発生します。

$ python setup.py install
...
  File "/home/...(一部省略).../lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1409, in _get_cuda_arch_flags
    raise ValueError("Unknown CUDA arch ({}) or GPU not supported".format(arch))
ValueError: Unknown CUDA arch (3.0) or GPU not supported

以前に書いた記事「...CUDA...のインストール」の通り、私のマシンの CUDA は 3.0 の GPU をサポートしています。そこで、エラーを出力したファイル "cpp_extension.py" を、以下のように編集します(変数 "supported_arches" に "3.0" を追加します)。

    supported_arches = ['3.0', '3.5', '3.7', '5.0', '5.2', ...
(下線部を追加)

これで、下記コマンドでTorchVisionをインストールできます。

$ python setup.py install

ディレクトリ "test" の下には、テスト用のスクリプトがあります。いろいろ試したところ、うまく実行できました。
"test_models.py"というテストスクリプトは、GPUを用いているようです。これを実行したら、"GPUが古い" というCUDAの警告が表示されましたが、処理は無事に終了しました。GPUもうまく利用できているようです。