Skip to content

[Bug]: Convert operation f16 -> f64 produces incorrect/corrupted values on GPU devices #33451

@zhihaoxu1325

Description

@zhihaoxu1325

OpenVINO Version

2025.4.0

Operating System

Ubuntu 20.04 (LTS)

Device used for inference

GPU

Framework

None

Model used

No response

Issue description

When using the GPU plugin, the Convert operation from float16 to float64 produces incorrect values. The CPU plugin produces correct results.

Step-by-step reproduction

Minimal reproducer:

import numpy as np
import openvino as ov
import openvino.runtime.opset13 as ops
from openvino.runtime import Model
from openvino import Type

core = ov.Core()

f16_data = np.array([[4.2421875, 5.85546875]], dtype=np.float16)
const_f16 = ops.constant(f16_data)
convert_to_f64 = ops.convert(const_f16, Type.f64)
model = Model([convert_to_f64], [])

cpu_result = np.array(core.compile_model(model, "CPU")({})[0])
gpu_result = np.array(core.compile_model(model, "GPU")({})[0])

print(f"Input (f16):  {f16_data}")
print(f"CPU (f64):    {cpu_result}")  # Correct: [[4.2421875, 5.85546875]]
print(f"GPU (f64):    {gpu_result}")  # Wrong:   [[0.0, 2.26513672]]

Relevant log output

Input (f16):  [[4.242 5.855]]
CPU (f64):    [[4.2421875  5.85546875]]
GPU (f64):    [[0.         2.26513672]]

Issue submission checklist

  • I'm reporting an issue. It's not a question.
  • I checked the problem with the documentation, FAQ, open issues, Stack Overflow, etc., and have not found a solution.
  • There is reproducer code and related data files such as images, videos, models, etc.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions