【WSL2】【OpenBLAS】MXNet 2.0(dev) + CUDA 11.7(Building From Source)

公開日:2022年9月13日

Introduction

開発中のMXNet2.0をsourceからbuildしました。
手順を記録として残しておきます。

Environment

Ubuntu 20.04 on WSL2 (Windows 11)
VERSION="20.04.4 LTS (Focal Fossa)"

Preparation

Install CUDA

公式通りに行いました。

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-96193861-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt install cuda



最後にこの1行を実行

sudo ln -s /usr/lib/wsl/lib/libcuda.so.1 /usr/local/cuda/lib64/libcuda.so

Install cuDNN

NVIDIA公式から「cudnn-local-repo-ubuntu2004-8.5.0.96_1.0-1_amd64.deb」をダウンロードしてからインストールしました。(ダウンロードにはアカウントが必要です)

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.5.0.96_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2004-8.5.0.96/cudnn-local-0579404E-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt install libcudnn8 libcudnn8-dev

Install others

sudo apt install build-essential ninja-build ccache libopenblas-dev libopencv-dev cmake
build-essential==12.8
ninja-build==1.10.0
ccache==3.7.7
libopenblas-dev==0.3.8
libopencv-dev==4.2.0
cmake==3.16.3

Download MXNet sources

git clone --recursive https://github.com/apache/incubator-mxnet.git mxnet
cd mxnet

Build

Copy config.cmake

cp config/linux_gpu.cmake config.cmake

Build

mkdir build
cd build
cmake ..
cmake --build .

Install MNXet

リポジトリ内で以下を実行。

pip install -e ./python

Check installation

>>> from mxnet.runtime import feature_list
>>> feature_list()
[✔ CUDA, ✔ CUDNN, ✖ NCCL, ✖ TENSORRT, ✖ CUTENSOR, ✔ CPU_SSE, ✔ CPU_SSE2, ✔ CPU_SSE3, ✔ CPU_SSE4_1, ✔ CPU_SSE4_2, ✖ CPU_SSE4A, ✔ CPU_AVX, ✖ CPU_AVX2, ✔ OPENMP, ✖ SSE, ✔ F16C, ✖ JEMALLOC, ✔ BLAS_OPEN, ✖ BLAS_ATLAS, ✖ BLAS_MKL, ✖ BLAS_APPLE, ✔ LAPACK, ✔ ONEDNN, ✔ OPENCV, ✖ DIST_KVSTORE, ✔ INT64_TENSOR_SIZE, ✔ SIGNAL_HANDLER, ✖ DEBUG, ✖ TVM_OP]

Check operation

以下のスクリプトで動作確認できています。
touch-sp.hatenablog.com