如何解决Eigen Half.h 编译错误:“struct Eigen::half”没有名为“x”的成员
我正在尝试编译一些使用与 TensorFlow 2.2 (https://gitlab.com/libeigen/eigen/-/tree/52a2fbbb008a47c5e3fb8ac1c65c2feecb0c511c) 相同版本的 Eigen 的代码。我使用的缩写命令行是:
tools/cc/gcc74/bin/nvcc-wrapper -nostdinc -isystem external/gcc_7_4/usr/include/c++/7 ...
'-D_GLIBCXX_USE_CXX11_ABI=0' -DBOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -g1 -O2 '-std=c++14' ...
-fPIC -DEIGEN_MPL2_ONLY '-DEIGEN_MAX_ALIGN_BYTES=16' '-DEIGEN_MAX_STATIC_ALIGN_BYTES=16'
'-D__CUDACC_VER_MAJOR__=10' '-D__CUDACC_VER_MInor__=0' -DEIGEN_HAS_CUDA_FP16 -iquote ...
这会导致一些编译错误:
In file included from external/eigen/Eigen/Core:165:0,from external/eigen/Eigen/Dense:1,from ...:
external/eigen/Eigen/src/Core/arch/Default/Half.h: In member function ‘Eigen::half::operator bool() const’:
external/eigen/Eigen/src/Core/arch/Default/Half.h:139:13: error: ‘x’ was not declared in this scope
return (x & 0x7fff) != 0;
^
In file included from external/eigen/Eigen/Core:165:0,from ...:
external/eigen/Eigen/src/Core/arch/Default/Half.h: In function ‘Eigen::half Eigen::half_impl::operator-(const Eigen::half&)’:
external/eigen/Eigen/src/Core/arch/Default/Half.h:342:10: error: ‘struct Eigen::half’ has no member named ‘x’
result.x = a.x ^ 0x8000;
^
external/eigen/Eigen/src/Core/arch/Default/Half.h:342:16: error: ‘const struct Eigen::half’ has no member named ‘x’
result.x = a.x ^ 0x8000;
^
external/eigen/Eigen/src/Core/arch/Default/Half.h: In function ‘Eigen::half_impl::__half_raw Eigen::half_impl::raw_uint16_to_half(short unsigned int)’:
external/eigen/Eigen/src/Core/arch/Default/Half.h:398:5: error: ‘Eigen::half_impl::__half_raw {aka struct __half}’ has no member named ‘x’
h.x = x;
^
external/eigen/Eigen/src/Core/arch/Default/Half.h: In function ‘Eigen::half_impl::__half_raw Eigen::half_impl::float_to_half_rtne(float)’:
external/eigen/Eigen/src/Core/arch/Default/Half.h:426:5: error: ‘Eigen::half_impl::__half_raw {aka struct __half}’ has no member named ‘x’
o.x = static_cast<unsigned short>(0x0u);
^
删除 -DEIGEN_HAS_CUDA_FP16
会导致这些错误消失,但随后需要有效 __half
的其他代码停止工作。我做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。