'tensorflow error This file requires compiler and library support for the ISO C++ 2011 standard
The result is below,I run the project stylegan2, but it fails. So I need help. The link is https://github.com/NVlabs/stylegan2
File "/home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/network.py", line 154, in _init_graph out_expr = self._build_func(*self.input_templates, **build_kwargs)
File "<string>", line 491, in G_synthesis_stylegan2 File "<string>", line 455, in layer
File "<string>", line 99, in modulated_conv2d_layer File "<string>", line 68, in apply_bias_act
File "/home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/ops/fused_bias_act.py", line 68, in fused_bias_act return impl_dict[impl](x=x, b=b, axis=axis, act=act, alpha=alpha, gain=gain)
File "/home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/ops/fused_bias_act.py", line 122, in _fused_bias_act_cuda cuda_kernel = _get_plugin().fused_bias_act
File "/home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/ops/fused_bias_act.py", line 16, in _get_plugin return custom_ops.get_plugin(os.path.splitext(__file__)[0] + '.cu')
File "/home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/custom_ops.py", line 111, in get_plugin _run_cmd(_prepare_nvcc_cli('"%s" --preprocess -o "%s" --keep --keep-dir "%s"' % (cuda_file, tmp_file, tmp_dir)))
File "/home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/custom_ops.py", line 61, in _run_cmd raise RuntimeError('NVCC returned an error. See below for full command line and output log:\n\n%s\n\n%s' % (cmd, output)) RuntimeError: NVCC returned an error. See below for full command line and output log:
nvcc "/home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/ops/fused_bias_act.cu" --preprocess -o "/tmp/tmph2fk0y_4/fused_bias_act_tmp.cu" --keep --keep-dir "/tmp/tmph2fk0y_4" --disable-warnings --include-path "/home/ubuntu/anaconda3/lib/python3.7/site-packages/tensorflow_core/include"
--include-path "/home/ubuntu/anaconda3/lib/python3.7/site-packages/tensorflow_core/include/external/protobuf_archive/src"
--include-path "/home/ubuntu/anaconda3/lib/python3.7/site-packages/tensorflow_core/include/external/com_google_absl"
--include-path "/home/ubuntu/anaconda3/lib/python3.7/site-packages/tensorflow_core/include/external/eigen_archive" 2>&1
In file
included from /usr/include/c++/5/unordered_map:35:0,
from /home/ubuntu/anaconda3/lib/python3.7/site-packages/tensorflow_core/include/tensorflow/core/framework/op.h:20,
from /home/ubuntu/workspaces/workspace_lsh/stylegan2/dnnlib/tflib/ops/fused_bias_act.cu:9:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support \ ^ In file included from /home/ubuntu/anaconda3/lib/python3.7/site-packages/tensorflow_core/include/absl/base/config.h:66:0,
/home/ubuntu/anaconda3/lib/python3.7/site-packages/tensorflow_core/include/absl/base/policy_checks.h:77:2: error: #error "C++ versions less than C++11 are not supported." #error "C++ versions less than C++11 are not supported."
I need help.
Solution 1:[1]
I encountered the same error. A nasty workaround was to add flags --std=c++11
and -DNDEBUG
to the nvcc
call in dnnlib/tflib/custom_ops.py ln 64:
cmd = 'nvcc --std=c++11 -DNDEBUG ' + opts.strip()
Why both --std and -DNDEBUG?
Just --std=c++11
gave me the following error:
RuntimeError: NVCC returned an error. See below for full command line and output log:
nvcc --std=c++11 "/usr/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so" --compiler-options '-fPIC -D_GLIBCXX_USE_CXX11_ABI=0' --gpu-architecture=sm_75 --use_fast_math --disable-warnings --include-path "/usr/lib/python3.6/site-packages/tensorflow/include" --include-path "/usr/lib/python3.6/site-packages/tensorflow/include/external/protobuf_archive/src" --include-path "/usr/lib/python3.6/site-packages/tensorflow/include/external/com_google_absl" --include-path "/usr/lib/python3.6/site-packages/tensorflow/include/external/eigen_archive" 2>&1 "/home/username/stylegan2/dnnlib/tflib/ops/fused_bias_act.cu" --shared -o "/tmp/tmp8nryqyhs/fused_bias_act_tmp.so" --keep --keep-dir "/tmp/tmp8nryqyhs"
/usr/lib/python3.6/site-packages/tensorflow/include/absl/strings/string_view.h(495): error: constexpr function return is non-constant
1 error detected in the compilation of "/tmp/tmp8nryqyhs/fused_bias_act.cpp1.ii".
Which is prevented by using flag -DNDEBUG
, as explained in this git thread.
The solution is ugly, and would be cool for the authors to fix that by giving more input options or something (or explaining how to do it). But for now, it will do.
My environment:
Python 3.6.9
tensorflow.__version__
'1.14.0'
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Solution 2:[2]
If the above mentioned solution does not work, the problem could be caused by the GCC compilation option while generating the so library. The GCC version of greater than 4 supports the c++11 standard itself, so the option -D_GLIBCXX_USE_CXX11_ABI = 0 is not required.
Change the line 127 code in (..)/dnnlib/tflib/custom_op.py.
from: --compiler-options '-fPIC -D_GLIBCXX_USE_CXX11_ABI=0
to: --compiler-options '-fPIC -D_GLIBCXX_USE_CXX11_ABI=1
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | abysslover |