Skip to content

Reason: cannot convert from 'const paddle::bfloat16' to 'const phi::dtype::complex<double>' #72576

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
durongze opened this issue May 5, 2025 · 0 comments
Assignees
Labels

Comments

@durongze
Copy link

durongze commented May 5, 2025

请提出你的问题 Please ask your question

  1. ScalarBase
    DataType dtype_;
    union data {
    bool b;
    int8_t i8;
    int16_t i16;
    int32_t i32;
    int64_t i64;
    uint8_t ui8;
    uint16_t ui16;
    uint32_t ui32;
    uint64_t ui64;
    bfloat16 bf16;
    float16 f16;
    float f32;
    double f64;
    complex64 c64;
    complex128 c128;
    } data_;
    };

template
inline RT to() const {
// TODO(chenfeiyu): warn on non-lossless cast.
switch (dtype_) {
case DataType::FLOAT32:
return static_cast (data_.f32);
case DataType::FLOAT64:
return static_cast (data_.f64);
case DataType::FLOAT16:
return static_cast (data_.f16);
case DataType::BFLOAT16:
return static_cast (data_.bf16);
case DataType::INT32:
return static_cast (data_.i32);
case DataType::INT64:
return static_cast (data_.i64);
case DataType::INT16:
return static_cast (data_.i16);
case DataType::INT8:
return static_cast (data_.i8);
case DataType::UINT64:
return static_cast (data_.ui64);
case DataType::UINT32:
return static_cast (data_.ui32);
case DataType::UINT16:
return static_cast (data_.ui16);
case DataType::UINT8:
return static_cast (data_.ui8);
case DataType::BOOL:
return static_cast (data_.b);
case DataType::COMPLEX64:
return static_cast (data_.c64);
case DataType::COMPLEX128:
return static_cast (data_.c128);
default:
PD_THROW("Invalid enum scalar data type ", dtype_, ".");
}

2.Scalar -----using Scalar = paddle::experimental::ScalarBase;

switch (p.dtype()) {
  case DataType::FLOAT32:
      attrs["p"] = static_cast<float>(p.to<float>());
      break;
  case DataType::FLOAT64:
      attrs["p"] = static_cast<double>(p.to<double>());
      break;
  case DataType::FLOAT16:
      attrs["p"] = static_cast<float>(p.to<float16>());
      break;
  case DataType::BFLOAT16:
      attrs["p"] = static_cast<float>(p.to<bfloat16>());
      break;
  case DataType::INT32:
      attrs["p"] = static_cast<int32_t>(p.to<int32_t>());
      break;
  case DataType::INT64:
      attrs["p"] = static_cast<int64_t>(p.to<int64_t>());
      break;
  case DataType::INT16:
      attrs["p"] = static_cast<int16_t>(p.to<int16_t>());
      break;
  case DataType::INT8:
      attrs["p"] = static_cast<int8_t>(p.to<int8_t>());
      break;
  case DataType::UINT16:
      attrs["p"] = static_cast<uint16_t>(p.to<uint16_t>());
      break;
  case DataType::UINT8:
      attrs["p"] = static_cast<uint8_t>(p.to<uint8_t>());
      break;
  case DataType::BOOL:
      attrs["p"] = static_cast<bool>(p.to<bool>());
      break;
  case DataType::COMPLEX64:
      attrs["p"] = static_cast<float>(p.to<complex64>());
      break;
  case DataType::COMPLEX128:
      attrs["p"] = static_cast<double>(p.to<complex128>());
      break;
  default:
      attrs["p"] = "";
      break;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants