TensorFlow 不使用调试模式构建
TensorFlow doesnt build with debug mode
我们正在尝试构建带有调试标志的 TensorFlow 测试用例:
bazel build -c dbg
//tensorflow/python/kernel_tests:sparse_matmul_op_test
但是构建失败并出现以下错误:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Werror=cpp]
warning _FORTIFY_SOURCE requires compiling with optimization (-O)
cc1: all warnings being treated as errors
Target //tensorflow/python/kernel_tests:sparse_matmul_op_test failed
to build
我们尝试了以下选项来解决此问题:
通过导出 export CFLAGS 和 CXXFLAGS 到“-Wno-error”构建
bazel build -c dbg --cxxopt="-Wno-all" --cxxopt="-Wno-error" //tensorflow/python/kernel_tests:sparse_matmul_op_test
尝试从 third_party/gpus/crosstool/CROSSTOOL.tpl
评论 compiler_flag
抑制这些警告以使构建继续进行的正确方法是什么?
我们正在使用 gcc v5.4.0。
我最近遇到了同样的问题。通过在构建命令中添加 --copt=-O
和 -c opt
解决了这个问题。
示例:
bazel build --copt=-O -c dbg -c opt //tensorflow/python/kernel_tests:sparse_matmul_op_test
@BernardoGO 的解决方案在启用 CUDA 构建时不起作用:
$ bazel build --copt=-O -c opt --config cuda -c dbg --strip=never //tensorflow/tools/pip_package:build_pip_package -s
/usr/include/c++/6/bits/stl_pair.h(327): error: calling a __host__ function("std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> ::_Rb_tree_const_iterator") from a __device__ function("std::pair< ::std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> , bool> ::pair< ::std::_Rb_tree_iterator< ::tensorflow::NcclManager::NcclStream *> &, bool &, (bool)1> ") is not allowed
/usr/include/c++/6/bits/stl_pair.h(327): error: identifier "std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> ::_Rb_tree_const_iterator" is undefined in device code
/usr/include/c++/6/bits/stl_algobase.h(1009): error: calling a __host__ function("__builtin_clzl") from a __device__ function("std::__lg") is not allowed
3 errors detected in the compilation of "/tmp/tmpxft_00007abb_00000000-6_nccl_manager.cpp1.ii".
仅当 --copt=-O
替换为 --copt=-O1
时才有效,但 -O1
对舒适的调试来说太多了。
我们正在尝试构建带有调试标志的 TensorFlow 测试用例:
bazel build -c dbg //tensorflow/python/kernel_tests:sparse_matmul_op_test
但是构建失败并出现以下错误:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
warning _FORTIFY_SOURCE requires compiling with optimization (-O)cc1: all warnings being treated as errors
Target //tensorflow/python/kernel_tests:sparse_matmul_op_test failed to build
我们尝试了以下选项来解决此问题:
通过导出 export CFLAGS 和 CXXFLAGS 到“-Wno-error”构建
bazel build -c dbg --cxxopt="-Wno-all" --cxxopt="-Wno-error" //tensorflow/python/kernel_tests:sparse_matmul_op_test
尝试从 third_party/gpus/crosstool/CROSSTOOL.tpl
评论 compiler_flag
抑制这些警告以使构建继续进行的正确方法是什么?
我们正在使用 gcc v5.4.0。
我最近遇到了同样的问题。通过在构建命令中添加 --copt=-O
和 -c opt
解决了这个问题。
示例:
bazel build --copt=-O -c dbg -c opt //tensorflow/python/kernel_tests:sparse_matmul_op_test
@BernardoGO 的解决方案在启用 CUDA 构建时不起作用:
$ bazel build --copt=-O -c opt --config cuda -c dbg --strip=never //tensorflow/tools/pip_package:build_pip_package -s
/usr/include/c++/6/bits/stl_pair.h(327): error: calling a __host__ function("std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> ::_Rb_tree_const_iterator") from a __device__ function("std::pair< ::std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> , bool> ::pair< ::std::_Rb_tree_iterator< ::tensorflow::NcclManager::NcclStream *> &, bool &, (bool)1> ") is not allowed
/usr/include/c++/6/bits/stl_pair.h(327): error: identifier "std::_Rb_tree_const_iterator< ::tensorflow::NcclManager::NcclStream *> ::_Rb_tree_const_iterator" is undefined in device code
/usr/include/c++/6/bits/stl_algobase.h(1009): error: calling a __host__ function("__builtin_clzl") from a __device__ function("std::__lg") is not allowed
3 errors detected in the compilation of "/tmp/tmpxft_00007abb_00000000-6_nccl_manager.cpp1.ii".
仅当 --copt=-O
替换为 --copt=-O1
时才有效,但 -O1
对舒适的调试来说太多了。