公開日:2022年9月6日
最終更新日:2022年9月12日
If you want to use MKL BLAS instead of OpenBLAS, please see this page.
https://touch-sp.hatenablog.com/entry/2022/09/02/222812
If you have no GPU, please see this page.
https://touch-sp.hatenablog.com/entry/2022/09/12/123855
- Introduction
- Environment
- Preparation
- Download MXNet sources
- Build
- Create whl file
- Install MXNet
- Check installation
- Check operation
Introduction
くわしく手順を公開してくれている人がいたので参考にさせて頂きました。medium.com
備忘録として自分が行った手順を記録として残しておきます。
Environment
Visual Studioを除き、その他はなるべく最新のソフトウェアを使うようにしています。ちなみにVisual Studio 2022でも問題なくBuild可能です。
Windows 11 (build: 22000.918) NVIDIA Driver 516.94 Visual Studio Community 2019 v16.11.18 (or Visual Studio Community 2022 v17.3.3) CMake 3.24.1 Git for Windows 2.37.3
cmake-guiを使用しますのでCMakeのPATHは通ってなくて問題ありません。
Git for Windowsは必ずしも必要ありません。
Preparation
Install CUDA
NVIDIA公式から「cuda_11.7.1_516.94_windows.exe」をdownloadして実行します。Install cuDNN
NVIDIA公式から「cudnn-windows-x86_64-8.5.0.96_cuda11-archive.zip」をdownloadして解凍します。(downloadにはアカウントが必要です)解凍したファルダ内に存在する「bin」「include」「lib」フォルダを「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7」フォルダ内にコピーします。
CUDAのPATHがすでに通っているので、cuDNNのPATH設定は不要です。
コマンドプロンプトでインストールの確認が可能です。
D:\>where nvcc C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin\nvcc.exe D:\>where cudnn64_8.dll C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin\cudnn64_8.dll
D:\>nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Wed_Jun__8_16:59:34_Pacific_Daylight_Time_2022 Cuda compilation tools, release 11.7, V11.7.99 Build cuda_11.7.r11.7/compiler.31442593_0
Install OpenCV
こちらから「opencv-4.6.0-vc14_vc15.exe」をdownloadして実行します。解凍先はCドライブ直下とし、
システム環境変数 OpenCV_DIRを作成し「C:\opencv\build」を追加しました。
システム環境変数 Pathに「C:\opencv\build\x64\vc15\bin」を追加しました。
Download OpenBLAS binary package
こちらから「OpenBLAS-0.3.21-x64.zip」をdownloadしてDドライブ直下に解凍します。PATHの設定は不要です。
Download MXNet sources
Dドライブ直下で以下を実行します。git clone --recursive https://github.com/apache/incubator-mxnet.git -b v1.9.1 --single-branch --depth 1 mxnet
こちらのリポジトリと「mxnet\include」ファルダを比較するとダウンロードがうまくいっているかどうかがわかります。以降の過程で失敗する時の多くはリンクファイル(ショートカット)がうまく機能していない時でした。
Build
CMake(cmake-gui)を立ち上げます。「Where is the source code」を「D:/mxnet」、「Where to build the binaries」を「D:/mxnet/build」
にして「Configure」ボタンを押します。エラーが出るので修正を加え「Configure」を押します。
OpenBLAS_INCLUDE_DIR:D:/OpenBLAS/include OpenBLAS_LIB:D:/OpenBLAS/lib/libopenblas.dll.a USE_MKLDNN:checked
上記の部分を修正すると「Configuring done」と表示されました。
「Configuring done」と表示されたら「Generate」ボタンを押します。うまくいっていれば「Generating done」と表示されます。
(警告はたくさん出ると思いますが無視して問題ないようです)
「Generating done」と表示されたら「Open Project」ボタンを押します。
自動的にVisual Studioが立ち上がるので「release」「x64」を選択します。
「ALL_BUILD Debugのプロパティ」で以下の変更を行います。
[CUDA C/C++] Target Machine Platform:32bit → 64bit [CUDA C/C++ / Device] Code Generation:compute_52,sm_52 → compute_86,sm_86
その後「ソリューションのビルド」を実行します。
Create whl file
DLLsのコピー
「D:\mxnet\python\mxnet」フォルダ内に各種DLLsをコピーします。「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin」からcudart64_110.dll cudnn64_8.dll cufft64_10.dll
「D:\mxnet\build\Release」から
libmxnet.dll mxnet_86.dll
「D:\OpenBLAS\bin」から
libopenblas.dll
「C:\opencv\build\x64\vc15\bin」から
opencv_world460.dll
こちらからdownloadした「zlib123dllx64.zip」から
zlibwapi.dll
MANIFEST.inの作成
「D:\mxnet\python」フォルダ内に「MANIFEST.in」というファイルを作成し以下を書き込みます。recursive-include mxnet *
setup.pyの書き換え
「D:\mxnet\python」フォルダ内の「setup.py」の以下の1行を書き換えます。書き換え前
data_files=[('mxnet', [LIB_PATH[0]])],
書き換え後
include_package_data=True,
whlファイルの作成
実行するPythonにwheelライブラリをインストールします。pip install wheel
その後以下を実行しました。
python setup.py bdist_wheel --plat-name win_amd64
「D:\mxnet\python\dist」フォルダ内に「mxnet-1.9.1-py3-none-win_amd64.whl」が作成されているはずです。
Install MXNet
「mxnet-1.9.1-py3-none-win_amd64.whl」は好きな場所に移動して問題ありません。pip install mxnet-1.9.1-py3-none-win_amd64.whl
これでインストールは完了です。
Check installation
>>> from mxnet.runtime import feature_list >>> feature_list() [✔ CUDA, ✔ CUDNN, ✖ NCCL, ✔ CUDA_RTC, ✖ TENSORRT, ✖ 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, ✔ MKLDNN, ✔ OPENCV, ✖ CAFFE, ✖ PROFILER, ✖ DIST_KVSTORE, ✖ CXX14, ✖ INT64_TENSOR_SIZE, ✔ SIGNAL_HANDLER, ✖ DEBUG, ✖ TVM_OP]
Check operation
以下のスクリプトで動作確認できています。touch-sp.hatenablog.com
touch-sp.hatenablog.com
touch-sp.hatenablog.com