'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