Changes to Half::operator== breaks CUDA build for TensorFlow
@rmlarsen1
Submitted by Rasmus Munk LarsenAssigned to Nobody
Link to original bugzilla bug (#1580)
Version: 3.4 (development)
Platform: GPU (CUDA)
Description
I am trying to upgrade the version of Eigen used by TensorFlow (to 7ccb6237) and am getting the following error when compiling for CUDA using clang:
external/eigen_archive/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/GPU/Half.h(193): error: identifier "std::equal_to<float> ::operator () const" is undefined in device code
external/eigen_archive/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/GPU/Half.h(193): error: calling a host function("std::equal_to<float> ::operator () const") from a device function("Eigen::internal::EigenMetaKernelEval< ::Eigen::TensorEvaluator<const ::Eigen::TensorAssignOp< ::Eigen::TensorMap< ::Eigen::Tensor<bool, (int)2, (int)1, int> , (int)16, ::Eigen::MakePointer> , const ::Eigen::TensorCwiseBinaryOp< ::Eigen::internal::equal_to< ::Eigen::half> , const ::Eigen::TensorBroadcastingOp<const ::Eigen::array<long, (unsigned long)2ul> , const ::Eigen::TensorMap< ::Eigen::Tensor<const ::Eigen::half, (int)2, (int)1, int> , (int)16, ::Eigen::MakePointer> > , const ::Eigen::TensorMap< ::Eigen::Tensor<const ::Eigen::half, (int)2, (int)1, int> , (int)16, ::Eigen::MakePointer> > > , ::Eigen::GpuDevice> , int, (bool)0> ::run") is not allowed