Skip to content

[ROCm] Use native HIP BF16 rounding in phi bfloat16#52

Open
austin1997 wants to merge 1 commit into
ROCm:paddle_hackthonfrom
austin1997:rocm-bf16-hip-native-rounding
Open

[ROCm] Use native HIP BF16 rounding in phi bfloat16#52
austin1997 wants to merge 1 commit into
ROCm:paddle_hackthonfrom
austin1997:rocm-bf16-hip-native-rounding

Conversation

@austin1997

Copy link
Copy Markdown

PR Category

Environment Adaptation

PR Types

Bug fixes

Description

当前 HIP 构建下 phi::dtype::bfloat16 从 float 构造时直接截断高 16 bit,和 CUDA/CPU 路径的 round-to-nearest-even 行为不一致,导致 bfloat16_test 中的 bit 级转换检查失败。

本 PR 为 HIP 编译器环境启用 hip_bfloat16 头文件和 PADDLE_HIP_BF16 宏,并在 phi::dtype::bfloat16 中补齐 hip_bfloat16 构造、赋值和 to_hip_bfloat16 转换桥接。HIP 编译器路径使用 hip_bfloat16 的 native rounding;普通 host C++ 编译路径继续复用已有 CPU round-to-nearest-even fallback,避免 host-only 编译单元强依赖 HIP native 类型。

是否引起精度变化

否。该修复统一 BF16 bit 级转换舍入行为,不改变既有 FP32 计算语义。

Test

  • prek run --files paddle/common/backend_header.h paddle/phi/common/bfloat16.h
  • env TARGET=SKYLAKEX ninja -j 160 bfloat16_test
  • ./test/cpp/bfloat16_test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant