【发布时间】:2019-03-29 09:28:03
【问题描述】:
我正在寻找有关在 Ubuntu 18.04 上使用 TensorFlow 和 NVIDIA GPU 时编译标志选项的一些说明。我将 TensorFlow 用于 Python(用于训练)和从 C++ 调用(用于在生产中执行)。
由于 Ubuntu 18.04 附带 GCC 7.x,我必须使用 CUDA 9.2,所以我不能使用 Google 提供的 TensorFlow 预编译二进制文件(目前仅适用于不兼容 GCC 7.x 的 CUDA 9.0 )。因此,我必须从源代码编译 TensorFlow 才能同时使用 Python 和 C++
目前我正在使用以下编译标志:
Python 编译:
bazel build --config=opt \
--config=cuda //tensorflow/tools/pip_package:build_pip_package
C++ 编译:
bazel build -c opt \
--copt=-mavx \
--copt=-mavx2 \
--copt=-mfma \
--copt=-mfpmath=both \
--copt=-msse4.2 \
--config=cuda //tensorflow:libtensorflow_cc.so
这主要基于互联网上的大众投票,这让我感到不舒服。以下是一些导致我做出这些选择的网站/帖子:
https://www.tensorflow.org/install/source 有:
bazel build --config=opt \\
--config=cuda //tensorflow/tools/pip_package:build_pip_package
http://www.bitbionic.com/2017/08/18/run-your-keras-models-in-c-tensorflow/ 有:
bazel build --jobs=6 \
--verbose_failures \
-c opt \
--copt=-mavx \
--copt=-mfpmath=both \
--copt=-msse4.2 //tensorflow:libtensorflow_cc.so
How to compile Tensorflow with SSE4.2 and AVX instructions? 有:
bazel build -c opt \
--copt=-mavx \
--copt=-mavx2 \
--copt=-mfma \
--copt=-mfpmath=both \
--config=cuda -k //tensorflow/tools/pip_package:build_pip_package
Re-build Tensorflow with desired optimization flags 有:
bazel build -c opt \
--copt=-mavx \
--copt=-mavx2 \
--copt=-mfma \
--copt=-mfpmath=both \
--copt=-msse4.2 \
--config=cuda -k //tensorflow/tools/pip_package:build_pip_package
有人能告诉我们这些标志选项吗?具体我有以下问题:
1) mavx、mavx2、mfma 和 mfpmath 标志是什么?这些应该用于 Python 和 C++ 编译还是仅用于 C++ 编译? Google 演练没有将这些用于 Python 编译的事实使我倾向于相同。
2) 显然--copt=-msse4.2 是为 Intel CPU 启用 SSE 优化,--config=cuda 是为 CUDA GPU 启用,但 CUDA 标志末尾的 -k 选项是什么?请注意,上面的一些示例使用了-k 选项,而有些则没有。
3) 是否有记录这些选项的地方?我想知道是否还有其他可能有益的标志,或者是否应该省略上述某些标志。我检查了 TensorFlow 和 Bazel GitHub,没有找到关于这个主题的任何内容。
【问题讨论】:
标签: tensorflow gpu nvidia