dmlc/mshadow

half_t multiplication

vchuravy opened this issue · 1 comments

/home/wallnuss/src/mxnet/mshadow/mshadow/././half.h: In instantiation of ‘mshadow::half::half_t mshadow::half::operator*(mshadow::half::half_t, T) [with T = mshadow::expr::CroppingExp<mshadow::expr::MakeTensorExp<mshadow::expr::UnPoolingExp<mshadow::red::maximum, mshadow::expr::MakeTensorExp<mshadow::expr::PaddingExp<mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>, mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>, mshadow::expr::MakeTensorExp<mshadow::expr::PaddingExp<mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>, mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, 4, mshadow::half::half_t>, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>]’:
src/operator/./pooling-inl.h:145:7:   required from ‘void mxnet::op::PoolingOp<xpu, Reducer, DType>::Backward(const mxnet::OpContext&, const std::vector<mshadow::TBlob>&, const std::vector<mshadow::TBlob>&, const std::vector<mshadow::TBlob>&, const std::vector<mxnet::OpReqType>&, const std::vector<mshadow::TBlob>&, const std::vector<mshadow::TBlob>&) [with xpu = mshadow::cpu; Reducer = mshadow::red::maximum; DType = mshadow::half::half_t]’
src/operator/pooling.cc:47:1:   required from here
/home/wallnuss/src/mxnet/mshadow/mshadow/././half.h:248:31: error: invalid cast from type ‘mshadow::expr::CroppingExp<mshadow::expr::MakeTensorExp<mshadow::expr::UnPoolingExp<mshadow::red::maximum, mshadow::expr::MakeTensorExp<mshadow::expr::PaddingExp<mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>, mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>, mshadow::expr::MakeTensorExp<mshadow::expr::PaddingExp<mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>, mshadow::Tensor<mshadow::cpu, 4, mshadow::half::half_t>, 4, mshadow::half::half_t>, 4, mshadow::half::half_t>, mshadow::half::half_t, 4>’ to type ‘float’
 MSHADOW_HALF_OPERATOR(half_t, *)
                               ^
/home/wallnuss/src/mxnet/mshadow/mshadow/././half.h:35:27: note: in definition of macro ‘MSHADOW_HALF_OPERATOR’
     return RTYPE(float(a) OP float(b));  /* NOLINT(*) */

I am encountering this in apache/mxnet#2280 for a case where I have constant * expr.
I am not that familiar with how mshadow works so I am wondering if it might be some weird interaction between the half_t implementation of multiplication taking precedent
over the expr multiplication.

szha commented

This code base has been donated to the Apache MXNet project per #373, and repo is deprecated. Future development and issue tracking should continue in Apache MXNet.