bert_encoder_functor在V100上编译错误
Created by: luotao1
develop分支,V100机器,开发镜像docker.io/paddlepaddle/paddle_manylinux_devel:cuda9.0_cudnn7
,出现编译错误
/Paddle/paddle/fluid/operators/math/bert_encoder_functor.cu(258): error: calling a __device__ function("__half") from a __host__ function("operator()") is not allowed
detected during instantiation of "void paddle::operators::math::MultiHeadGPUComputeFunctor<T>::operator()(const paddle::platform::CUDADeviceContext &, int, int, int, int, T *, const T *, T *, T, T) [with T=half]"
(264): here
/Paddle/paddle/fluid/operators/math/bert_encoder_functor.cu(317): error: calling a __device__ function("operator float") from a __host__ function("operator()") is not allowed
detected during instantiation of "void paddle::operators::math::SkipLayerNormFunctor<T>::operator()(int, int, const T *, const T *, const float *, const float *, T *, T, cudaStream_t) [with T=half]"
(336): here
/Paddle/paddle/fluid/operators/math/bert_encoder_functor.cu(321): error: calling a __device__ function("operator float") from a __host__ function("operator()") is not allowed
detected during instantiation of "void paddle::operators::math::SkipLayerNormFunctor<T>::operator()(int, int, const T *, const T *, const float *, const float *, T *, T, cudaStream_t) [with T=half]"
(336): here
/Paddle/paddle/fluid/operators/math/bert_encoder_functor.cu(325): error: calling a __device__ function("operator float") from a __host__ function("operator()") is not allowed
detected during instantiation of "void paddle::operators::math::SkipLayerNormFunctor<T>::operator()(int, int, const T *, const T *, const float *, const float *, T *, T, cudaStream_t) [with T=half]"
(336): here
/Paddle/paddle/fluid/operators/math/bert_encoder_functor.cu(329): error: calling a __device__ function("operator float") from a __host__ function("operator()") is not allowed
detected during instantiation of "void paddle::operators::math::SkipLayerNormFunctor<T>::operator()(int, int, const T *, const T *, const float *, const float *, T *, T, cudaStream_t) [with T=half]"
(336): here
5 errors detected in the compilation of "/tmp/tmpxft_0000be09_00000000-4_bert_encoder_functor.cpp4.ii".
CMake Error at bert_encoder_functor_generated_bert_encoder_functor.cu.o.cmake:262 (message):
Error generating file
/Paddle/build/paddle/fluid/operators/math/CMakeFiles/bert_encoder_functor.dir//./bert_encoder_functor_generated_bert_encoder_functor.cu.o
make[2]: *** [paddle/fluid/operators/math/CMakeFiles/bert_encoder_functor.dir/bert_encoder_functor_generated_bert_encoder_functor.cu.o] Error 1
make[1]: *** [paddle/fluid/operators/math/CMakeFiles/bert_encoder_functor.dir/all] Error 2