Skip to content

[Performance] Performance regression in Sin operator (float32) between v1.20.0 and v1.21.0 #27119

@junghyunpark2001

Description

@junghyunpark2001

Describe the issue

Description

We observed a performance regression in the Sin operator for float32 between ONNXRuntime v1.20.0 and v1.21.0. The regression is modest on typical values and worse on edge/large-magnitude inputs. The issue persists through v1.23.0.

Affected Operator

  • Operator: Sin
  • Opset Version: 13, 21
  • Data Type: float32
  • Regression: ~+9% kernel slowdown (typical), ~+13% kernel slowdown (edge values)
  • Status: Confirmed, persists to v1.23.0

Test Case Details

  • Input shape tested: [2, 3, 32, 32] (float32)
  • Typical values: regression ~+9%
  • Edge/large-magnitude values: regression ~+13% and less stable (higher CV)

Regression Characteristics

  • Type-specific: affects float32 Sin
  • Input-sensitive: regression is worse for edge/large-magnitude values
  • Stability: edge cases show higher variance

Suspected Cause

  • Changes in transcendental math implementation (possible Eigen-related), impacting range reduction / approximation for Sin
  • Potential vectorization regression or fallback on edge values

To reproduce

python script_profiling.py sin_sin_13_v1_sin_float32 1.20.0 1.21.0
python script_profiling.py sin_sin_13_v1_sin_float32_edge_case 1.20.0 1.21.0

Archive.zip

Urgency

No response

Platform

Linux

OS Version

Ubuntu 24.04.3 LTS

ONNX Runtime Installation

Released Package

ONNX Runtime Version or Commit ID

1.21

ONNX Runtime API

Python

Architecture

X64

Execution Provider

Default CPU

Execution Provider Library Version

No response

Model File

No response

Is this a quantized model?

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceissues related to performance regressions

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions