目的
前回のブログにつづき、TensorFlow 1.15.2をソースビルドする。1.x系と2.x系は両方あった方がよい。Dockerを使えばよいのだが、簡単に使える方がよいのでビルドする。
環境
前回と同様である。
- 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
事前準備
こちらも前回のブログと同様なので割愛。
詳細は、こちらを参照。ただし、Bazelのバージョンは0.26.1を使用する。
Tensorflowのビルド
さて、本題。TensorFlow 1.15.2をビルドする。1.x系の注意事項。
- CUDA 10.2 + cuDNN 7.6.5が対応されていないため対処が必要。
- tensorflow: build fails with cuda 10.2 #76935
build failed with cuda 10.2 #34429 - sys_gettidがglibc 2.30で被るため対処が必要。
Update grpc dependency for glibc 2.30 compatibility #33758
virtualenvの設定
ビルド
ソースを展開後、third_party/nccl/build_defs.bzl.tpl の116行目を削除する。これでCUDA 10.2 + cuDNN 7.6.5でのビルドができる。
ビルドを行う。途中でsys_gettidの問題でエラーとなる。
なお、/home/xxx/.cache/bazel/_bazel_xxx/aca0f394050ca263374306622f61644f のパスは、bazelのキャッシュであり毎回変わるので注意。
ビルドエラーが発生後、該当の external/grpc/src/core/lib/gpr/log_linux.cc を修正する。"gettid"を "sys_gettid"に置き換えて競合しないようにする。
ビルド完了後、pipパッケージを作成して、インストールする。
なお、/home/xxx/.cache/bazel/_bazel_xxx/aca0f394050ca263374306622f61644f のパスは、bazelのキャッシュであり毎回変わるので注意。
ビルドエラーが発生後、該当の external/grpc/src/core/lib/gpr/log_linux.cc を修正する。"gettid"を "sys_gettid"に置き換えて競合しないようにする。
ビルド完了後、pipパッケージを作成して、インストールする。
インストール確認
OK!
0 件のコメント:
コメントを投稿