目的
Tensorflowの2.2-rc1をFedora 30でソースビルドする。
2.2の正式版リリースに向けての準備と備忘録。
環境
- Fedora 31 x86_64
- python 3.7.6(virtualenv)
- CUDA 10.2 + cuDNN 7.6.5
- CPU AMD Ryzen 7 1700
- GPU GeForce GTX 1070
事前の準備
GCC8のビルド
前回の記事と同様、CUDA 10.2がサポートするGCCは8で、Fedora 31のGCC9ではビルドができない。このため、まずはGCC8のビルドを行う。
GCCのビルドについては、以前の記事を参照。
GCCのビルドについては、以前の記事を参照。
GCC8.4のソースダウンロード&ビルド
以下でビルドを行う。
specsファイルの作成
コンパイルしたGCC7でビルドした際に、適切な動的リンクライブラリ(libstdc++.so)がリンクされるようにSPECEファイルを修正する。
Environment Modulesの設定
GCC8をEnvironment Modulesで切り替えられるようにする。/etc/modulefiles 配下に、gcc8xのファイルを作成する。
※筆者の環境にはソースビルドしたGCC5、GCC7がある。
Bazelのビルド
Bazelをソースビルドする(リポジトリのバージョンだとTensorflowが期待するバージョンと一致しないことがあるため)。2.2-rc1はBazel2.0.0が必要なため、ソースビルドした。
公式のソースビルド方法はここを参照。手順どおりであり詳細の説明は割愛。
CUDA、cuDNNのインストール
CUDA: 10.2、cuDNN: 7.6.5をインストール。CUDAはRPM Fusion Howto/ CUDA を参考にインストールを行う。cuDNNはNVIDIAのダウンロードサイトからダウンロード、インストールを行う。
Tensorflowのビルド
さて、本題。TensorFlow 2.2-rc1をビルドする。
virtualenvの設定
まずはvirtualenv(virtualenvwapper)でTensorflow用の仮想Python環境を作成し、必要なモジュールをインストールする。
ビルド
Githubからソースを取得し、configureスクリプト実行し、ビルドを行う。
- CUDAのサポートを有効とする。
- Host compilerにGCC8のgccのパスを指定してあげる。
- ビルドオプションには"--config=v2"と"--config=nonccl "(NCCLのライブラリをインストールしたがビルドエラーとなったので外す)を指定。
- 日本語環境では依存関係のダウンロードで失敗したので、ビルド前に"LANG=C"で回避。
インストール確認
- tf.__version__が2.2-rc1であること。
- GPUデバイスを認識していること。
OK!
0 件のコメント:
コメントを投稿